首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IETF格式处理日志消息Syslog-NG错误

使用IETF格式处理日志消息Syslog-NG错误
EN

Server Fault用户
提问于 2021-02-08 15:29:17
回答 1查看 957关注 0票数 2

我们刚刚更改了AS/400个分区上的日志记录应用程序,现在正在使用一个名为IBM的PowerTech SIEM的产品

该工具用于使用旧的syslog约定格式化消息,现在显然能够发送IETF消息(RFC 5424),但是由于某些原因,我们的Syslog-NG服务器无法处理它们,好像格式不正确一样。

下面是我们收到的一个示例错误:

代码语言:javascript
复制
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

活动本身是:

代码语言:javascript
复制
<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,看上去内容是可以的。它们应尊重:

代码语言:javascript
复制
VERSION ISOTIMESTAMP HOSTNAME APPLICATION PID MESSAGEID STRUCTURED-DATA MSG

就我而言,我有:

代码语言:javascript
复制
 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))等等,但是没有什么改变),很少有我在源代码中尝试过的例子:

代码语言:javascript
复制
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处理“原始”消息(将它带到我想要的地方,而不做进一步的修改)。

谢谢!

<#>编辑

在重新启动和执行多个检查之后,现在我们就没有错误了。但是日志根本不被处理。

整个“日志”配置非常简单,我们有:

定义如下的源:

代码语言:javascript
复制
source s_ISERIES        { syslog(transport("tcp") ip(0.0.0.0) port(51513)); }; 

定义如下的日志配置:

代码语言:javascript
复制
log {
  source(s_ISERIES);
  destination(d_LOCALCOPY_ISERIES);
  destination(d_SPLUNK_ISERIES);
};

定义如下的目的地:

代码语言:javascript
复制
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正在接收消息,但由于某种原因无法解析它。我尝试了这些标志(不解析),但是它也不能工作,好像它根本无法识别定义的“源”上的消息。

EN

回答 1

Server Fault用户

发布于 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“

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1052824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档