我在ubuntu服务器中有我的logstash配置,该服务器从postgres数据库读取数据并将数据发送到弹性搜索。我已经配置了一个计划,每隔15分钟,logstash将查找postgres表,如果表中有任何更改,它将把数据发送到弹性搜索。
但是每次logstash还将日志发送到我不需要的syslog时。由于使用logstash,我的syslog文件占用了更多内存。
因此,如何停止logstash将其日志发送到syslog。 logstash.yml中是否有任何配置,以避免将日志发送到syslog。
我在网上提到了许多网站,他们说要从配置中删除以下行。
stdout {编解码器=> rubydebug}
但是我没有这行。
在输出中,我只是将数据发送到我从AWS带来的弹性搜索。
是否有一种方法可以停止logstash并将其日志发送到syslog?
答案 0 :(得分:1)
为避免写入syslog,请检查管道和log4j.properties文件。
在管道文件中,删除所有出现的情况:
stdout { codec => rubydebug }
然后在您的log4j.properties文件中注释以下行:
rootLogger.appenderRef.console
如上一个答案所示。
答案 1 :(得分:0)
在log4j中禁用rootLogger.appendRef.console
logstash本身生成的日志文件是通过log4j创建的,默认情况下一个流进入控制台。 Syslog会将控制台日志写入syslog文件本身。在Ubuntu的logstash版本中,此配置是在文件名/etc/logstash/log4j2.properties
在默认配置中,有一行以
开头 rootLogger.appenderRef.console
如果在行前添加#
,然后重新启动logstash。 logstash创建的日志文件将停止进入syslog
service logstash restart
另一个使用RollingFileAppender的rootLogger仍应将logtash本身的logmessage(而不是管道正在处理的消息)写入
/var/log/logstash/logstash-plain.log
很容易将logstash创建的日志文件与您处理的消息混淆,尤其是当它们被logstash-output-stdout
或logstash-output-syslog
插件混合在一起时。这不适用于您,因为您使用的是写入Elasticsearch的{{1}}插件。
如果在Ubuntu中从命令行运行logstash,则logstash-output-elasticsearch
文件将被跳过。这是在终端中测试管道的好方法,您可以并行运行多个logstash实例(例如服务和命令行测试管道)
log4j.properties