-1

この抽出された SNMP パケットのホスト名を照合しようとしています

2012-07-27 12:16:03 SUP-V5-ISA-1 [10.165.26.10] (via UDP: [10.165.26.10]:61151->[0.0.0.0]:0) TRAP, SNMP v1, community public
ISAMANAGER-MIB::isaManager Enterprise Specific Trap (ISAMANAGER-MIB::clipModified) Uptime: 1:22:15.08
ISAMANAGER-MIB::vClipId = INTEGER: 42059

SUP-V5-ISA-1 はホスト名であり、この例では異常に FQDN ではありません (送信元のシステムによって異なります)。

私はそれを Splunk にフィードしようとしていますが、私の人生では、3 番目の単語をどのように選択し、ハイフンを単語の境界として扱わないかについて頭を悩ませることはできません。私は毎回 3 番目の「単語」を選ぶことができました。「27」と SUP ですが、「単語」全体をつかむことはできませんでした。

常にタイムスタンプが続き、常に角括弧で囲まれた IP が続きますが、通常はそれほど多くのハイフンは含まれません。

4

3 に答える 3

0

正規表現^\S+\s+\S+\s+(\S+)を使用し、結果として最初のキャプチャ グループを使用します

于 2012-07-27T01:40:11.350 に答える
0

正規表現の代わりにフィールド分割を使用する

正規表現が常に最適なソリューションであるとは限りません。ログ レコードをフィールドに分割できれば、この問題は簡単に解決できます。レコードの 3 番目のフィールドを取得する方が、完全な正規表現を作成するよりもはるかに簡単だからです。

私は Splunk に詳しくありませんが、次の例を参考にしてください。ログ レコードがレコード変数に格納されていると仮定します。

# Field-splitting with awk.
hostname=$(echo "$record" | awk '{print $3}')

# Field-splitting with cut.
hostname=$(echo "$record" | cut -d' ' -f3)

どちらの場合も、レコードをフィールドに解析し、3 番目のフィールドの値を抽出することによって、ホスト名が設定されます。SUP-V5-ISA-1フレームワークで同等の操作を実行できると仮定すると、この特定のユースケースではより信頼できるアプローチのように思えます。

于 2012-07-27T07:36:55.353 に答える
0

Splunk では、ログ イベントからフィールドを抽出することにより、インデックス時にホスト名を変換できます。

これを行うには、$SPLUNK_HOME/etc/apps/yourapp/local の 2 つのファイルにエントリを追加します。

環境に合わせてyourappyoursourcetypeを置き換えてください。

props.conf

[yoursourcetype]
TRANFORMS-h1=set-host-name
SHOULD_LINEMERGE=false

transforms.conf

[set-host-name]
DEST_KEY = MetaData:Host
REGEX =^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\s((?:\w|-)+)\s\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\].+$
FORMAT = host::$1
于 2012-08-13T06:24:10.407 に答える