我的 ubuntu 服务器中有我的 logstash 配置,它从 postgres 数据库读取数据并将数据发送到 Elasticsearch 。我配置了一个时间表,logstash 每 15 分钟查看 postgres 表,如果表中有任何变化,它会将数据发送到 Elasticsearch 。
但每次 logstash 也将日志发送到我不需要的 syslog。由于 logstash,我的系统日志文件消耗了更多内存。
那么如何停止 logstash 将其日志发送到 syslog。 logstash.yml 中是否有任何配置可以避免将日志发送到 syslog。
我在网上提到了很多网站,他们说要从配置中删除以下行。
stdout { codec => rubydebug }
但是我没有这条线。
在我的输出中,我只是将我的数据发送到我从 AWS 带来的 Elasticsearch 。
有没有办法阻止 logstash 将其日志发送到 syslog?
最佳答案
在 log4j 中禁用 rootLogger.appendRef.console
logstash 本身产生的日志文件是通过 log4j 创建的,默认情况下一个流到控制台。 Syslog 将写入 consolelogs 到 syslog 文件本身。在 Ubuntu 版本的 logstash 中,这是在文件名 /etc/logstash/log4j2.properties
在默认配置中有一行以
开头rootLogger.appenderRef.console
如果在该行前面加一个#
,然后重启logstash。 logstash 创建的日志文件将停止进入 syslog
服务 logstash 重启
使用 RollingFileAppender 的其他 rootLogger 仍应从 logstash 本身写入日志消息(因此不是管道正在处理的消息)
/var/log/logstash/logstash-plain.log
很容易将 logstash 创建的日志文件与您处理的消息混淆,尤其是当它们被 logstash-output-stdout
或 logstash-output-syslog
插件。这不适用于您,因为您使用写入 elasticsearch 的 logstash-output-elasticsearch
插件。
如果您在 Ubuntu 中从命令行运行 logstash,则会跳过 log4j.properties
文件。这是在终端中测试管道的好方法,您可以并行运行多个 logstash 实例(例如服务和命令行测试管道)
/usr/share/logstash/bin/logstash -f your_pipeline.conf
关于elasticsearch - 如何停止 logstash 将 logstash 日志写入 syslog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58519728/