Rsyslog:记录到 UNIX 域套接字和 INET 套接字(UDP)之间的区别

Rsyslog:记录到 UNIX 域套接字和 INET 套接字(UDP)之间的区别

当从外部应用程序记录到 syslog 时,我观察到以下行为:如果我将格式良好的 syslog 消息发送到 UDP 套接字,rsyslog 会正确解析它,但是如果将同一条消息发送到 UNIX 域套接字(/dev/log),它根本不会被解析(rsyslog 基本上假定他收到的所有内容都是消息,因此没有时间戳,没有任何东西)。

有问题的信息是

<142>1 2010-12-29T11:11:11Z foo bar 123 baz - A Message

解析为

Dec 29 11:11:11 foo bar[123] A Message

除非不是。

答案1

可能您应该发送不带主机名(foo)且采用 rfc3164 格式(而不是上面的 rfc5424)的消息以对其进行解析。

答案2

在解析消息时,rsyslog 会尽力理解它。

对于从 Unix 套接字收到的消息,rsyslog 接受类似 RFC 3164 的消息,使用以下字段:pri、、和。timestamptagcontent

它接受各种消息格式,例如:

  • just a message
  • <pri>message
  • <pri>tag: msg

关于消息时间戳:

  1. 它们必须是 RFC3164 格式。
  2. SysSock.IgnoreTimestamp选项默认启用,您的时间戳将被忽略,直到您禁用此选项。

hostname字段不能被覆盖。rsyslog 将始终从其配置中获取它。

相关内容