本地 Logstash 无法将 /var/log/syslog 转发到中央 Logstash

本地 Logstash 无法将 /var/log/syslog 转发到中央 Logstash

我希望本地的 Logstash 实例将 syslog 和所有/var/log/*文件转发到远程的、中央的 Logstash 实例。

管道/etc/logstash/conf/logstash-local.conf如下所示:

input {
 file {
 type => "syslog"
 path => [ "/var/log/*.log", "/var/log/syslog" ]
 }
}
output {
 stdout { codec => rubydebug }
 tcp {
 host => "logging.example.com"
 port => 5000
 }
}

当我尝试执行时logger "foo",事件被记录到本地系统日志中,但在我的远程 Logstash 中找不到它。系统日志中也没有其他事件。

我尝试过的事情:

  • 本地 Logstash 在其日志文件中报告管道正在正常运行
  • 我使用 telnet 连接到远程服务器,并验证直接输入是否被正确处理
  • 权限已在本地更改,以授予用户 Logstash 成为 adm 组成员资格

一切看上去都很完美......但它不起作用!:)

答案1

如果您还不确定,输出tcp {}将使用json编解码器进行传输。如果您的接收方没有预料到这一点,您将得到很多东西。除此之外,您的配置看起来很可靠。输出上没有过滤器,所以一切都应该同时进行。

在调试方面,启动时检查您的网络统计信息,看看是否正在尝试打开到您的远程的 TCP 连接。卡住的某些东西SYN_SENT表明问题出在 Logstash 之外的其他东西上。如果您仍然无法打开该连接,则可能需要使用系统调用跟踪器(如 strace(Linux 系统)或 procmon(Windows 系统))启动 logstash,以查看连接创建调用发生了什么。

相关内容