如何停止 logstash 将 logstash 日志写入 syslog?

How to stop logstash to write logstash logs to syslog?

我的 ubuntu 服务器中有我的 logstash 配置,它从 postgres 数据库读取数据并将数据发送到弹性搜索。我已经配置了一个时间表,logstash 将每隔 15 分钟查看 postgres table,如果 table 有任何变化,它会将数据发送到弹性搜索。

但每次 logstash 也将日志发送到我不需要的 syslog。由于 logstash,我的系统日志文件消耗了更多内存。

那么如何停止 logstash 将其日志发送到 syslog。 logstash.yml中是否有任何配置以避免将日志发送到syslog。

我在网上提到了很多网站,他们说要从配置中删除以下行。

stdout { codec => rubydebug }

但是我没有这条线

在我的输出中,我只是将我的数据发送到我从 AWS 带来的弹性搜索。

有没有办法阻止 logstash 将其日志发送到 syslog?

禁用log4j中的rootLogger.appendRef.console

logstash 本身产生的日志文件是通过log4j 创建的,一个流默认到控制台。 Syslog 将写入 consolelogs 到 syslog 文件本身。在 Ubuntu 版本的 logstash 中,这是在文件名 /etc/logstash/log4j2.properties

中配置的

在默认配置中有一行以

开头

rootLogger.appenderRef.console

如果在该行前面加一个#,重启logstash。 logstash 创建的日志文件将停止进入 syslog

service logstash restart

另一个使用 RollingFileAppender 的 rootLogger 应该仍然从 logstash 本身写入日志消息(所以不是你的管道正在处理的消息)到

/var/log/logstash/logstash-plain.log

很容易将 logstash 创建的日志文件与您处理的消息混淆,尤其是当它们被 logstash-output-stdoutlogstash-output-syslog 插件混合时。这不适用于您,因为您使用的是写入 elasticsearch 的 logstash-output-elasticsearch 插件。

如果您在 Ubuntu 中从命令行 运行 logstash,则会跳过 log4j.properties 文件。这是在终端中测试管道的好方法,您可以 运行 并行多个 logstash 实例(例如服务和命令行测试管道)

/usr/share/logstash/bin/logstash -f your_pipeline.conf

为避免写入系统日志,请检查您的管道和 log4j.properties 文件。

在您的管道文件中,删除所有出现的内容:

 stdout { codec => rubydebug }

并在您的 log4j.properties 文件中注释这一行:

rootLogger.appenderRef.console