SNMPTTのwildcard_expansion_separator
SNMPTTの設定ファイルsnmptt.iniの項目「wildcard_expansion_separator」を弄ってました。
このオプションの説明する前に、SNMPTTの変換についてちょっと書きます。
SNMPTTが受け取った時、SNMPトラップ自体のOIDとは別に、例えばifIndexが1、ifAdminStatusが2、ifOperStatusが2というようなデータを大概一緒に渡します。SNMPトラップは、例えばここのifIndexの値を使って、「インタフェース{ifIndexの値} が リンクダウンしました」とか書く訳です。
snmpttのconfファイル系にたとえば以下のように記入することで、リンクダウントラップがオペレータさんに読みやすいような形になります。
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Normal FORMAT ZBXTRAP $aA $ar インタフェース $1 にてリンクダウンが発生しました。"$+*" SDESC Variables: 1: ifIndex 2: ifAdminStatus 3: ifOperStatus EDESC
さて、この末尾において"$+*"と書いてます。これは、「全部の渡されたオプションパラメータを出力する、ただし小さ目のMIB表示で(IF-MIB::ifIndexはifIndex)」という意味です。で、その「オプション名:パラメータ」がずらっと並ぶときに何で区切るか、というのが「wildcard_expansion_separator」です。
「wildcard_expansion_separator="/"」に設定するとこんな感じ。
2013/08/16-18:20:57 linkDown Normal "Status Events" testzabbix01 - ZBXTRAP 172.31.93.182 172.31.93.98 インタフェース 1 にてリンクダウンが発生しました。"ifIndex.1:1/ifAdminStatus.1:up/ifOperStatus.1:down"
"オプション1:値/オプション2:値/..."という感じになってます。
「wildcard_expansion_separator=" / "」に設定するとこんな感じ。スペース入れて広げました。
2013/08/16-18:25:41 linkDown Normal "Status Events" testzabbix01 - ZBXTRAP 172.31.93.182 172.31.93.98 インタフェース 1 にてリンクダウンが発生しました。"ifIndex.1:1 / ifAdminStatus.1:up / ifOperStatus.1:down /"
なるほど見やすく・・・うん?何で最後に「/」が…。本気で意味わからないです。
「wildcard_expansion_separator="/ "」(後にスペース)
2013/08/16-18:27:28 linkDown Normal "Status Events" testzabbix01 - ZBXTRAP 172.31.93.182 172.31.93.98 インタフェース 1 にてリンクダウンが発生しました。"ifIndex.1:1/ ifAdminStatus.1:up/ ifOperStatus.1:down/"
まだ「/」入ってるし。意味わかんない。
「wildcard_expansion_separator=" /"」(先にスペース)
2013/08/16-18:27:39 linkDown Normal "Status Events" testzabbix01 - ZBXTRAP 172.31.93.182 172.31.93.98 インタフェース 1 にてリンクダウンが発生しました。"ifIndex.1:1 /ifAdminStatus.1:up /ifOperStatus.1:down "
「wildcard_expansion_separator="ぬるぽ"」
2013/08/16-18:41:01 linkDown Normal "Status Events" testzabbix01 - ZBXTRAP 172.31.93.182 172.31.93.98 インタフェース 1 にてリンクダウンが発生しました。"ifIndex.1:1ぬるぽifAdminStatus.1:upぬるぽifOperStatus.1:downぬる・
セパレータとして末尾まで含めて追加した後、1byte削るっていう実装なんじゃないかな、という結論。2文字以上を指定すべきじゃないが、削られるの前提で" /"は許容範囲かな、という気がする。