我们刚刚更改了AS/400个分区上的日志记录应用程序,现在正在使用一个名为IBM的PowerTech SIEM的产品
该工具用于使用旧的syslog约定格式化消息,现在显然能够发送IETF消息(RFC 5424),但是由于某些原因,我们的Syslog-NG服务器无法处理它们,好像格式不正确一样。
下面是我们收到的一个示例错误:
Feb 8 15:53:49 hostname syslog-ng[1489874]: Error processing log message: <38>1 2021-02-08T15:53:34.918160+1:00 HOSTNAME.fqn.here - - - - CEF:0!Powertech!SIEM Agent!4.2!AUDIT!TCD0003!6!src=0.0.0.0 dst=1.2.3.4 reason=Command executed msg=A command (WRKPTSA) was run by 12345/T555500/PC01AFB0活动本身是:
<38>1 2021-02-08T15:53:34.918160+1:00 HOSTNAME.fqn.here - - - - CEF:0!Powertech!SIEM Agent!4.2!AUDIT!TCD0003!6!src=0.0.0.0 dst=1.2.3.4 reason=Command executed msg=A command (WRKPTSA) was run by 12345/T555500/PC01AFB0看看RFC,看上去内容是可以的。它们应尊重:
VERSION ISOTIMESTAMP HOSTNAME APPLICATION PID MESSAGEID STRUCTURED-DATA MSG就我而言,我有:
is "38"
VERSION is "1"
ISOTIMESTAMP is "2021-02-08T15:53:34.918160+1:00"
HOSTNAME is "HOSTNAME.fqn.here"
APPLICATION is unknown (-)
PID is unknown (-)
MESSAGEID is unknown (-)
STRUCTURED-DATA is unknown (-)
MSG is "CEF:0!Powertech!SIEM Agent!4.2!AUDIT!TCD0003!6!src=0.0.0.0 dst=1.2.3.4 reason=Command executed msg=A command (WRKPTSA) was run by 12345/T555500/PC01AFB0"我们运行syslog-NG 3.8
请注意,我确实有意替换了主机名& IP,但保留了这种情况。
我尝试过syslog-ng配置中的多个东西(主要是在源中),例如从network()切换到syslog()驱动程序(也指定了标志(syslog-protocol))等等,但是没有什么改变),很少有我在源代码中尝试过的例子:
source s_ISERIES { syslog(transport("tcp") ip(0.0.0.0) port(51513)); };
source s_ISERIES { network(transport("tcp") ip(0.0.0.0) port(51513) flags(syslog-protocol)); };如果我不使用syslog()或syslog-protocol,并且使用基本的network()驱动程序而没有标志,消息就会被“重写”(syslog添加了它自己的标题,并在消息的开头添加了时间戳和主机名,我不想这样做)。
有办法解决这个问题吗?你发现事件格式有什么错误吗?如果没有,是否有方法告诉syslog-NG处理“原始”消息(将它带到我想要的地方,而不做进一步的修改)。
谢谢!
<#>编辑
在重新启动和执行多个检查之后,现在我们就没有错误了。但是日志根本不被处理。
整个“日志”配置非常简单,我们有:
定义如下的源:
source s_ISERIES { syslog(transport("tcp") ip(0.0.0.0) port(51513)); }; 定义如下的日志配置:
log {
source(s_ISERIES);
destination(d_LOCALCOPY_ISERIES);
destination(d_SPLUNK_ISERIES);
};定义如下的目的地:
destination d_LOCALCOPY_ISERIES { file("/app/syslog-ng/logs/${YEAR}/${MONTH}/${DAY}/iseries/${HOST}.log" create-dirs(yes)); };
destination d_SPLUNK_ISERIES { syslog("splunk-host.here.net" port(51513) send-time-zone("UTC")); }; 当tcpdump‘’ing时,我看不到离开syslog-NG主机的任何消息(我看到它们传入,但没有离开主机)。此外,没有创建本地副本。因此,我“相信”syslog-NG正在接收消息,但由于某种原因无法解析它。我尝试了这些标志(不解析),但是它也不能工作,好像它根本无法识别定义的“源”上的消息。
发布于 2021-10-20 18:51:38
据我所知,IBM从未测试过他们的RFC5424导出程序,因为它们的时间戳格式是垃圾格式,不会与太多的出口商一起工作。
Per RFC5424 (重点地雷):
时间戳= NILVALUE /全职日期T=日期-满年"-“日期-月"-”日期-MDAY日期-满年=4 4DIGIT日期-月份=2 4DIGIT;01-12日期-MDAY=2 4DIGIT;01-28,01-29,01-30,01-31,01-30,01-31基于月/年全职=部分时间-时间-抵消部分时间-时间=时间-小时:“时间-分钟:”时间-秒<时间-小时=2 4DIGIT;时间-分钟=2 2DIGIT;00-59时间-秒=2 2DIGIT;00-59时间-SECFRAC=“1*6 2DIGIT时间-偏移= "Z”/时间-NUMOFFSET时间-NUMOFFSET= ("+“/”-)时间-小时:“时间-分钟
一旦你发现了它,它实际上是非常清楚你得到了什么,因为你的时间戳中显然包含了一个不应该包含的空间:
ISOTIMESTAMP是"2021-02-08T15:53:34.918160+1:00“
https://serverfault.com/questions/1052824
复制相似问题