ローレベルディスカバリ(SNMP)のフィルタについて
お世話になります。
zabbix-agentをインストールできない機器に対し、ローレベルディスカバリ(SNMP)で特定のインタフェース(TenGigabitEthernetの*/1/1。*は1~4の数字が入ります)を自動検出し、ifOutOctetsを取得したいと考えております。
ディスカバリルールは以下の設定
・タイプ:SNMPv2エージェント
・キー:snmp.discovery
・SNMP OID:ifDescr
・フィルター:マクロ:{#SNMPVALUE}、正規表現:^Ten-GigabitEthernet.\/1\/1
アイテムのプロトタイプは以下の設定
・タイプ:SNMPv2エージェント
・キー:ifOutOctets.["{#SNMPINDEX}"]
・SNMP OID:ifOutOctets."{#SNMPINDEX}"
ディスカバリルールでフィルター欄を入力しない状態で、全IFの値を取得できることを確認し、
いざフィルタをかけようと思い上記のフィルタ設定を入れたところ、
全て「取得不可(No Such Instance currently exists at this OID)」となってしまいました。
フィルタの設定がおかしいのでしょうか?
ご教示いただけますでしょうか。
zabbix-serverのバージョンは2.0.12です。
よろしくお願いいたします。
enola - 投稿数: 19
自己解決できました。
TNK - 投稿数: 4769
解決されたようで何よりです。
可能であれば、どのようにして解決されたのか記載して頂けると、
同様の問題に遭遇してしまった方への問題解決のヒントになるかと
思いますのでご検討をお願いいたします。
enola - 投稿数: 19
お世話になります。
仰るとおりです。失礼いたしました。。。
単純にPOSIX正規表現の記法を間違っておりました。
下記のディスカバリルールで、Ten-GigabitEthernet*/1/1のみ取得することができました。
タイプ:SNMPv2エージェント
SNMP OID:IF-MIB::ifDescr
マクロ:{#SNMPVALUE}
正規表現:Ten-GigabitEthernet./1/1
また、公式Documentにて、grep -Eコマンドでテストできる旨記載されていたので、snmpwalkコマンド(またはその出力結果のテキスト)に対してgrepし、希望するインタフェースが取得できるかを確認いたしました。
[root@fuga]$ snmpwalk -v2c -cpublic hoge | grep -E "Ten-GigabitEthernet./1/1"
IF-MIB::ifDescr.11 = STRING: Ten-GigabitEthernet1/1/1
IF-MIB::ifDescr.22 = STRING: Ten-GigabitEthernet2/1/1
enola - 投稿数: 19
自己解決できました。