我正在尝试configurationOpenNMS以接收来自ASA的Syslog消息。 我的syslogdconfiguration文件如下所示:
<configuration syslog-port="514" new-suspect-on-message="false" parser="org.opennms.netmgt.syslogd.CustonSyslogParser" forwarding-regexp="((.+?) (.*))\r?\n?$" matching-group-host="2" matching-group-message="3" />
系统日志消息以这种格式到达:
Sep 13 08:36:37 192.168.75.254 %ASA-4-106023: Deny tcp src outside:144.5.5.255/ 56607 dst inside:192.168.75.102/23 by access-group "outside_access_in" [0x0, 0x0]
有了这个configuration,我可以将系统日志消息放入Opennms中,但它们通过的方式是不确定的。 似乎这个正则expression式不能parsing。 当我在regex101.com等其他网站上testing这个正则expression式时,它清楚地表明没有匹配。 我创build了一个符合我需要的正则expression式:
\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*([\s\S]*)
但是当我把这个添加到configuration,我不再有任何系统日志消息。
有没有人有我如何做到这一点的想法。 我花了太多的时间在这个上。
我不确定为什么原始正则expression式嵌套组,但是如果你删除了外部()组,你需要减less主机和消息的组号(因为外部组是组1),所以
matching-group-host="1" matching-group-message="2"
好,所以我似乎已经明白了这一点。 我打算试着在这里发表一个完整的答案,希望能帮助别人。 这个文件不是最清楚的。
我用于configuration的参考是Syslogd和TechTarget
首先,您需要设置$OPENNMS_HOME/etc/syslogd-configuration.xml以具有以下内容:
<configuration syslog-port="10514" new-suspect-on-message="false" parser="org.opennms.netmgt.syslogd.CustomSyslogParser" forwarding-regexp="((.+?) (.*))\r?\n?$" matching-group-host="2" matching-group-message="3" /> <ueiList> <ueiMatch> <match type="regex" expression="YOUR REGEX HERE"/> <uei>uei.opennms.org/foo1/foo2/foo3</uei> </ueiMatch> </ueiList>
ueiList元素是我的第一个问题。 这是您实际将syslog消息映射到自定义uei的位置。 uei可以被定制来创build你想要的唯一标识符。
我的第二个问题是将自定义uei映射到具有属性(如警报级别)。 这是通过$OPENNMS_HOME/etc/eventconf.xml文件完成的。 我在</global>标记的正下方插入了以下代码,以便为我的新自定义ueiconfiguration属性。
<event>00-custom.conf <uei>uei.opennms.org/foo1/foo2/foo3</uei> <event-label>Event Label Here</event-label> <descr> An event description here </descr> <logmsg dest='logndisplay'>Here is the Log: %parm[all]%</logmsg> <severity>Critical</severity> </event>
有了这些,系统日志消息就应该具有所需的属性。 注意:在我的情况下,我正在使用非标准的syslog消息,这就是为什么我必须在我的syslogd-confguration.xml文件中使用parser="org.opennms.netmgt.syslogd.CustomSyslogParser"设置。 如果您正在使用Syslog-NG或更好的格式化系统日志,还有其他选项。
为了帮助解决问题,可以到$OPENNMS_HOME/etc或$OPENNMS_HOME/bin并运行以下命令: opennms -v status这应该会显示NMS及其状态的每个正在运行的进程。
注:更改configuration文件后,您必须运行service opennms restart (debian系统)重新加载新的configuration。 如果出现JVM错误或“无法连接到本地主机”错误,很可能是因为您破坏了这两个configuration中的一个。 即使在xml文件的顶部添加一个额外的空间也会造成这个问题。 编辑文件时要小心,我强烈build议您创build备份。