RSyslog后期处理和远程转发

时间:2018-01-20 05:49:38

标签: logging debian rsyslog systemd-journal-remote

我正在使用Rsyslog进行分布式日志收集。根据我的理解,Debian上的日志流程从journals开始,再到syslog socket,然后由rsyslog clients获取。在我的例子中,RS客户端通过添加time-generatedpriorityhostname等额外信息来对收集的日志进行后处理。 2 {{ 1}}在每个节点上使用:

  1. 用于捕获本地日志并在终端上显示(转发到规范)
  2. 用于将日志转发到其他节点
  3. 最近,我遇到了以下问题:   - 所有节点具有相同的配置,转发节点将后处理信息添加到日志中。收到之后,在发送到终端之前,本地配置还添加了后处理信息(制作两次)。某些信息(如/etc/rsyslog.d/*.conf)不会重复,但主机名等信息会被打印两次。我必须在两个时间都发布进程,因为日志服务器可能是time generated,转发的v / s本地日志应该看起来一样。

    • 这是处理分布式日志收集的最佳方式吗?
    • 如何避免重复的后处理字符串?
    • 为什么external or internal没有重复?

    任何指针都会有所帮助,谢谢!

    规格: 节点:Debian Jessie,Systemd 215,Rsyslog 8.3.3 服务器:与上述相同或外部rsyslog服务器

1 个答案:

答案 0 :(得分:0)

调试/挖掘文档后,我的观察结果如下:

  1. Rsyslog parser尽力识别日志格式,尤其是标题组件。
  2. %time-generated%等属性,如果识别正确,将不会在中继/收集器上重复。
  3. 虽然我的模板已与RFC5424对齐,但解析器未正确选择格式;因此重复。这是我用来参考的格式: <%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n
  4. 我切换到预定义的RFC5424模板RSYSLOG_SyslogProtocol23Format,现在看来一切都很好。
  5. 希望这能解决所有问题。请随时进一步讨论这个问题:-) 一篇非常好的文章帮助我理解了rsyslog解析器的本质是this