OpenNMS 系统日志配置
OpenNMS Syslogd Configuration
我正在尝试配置 OpenNMS 以接收来自 ASA 的 Syslog 消息。
我的 syslogd 配置文件如下所示:
<configuration
syslog-port="514"
new-suspect-on-message="false"
parser="org.opennms.netmgt.syslogd.CustomSyslogParser"
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,但它们以 indeterminate
的形式出现。似乎这个正则表达式无法解析。当我在 regex101.com 等其他网站上测试此正则表达式时,它清楚地表明没有匹配项。我创建了一个符合我需要的正则表达式:
\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*([\s\S]*)
但是当我将其添加到配置中时,我根本不再收到任何系统日志消息。
有谁知道我是如何做到这一点的。我在这上面花了太多时间。
正如我立即看到的那样,解析器属性 "CustonSyslogParser" 与 "CustomSyslogParser" 中存在拼写错误。只是为了确保您在这里没有其他问题:)
否则,有两个组件发挥作用:
- 作为 Syslog 消息映射到 OpenNMS 事件的结果的事件定义
- 标识 Syslog 消息并将其映射到给定 OpenNMS 事件定义的 Syslog 解析规则
您应该看看 OpenNMS 附带的 Postfix Syslog 实现。
例如,在文件 $OPENNMS_HOME/etc/syslog/Postfix.syslog.xml 中,您会发现一条规则,该规则查看传入的 Syslog 消息,并将挑选包含 "disabling TLS support" 的每条 Syslog 消息,并将使用 OpenNMS 唯一事件标识符 (UEI) uei.opennms.org/vendor/postfix/syslog/postfix/TLSDisabled.
创建事件
具有 UEI uei.opennms.org/vendor/postfix/syslog/postfix/TLSDisabled 的事件在 $OPENNMS_
中定义了其严重性
好的,我似乎已经明白了。我将在这里尝试 post 一个完整的答案,希望它能帮助别人。文档不是最清楚的。
我用于配置的参考资料是Syslogd and 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
元素是我的第一个问题。这是您实际将系统日志消息映射到自定义 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>
有了这些,系统日志消息应该具有所需的属性。注意:在我的场景中,我使用的是非标准系统日志消息,这就是我必须在我的 syslogd-confguration.xml
文件中使用 parser="org.opennms.netmgt.syslogd.CustomSyslogParser"
设置的原因。如果您使用 Syslog-NG 或格式更好的系统日志,还有其他选项。
为了帮助进行故障排除,您可以转到 $OPENNMS_HOME/etc
或 $OPENNMS_HOME/bin
和 运行 以下内容:opennms -v status
这应该会显示每个 运行ning 过程NMS 及其状态。
注意:更改配置文件后,您必须 运行 service opennms restart
(debian 系统)重新加载新配置。如果您收到 JVM 错误或 "couldn't connect to local host" 错误,很可能是因为您破坏了这两个配置之一。即使在 xml 文件的顶部添加额外的 space 也会产生此问题。编辑文件时要小心,我强烈建议创建备份。
我正在尝试配置 OpenNMS 以接收来自 ASA 的 Syslog 消息。 我的 syslogd 配置文件如下所示:
<configuration
syslog-port="514"
new-suspect-on-message="false"
parser="org.opennms.netmgt.syslogd.CustomSyslogParser"
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,但它们以 indeterminate
的形式出现。似乎这个正则表达式无法解析。当我在 regex101.com 等其他网站上测试此正则表达式时,它清楚地表明没有匹配项。我创建了一个符合我需要的正则表达式:
\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*([\s\S]*)
但是当我将其添加到配置中时,我根本不再收到任何系统日志消息。
有谁知道我是如何做到这一点的。我在这上面花了太多时间。
正如我立即看到的那样,解析器属性 "CustonSyslogParser" 与 "CustomSyslogParser" 中存在拼写错误。只是为了确保您在这里没有其他问题:)
否则,有两个组件发挥作用:
- 作为 Syslog 消息映射到 OpenNMS 事件的结果的事件定义
- 标识 Syslog 消息并将其映射到给定 OpenNMS 事件定义的 Syslog 解析规则
您应该看看 OpenNMS 附带的 Postfix Syslog 实现。
例如,在文件 $OPENNMS_HOME/etc/syslog/Postfix.syslog.xml 中,您会发现一条规则,该规则查看传入的 Syslog 消息,并将挑选包含 "disabling TLS support" 的每条 Syslog 消息,并将使用 OpenNMS 唯一事件标识符 (UEI) uei.opennms.org/vendor/postfix/syslog/postfix/TLSDisabled.
创建事件具有 UEI uei.opennms.org/vendor/postfix/syslog/postfix/TLSDisabled 的事件在 $OPENNMS_
中定义了其严重性好的,我似乎已经明白了。我将在这里尝试 post 一个完整的答案,希望它能帮助别人。文档不是最清楚的。
我用于配置的参考资料是Syslogd and 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
元素是我的第一个问题。这是您实际将系统日志消息映射到自定义 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>
有了这些,系统日志消息应该具有所需的属性。注意:在我的场景中,我使用的是非标准系统日志消息,这就是我必须在我的 syslogd-confguration.xml
文件中使用 parser="org.opennms.netmgt.syslogd.CustomSyslogParser"
设置的原因。如果您使用 Syslog-NG 或格式更好的系统日志,还有其他选项。
为了帮助进行故障排除,您可以转到 $OPENNMS_HOME/etc
或 $OPENNMS_HOME/bin
和 运行 以下内容:opennms -v status
这应该会显示每个 运行ning 过程NMS 及其状态。
注意:更改配置文件后,您必须 运行 service opennms restart
(debian 系统)重新加载新配置。如果您收到 JVM 错误或 "couldn't connect to local host" 错误,很可能是因为您破坏了这两个配置之一。即使在 xml 文件的顶部添加额外的 space 也会产生此问题。编辑文件时要小心,我强烈建议创建备份。