Logstash 发货商和服务器在同一个盒子上

Logstash 发货商和服务器在同一个盒子上

我正在尝试设置一个中央 logstash 配置。但是我希望通过 syslog-ng 而不是第三方发送程序发送我的日志。这意味着我的 logstash 服务器通过 syslog-ng 接受来自代理的所有日志。

然后我需要安装一个 logstash 进程,它将从 /var/log/syslog-clients/* 读取并抓取发送到中央日志服务器的所有日志文件。然后这些日志将被发送到同一台虚拟机上的 redis。

理论上,我还需要配置第二个 logstash 进程,它将从 redis 读取并开始索引日志并将其发送到 elasticsearch。

我的问题:

即使我在同一个盒子里(我想要一个日志服务器实例),我是否必须使用两个不同的 logstash 进程(shipper 和 server)?有没有办法只使用一个 logstash 配置,并让进程从 syslog-ng 读取 ---> 写入 redis,并从 redis 读取 ---> 输出到 elastic search?

我的设置图:

[客户端]-------syslog-ng---> [日志服务器] ---syslog-ng <----logstash-shipper ---> redis <----logstash-server ----> elastic-search <--- kibana

答案1

我不确定我是否理解正确,但我确实知道 Syslog-NG 可以直接发送到 Logstash,而无需额外的发送者作为中介。您可以在 syslog-ng.conf 中定义类似于以下示例的目的地:

destination d_logstash { 
  tcp("10.0.0.1" port(5514)); 
};

然后定义一个日志操作来将 Syslog 消息从 发送source s_srcdestination

log {
  source(s_src);
  destination(d_logstash);
};

这应该可以启用消息传输。不要忘记重新启动 syslog-ng 服务以应用更改。

来源:Logstash 手册

相关内容