【问题标题】:OpenNMS Syslogd ConfigurationOpenNMS Syslogd 配置
【发布时间】:2017-09-14 15:51:04
【问题描述】:

我正在尝试将 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]

通过这个配置,我可以将 syslog 消息输入 Opennms,但它们以 indeterminate 的形式出现。好像这个正则表达式无法解析。当我在 regex101.com 等其他网站上测试这个正则表达式时,它清楚地表明不匹配。我创建了一个符合我需要的正则表达式:

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

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

有没有人知道我是如何做到这一点的。我已经花太多时间在这上面了。

【问题讨论】:

    标签: ubuntu syslog opennms asa


    【解决方案1】:

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

    我用于配置的参考是SyslogdTechTarget

    首先您需要设置$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 以创建您希望拥有的任何唯一标识符。

    我的第二个问题是将自定义 uei 映射为具有属性,例如警报级别。这是通过$OPENNMS_HOME/etc/eventconf.xml 完成的 文件。我在&lt;/global&gt; 标记的正下方插入了以下代码,为我的新自定义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 或格式更好的 syslog,还有其他选项。

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

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

    【讨论】:

      【解决方案2】:

      正如我立即看到的那样,解析器属性“CustonSyslogParser”与“CustomSyslogParser”中有一个错字。只是为了确保您在这里没有其他问题:)

      否则,有两个组件会起作用:

      • 事件定义是 Syslog 消息映射到 OpenNMS 事件的结果
      • Syslog 解析规则,用于识别 Syslog 消息并将其映射到给定的 OpenNMS 事件定义

      你应该看看 OpenNMS 附带的 Postfix Syslog 实现。

      例如,在文件 $OPENNMS_HOME/etc/syslog/Postfix.syslog.xml 中,您将找到一条规则,该规则查看传入的 Syslog 消息,并选择包含“禁用 TLS 支持”的每条 Syslog 消息,并将创建一个带有 OpenNMS 唯一事件标识符 (UEI) uei.opennms.org/vendor/postfix/syslog/postfix/TLSDisabled 的事件。

      带有 UEI uei.opennms.org/vendor/postfix/syslog/postfix/TLSDisabled 的事件在 $OPENNMS_ 中定义其严重性

      【讨论】:

      • 自定义部分是一个错字。当我回去工作时,我会看看你提到的那个文件。我觉得默认丢弃匹配是杀死我的原因。是您建议解决的问题。我想我对答案有点困惑
      • 所以我调查了这个,我认为你是对的,这就是我搞砸的地方。不过,我似乎无法接受。你能发布一个设置严重性标签的例子吗?我似乎无法正确处理。我正在将此编辑添加到 syslogd-configuration.xml 中\
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多