我正在尝试设置一个中央logstashconfiguration。 不过,我想通过syslog-ng发送我的日志,而不是第三方托运人。 这意味着我的logstash服务器正通过系统日志接受来自代理的所有日志。
然后,我需要安装logstash进程,该进程将从/ var / log / syslog-clients / *读取并获取发送到中央日志服务器的所有日志文件。 这些日志将被发送到同一个虚拟机上的redis。
理论上,我还需要configuration第二个logstash进程,它将从redis中读取数据并开始索引日志并将其发送给elasticsearch。
我的问题:
我是否必须使用两个不同的logstash进程(托运人和服务器),即使我在同一个盒子(我想要一个日志服务器实例)? 有没有什么办法只是有一个logstashconfiguration,并从syslog-ng读取进程—>写入到redis,并从redis读取—>输出到弹性search?
我的设置图:
[client] ——- syslog-ng —> [log server] — syslog-ng <—- logstash-shipper —> redis <—- logstash-server – – >弹性search<— kibana
我不知道我是否正确地理解了这个问题,但是我知道Syslog-NG可以直接发送到Logstash,而不需要额外的托运人作为中间人。 你可以在syslog-ng.conf中定义一个类似于这个例子的目标:
destination d_logstash { tcp("10.0.0.1" port(5514)); };
然后定义一个日志操作,将Syslog消息从source s_src发送到destination :
log { source(s_src); destination(d_logstash); };
应该使消息传输。 不要忘记重新启动syslog-ng服务来应用更改。
来源:Logstash书