OpenNMS Syslog 集成

OpenNMS Syslog 集成

我正在尝试配置 OpenNMS 以从 ASA 接收 Syslog 消息。我的 syslogd 配置文件如下所示:

<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]

使用此配置,我可以将系统日志消息发送到 Opennms,但它们显示为不确定。似乎这个正则表达式无法解析。当我在其他网站(如 regex101.com)上测试此正则表达式时,它清楚地表明没有匹配。我创建了一个符合我需要的正则表达式:

\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*([\s\S]*)

但是,当我将其添加到配置中时,我不再收到任何 Syslog 消息。

有人知道我如何实现这一点吗?我已经花了太多时间在这上面了。

答案1

我不确定为什么原始正则表达式会嵌套组,但是如果删除外部 () 组,则需要减少主机和消息的组号(因为外部组是组 #1),因此

matching-group-host="1"
matching-group-message="2"

答案2

好的,我似乎已经弄清楚了。我将尝试在这里发布一个完整的答案,希望它能帮助别人。文档对此并不是最清楚的。

我用于配置的参考资料是系统日志科技目标

首先您需要设置$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是我遇到的第一个问题。在这里,您实际上将系统日志消息映射到自定义 uei。可以自定义 uei 以创建您希望拥有的任何唯一标识符。

我的第二个问题是映射自定义 uei 以使其具有属性,例如警报级别。这是通过文件实现的$OPENNMS_HOME/etc/eventconf.xml 。我在标签下方插入了以下代码</global>来配置我的新自定义 uei 的属性。

<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>

有了这些,系统日志消息应该具有所需的属性。注意:在我的场景中,我使用的是非标准系统日志消息,这就是为什么我必须使用文件parser="org.opennms.netmgt.syslogd.CustomSyslogParser"中的设置syslogd-confguration.xml。如果您使用的是 Syslog-NG 或格式更好的系统日志,还有其他选项。

为了帮助进行故障排除,您可以转到$OPENNMS_HOME/etc$OPENNMS_HOME/bin运行以下命令:opennms -v status 这将向您显示 NMS 的每个正在运行的进程及其状态。

注意:更改配置文件后,您必须运行service opennms restart(Debian 系统)以重新加载新配置。如果您收到 JVM 错误或“无法连接到本地主机”错误,则很可能是因为您破坏了这两个配置之一。即使在 xml 文件的顶部添加额外的空格也会产生此问题。编辑文件时请小心,我强烈建议创建备份。

相关内容