- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想使用 TCP 协议(protocol)
将数据发送到 Logstash
。为了发送数据,我正在使用 Node-RED
。一个简单的配置如下所示:
在 Logstash
文件夹中,我创建了一个名为 nodered.conf
的文件,内容如下:
input {
tcp {
port => "3999"
}
}
output {
stdout { codec => rubydebug }
}
现在,我只想在屏幕上打印 Logstash
正在接收的信息。这就是我在输出中使用 stdout { codec => rubydebug }
的原因。
因此,在 Logstash
文件夹中,我使用以下命令启动了 Logstash
:
bin/logstash -f nodered.conf --config.reload.automatic
问题是我使用 Node-RED
发送到 Logstash
的所有消息都被聚合到一条消息中。例如,如果我将 5 strip 有 Node-RED
的消息注入(inject)我的 TCP 端口 3999
,在重新部署 Node-RED
之后,我会收到以下信息我的 Logstash
终端上的内容:
user@computer:/home/Dados/ELK/logstash-5.4.0$ bin/logstash -f nodered.conf --config.reload.automatic
Sending Logstash's logs to /home/Dados/ELK/logstash-5.4.0/logs which is now configured via log4j2.properties
[2017-05-29T15:14:52,388][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500}
[2017-05-29T15:14:52,417][INFO ][logstash.inputs.tcp ] Starting tcp input listener {:address=>"0.0.0.0:3999"}
[2017-05-29T15:14:52,430][INFO ][logstash.pipeline ] Pipeline main started
[2017-05-29T15:14:52,513][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
{
"@timestamp" => 2017-05-29T18:19:33.277Z,
"port" => 54316,
"@version" => "1",
"host" => "127.0.0.1",
"message" => "hellohellohellohellohello"
}
我实际上希望看到这样的东西而不必重新部署:
user@computer:/home/Dados/ELK/logstash-5.4.0$ bin/logstash -f nodered.conf --config.reload.automatic
Sending Logstash's logs to /home/Dados/ELK/logstash-5.4.0/logs which is now configured via log4j2.properties
[2017-05-29T15:27:24,168][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500}
[2017-05-29T15:27:24,191][INFO ][logstash.inputs.tcp ] Starting tcp input listener {:address=>"0.0.0.0:3999"}
[2017-05-29T15:27:24,200][INFO ][logstash.pipeline ] Pipeline main started
[2017-05-29T15:27:24,260][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
{
"@timestamp" => 2017-05-29T18:27:48.394Z,
"port" => 54518,
"@version" => "1",
"host" => "127.0.0.1",
"message" => "hello"
}
{
"@timestamp" => 2017-05-29T18:27:51.657Z,
"port" => 54546,
"@version" => "1",
"host" => "127.0.0.1",
"message" => "hello"
}
{
"@timestamp" => 2017-05-29T18:27:58.691Z,
"port" => 54600,
"@version" => "1",
"host" => "127.0.0.1",
"message" => "hello"
}
{
"@timestamp" => 2017-05-29T18:28:06.330Z,
"port" => 54656,
"@version" => "1",
"host" => "127.0.0.1",
"message" => "hello"
}
{
"@timestamp" => 2017-05-29T18:28:14.347Z,
"port" => 54682,
"@version" => "1",
"host" => "127.0.0.1",
"message" => "hello"
}
结论是我不知道如何让 Logstash
将每条消息解释为唯一消息,而不是将它接收到的所有内容串联起来。我尝试在我的 nodered.conf
文件中使用不同的编解码器,但没有成功。有谁知道如何让 Logstash
将它在 TCP 端口上监听的每条消息都视为一条消息?
最佳答案
由于 Node-RED 只是通过 TCP 节点发送字节流,因此 Logstash 没有任何指示记录结束的信息。
如评论中所述,您可以使用函数节点将新行字符 (/n) 添加到字符串的末尾,这应该向 Logstash 发出信号,表明这是一条完整的记录。
msg.payload += "\n";
return msg;
关于tcp - 如何使 Logstash TCP 输入来分隔它在 TCP 端口上监听的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44248735/
我在 logstash 中使用文件作为日志的输入。我的日志文件每天轮换,所以我想问一下我们如何配置 logstash 的文件插件,以便它可以处理每天轮换的文件。除此之外,文件节拍也可以进行日志轮换。
我正在我公司服务的服务器上实现监控工具。为此,我正在使用 logstash。我们的应用程序通过 log4net udp appender 将它们的日志发送到 logstash(输入 udp),然后 l
我期待对 Logstash 中收到的输入使用数学运算,但无法看到任何此类 过滤器 . 输入如下: { "user_id": "User123", "date": "2016 Jun 26 12
我对 logstash 和 Elasticsearch 很陌生。我正在尝试将日志文件存储在 elasticsearch 和平面文件中。我知道 logstash 支持两种输出。但是它们是同时处理的吗?还
寻求一些入门帮助...我已经安装了 Logstash(以及 ElasticSearch),但我正在为我的第一个过滤器而苦苦挣扎。 作为测试,我将其配置为从包含 6 行的修剪日志文件中读取,每行以时间戳
我已经按照下面提到的架构实现了 logstash(在测试中)。 成分分解 Rsyslog 客户端:默认情况下,所有 Linux destros 中都安装了 syslog,我们只需要配置 rsyslog
我无法在 LogStash 中使用负正则表达式(如 the docs 中所述) 考虑以下正则表达式,它可以正常工作以检测已分配值的字段: if [remote_ip] =~ /(.+)/ {
我在云中使用两台服务器,在一台服务器上 (A) 我安装了 filebeat,在第二台服务器上 (B) 我安装了 logstash、elasticsearch 和 kibana。所以我在 logstas
我有一个来自 Windows 事件日志的 IP 地址字段,它在 IP 地址前面包含类似“::fffff:”的字符。我无法在此处更改源,因此我必须在 Logstash 中修复此问题。 我一定很不擅长谷歌
我正在尝试将此日期结构 YYYY-MM-DD_HH-MM-SS 转换为 logstash 中的 YYYY-MM-DD HH:MM:SS。这是我的过滤器: filter { csv {
我正在使用 Logstash(以 Kibana 作为 UI)。我想从我的日志中提取一些字段,以便我可以在 UI 的 LHS 上按它们进行过滤。 我日志中的示例行如下所示: 2013-07-04 00:
如何将此 Logstash 过滤器更改为不区分大小写? filter { if "foo" in [message] { mutate { add_field => { "Alert_le
我正在尝试将事件消息与几个正则表达式相匹配。我打算使用 grep 过滤器,但它已被弃用,所以我正在尝试使用否定的方法。 我正在寻找的功能是删除所有事件,除非消息匹配多个正则表达式。 过滤器波纹管不起作
我用过logstash的RPM安装。因此,logstash 作为 linux 服务运行。我想调试一个管道,需要查看的内容 output { stdout { codec => rubydebug
如何在 logstash 中比较日期。我想将日期与恒定日期值进行比较。以下代码在 Logstash 中失败并出现 ruby 异常。 if [start_dt] { "str_dt" => "20
我正在从logstash-1.1.3升级到logstash-1.3.3。问题是,1.1.3 中的标签和字段配置在 1.3.3 版本中已弃用。这些允许仅将那些事件发送到具有给定标签或包含给定字段的输出。
我想在同一台机器上运行两个 logstash 实例。现在我使用命令启动 logstash。logstash.bat agent -f logstashconf.conf。但是当我要通过相同的命令启动第
我有这种格式的 php 日志 [Day Mon DD HH:MM:SS YYYY] [Log-Type] [client ] : [Day Mon DD HH:MM:SS YYYY] [Log-Ty
我的 logstash 中的一些请求使 http 输出插件失败,并且日志显示 [2020-10-16T18:44:54,574][ERROR][logstash.outputs.http ] [HTT
我正在探索Logstash来接收HTTP上的输入。我已经使用以下方法安装了http插件: 插件安装logstash-input-http 安装成功。然后我尝试使用以下命令运行logstash: log
我是一名优秀的程序员,十分优秀!