web-dev-qa-db-ja.com

OpenNMSSyslog統合

ASAからSyslogメッセージを受信するようにOpenNMSを設定しようとしています。私の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"
    />

Syslogメッセージは次の形式で到着します。

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に取り込むことができますが、それらは不確定として届きます。この正規表現は解析できないようです。 regex101.comなどの他のWebサイトでこの正規表現をテストすると、一致するものがないことが明確に示されています。必要な方法に一致する正規表現を作成しました。

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

しかし、これを設定に追加すると、Syslogメッセージがまったく表示されなくなります。

誰かが私がこれをどのように実現するかについての考えを持っていますか?私はこれにあまりにも多くの時間を費やしてきました。

2
Joe

わかりました、私はこれを理解したようです。誰かの助けになることを願って、ここに完全な回答を投稿しようと思います。ドキュメントはこれについて最も明確ではありません。

構成に使用した参照は 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をカスタマイズして、必要な一意の識別子を作成できます。

2番目の問題は、アラートレベルなどのプロパティを持つようにカスタム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>

これらを適切に配置すると、syslogメッセージに必要なプロパティが含まれるはずです。注:私のシナリオでは、非標準のsyslogメッセージを使用しているため、parser="org.opennms.netmgt.syslogd.CustomSyslogParser"ファイルでsyslogd-confguration.xml設定を使用する必要があります。 Syslog-NGまたはより適切にフォーマットされたsyslogを使用している場合は、他のオプションがあります。

トラブルシューティングに役立てるために、$OPENNMS_HOME/etcまたは$OPENNMS_HOME/binに移動して、以下を実行できます。opennms -v statusこれにより、NMSの実行中のすべてのプロセスとそのステータスが表示されます。

注:構成ファイルを変更した後、service opennms restart(debianシステム)を実行して新しい構成を再ロードする必要があります。 JVMエラーまたは「ローカルホストに接続できませんでした」エラーが発生した場合は、これら2つの構成のいずれかが壊れている可能性があります。 xmlファイルの先頭に余分なスペースを追加しても、この問題が発生します。ファイルを編集するときは注意してください。バックアップを作成することを強くお勧めします。

0
Joe

元の正規表現がグループをネストした理由はわかりませんが、外部()グループを削除する場合は、ホストとメッセージのグループ番号を減らす必要があります(外部グループはグループ#1であったため)。

matching-group-Host="1"
matching-group-message="2"
0
DerfK