【问题标题】:How to stop logstash to write logstash logs to syslog?如何停止logstash将logstash日志写入syslog?
【发布时间】:2020-02-19 12:23:41
【问题描述】:

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

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

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

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

stdout { 编解码器 => ruby​​debug }

但我没有这条线。

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

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

【问题讨论】:

  • 查看是否安装了 syslog 插件并将其删除:/bin/logstash-plugin remove logstash-output-syslog
  • 我没有任何目录“/bin/logstash-plugin”。有没有其他办法?
  • 您有保存管道配置的 .conf 文件吗?
  • 我在 /etc/logstash 中创建了一个单独的文件夹。在我的文件夹中,我有一个包含我的逻辑的两个 conf 文件。
  • 你能分享conf文件中的配置吗..

标签: elasticsearch logstash syslog logstash-jdbc


【解决方案1】:

在 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 仍应将来自 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

【讨论】:

    【解决方案2】:

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

    在您的管道文件中,删除所有出现的这种情况:

     stdout { codec => rubydebug }
    

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

    rootLogger.appenderRef.console
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      相关资源
      最近更新 更多