2017-09-14 68 views
1

我想配置OpenNMS接收來自ASA的Syslog消息。 我syslogd的配置文件看起來像這樣:OpenNMS 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]*)

但是當我加入這個到配置,我根本不再得到任何Syslog消息。

有沒有人有我如何做到這一點的想法。我花了很多時間在這上面。

回答

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元素是我的第一個問題。這是您將系統日誌消息實際映射到自定義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這應該會顯示NMS及其狀態的每個運行過程。

注意:更改配置文件後,您必須運行service opennms restart(debian系統)重新加載新配置。如果您收到JVM錯誤或「無法連接到本地主機」錯誤,很可能是因爲您破壞了這兩個配置中的一個。即使在xml文件的頂部添加額外的空間也會造成這個問題。編輯文件時要小心,我強烈建議您創建備份。

0

正是我所看到的,解析器屬性「CustonSyslogParser」與「CustomSyslogParser」存在拼寫錯誤。只是爲了確保你沒有在這裏的另一個問題:)

否則,有其發揮作用的兩個組成部分:

  • 事件定義是系統日誌消息映射到OpenNMS的結果事件
  • 識別系統日誌消息,並將其映射到指定的OpenNMS的事件定義

你應該看看附帶OpenNMS的Postfix的日誌執行系統日誌解析規則。

例如,在文件$ 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_

+0

自定義部分是一個錯字。我會看看你在回去工作時提到的那個文件。我覺得默認的丟棄比賽是殺了我的東西。是你建議要解決的問題。我覺得我有點困惑的答案 – Joe

+0

所以我研究了這一點,我認爲你是對的,這是我搞亂了。雖然我似乎無法得到它。您可以發佈一個設置嚴重性標籤的例子嗎?我似乎無法做到。我將這個編輯添加到syslogd-configuration.xml中, – Joe