情况1:
对于以下系统日志传入消息,
<14>Mar 22 11:12:06 RT_FLOW: RT_FLOW_SESSION_CREATE: session created 1.2.3.4/62963->23.58.169.35/443 0x0 junos-https 6.7.8.9/32359->23.58.169.35/443 0x0 source rule 1 N/A N/A 6 1 Trust Untrust 60471 N/A(N/A) ge-0/0/1.0 UNKNOWN UNKNOWN UNKNOWN
syslog-ng
添加成功主机名时间戳 ( Mar 22 11:12:06
) 和消息类型 ( RT_FLOW
)之间
案例 2:
但,对于以下 syslog 传入消息,
<14> Mar 22 11:04:17 206.133.74.126 03362 auth: User 'sup_ogr' logged in from 206.133.74.127 to SSH session
特别地,IP地址已经存在于时间戳( Mar 22 11:04:17
)和消息类型( auth
)之间。
syslog-ng
是不能加上主机名时间戳和消息类型之间
使用的配置是:use_dns (yes);
&keep_hostname (yes);
在第二种情况下,系统日志消息是否具有 IP,符合RFC 5424标准?
如果是,那么需要什么配置来设置时间戳和消息类型之间的主机名?
答案1
我不太清楚 syslog-ng,但我假设它也使用启发式顶部解析遗留系统日志消息,就像 rsyslog (我猜有不同的启发式)。
必须注意的是,显示的消息格式很奇怪。 RFC3164 描述了通常可以在网络上看到的内容,而这里的第二种格式与那里描述的内容相去甚远。如果可能,最好的解决方案是让发送者修复格式以使其更符合标准。
答案2
是的,您的两条消息很相似,但并不完全遵循 RFC3164 中描述的系统日志消息格式。有关详细信息,请参阅本页和以下页面syslog-ng 文档。 syslog-ng 也尝试解析这些不正确的消息,但可能无法完美完成。您可以尝试以下操作:
- 检查发送主机或应用程序,看看是否可以调整它以发送格式正确的消息
- syslog-ng 可能会解析消息的每个字段,但不会解析到正确的字段。您可以尝试检查这些消息的宏的值,并且可能创建一个模板以正确格式化消息
- 如果一切都失败了,你可以写一个Python 中的自定义 syslog-ng 解析器解析这些日志消息
HTH,罗伯特