SNMPポーリングで取得した文字列内の特定の数値のみ監視したい

<使用バージョン>
Zabbix 3.0.3
CentOS 7.2

<質問>
NetApp CN1610というNW機器のCPU使用率監視を行ないたいと考えています。
snmpwalkコマンドを実行したところ、CPU使用率については数値でなく、下記のような文字列を返すことがわかりました。

FASTPATH-SWITCHING-MIB::agentSwitchCpuProcessTotalUtilization.0 = STRING: " 5 Secs ( 6.8359%) 60 Secs ( 7.8591%) 300 Secs ( 7.8108%)"

この文字列のうち、「7.8108%」だけを取り出して数値としてZabbixで監視するようなことは可能でしょうか?

「SNMPv2エージェント監視」での実装が難しければ、他のアイテムタイプの利用も検討します。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

SNMPv2エージェントを利用した場合は、OIDを指定してSNMPで定義
された型で、今回のようにSTRINGならSTRINGとしてひとまとまりで
受け取るだけしかできないと思います。

文字列から数字の部分を切り出して監視する方法としては、利用さ
れているのが3.0.3とのことですので、outputパラメータを利用す
る方法が考えられます。

その為には、一度SNMPで取得したその文字列をファイルに出力した
後で、

 log[]
 logrt[]
 vfs.file.regexp[]

を利用して文字列を取得し、さらに正規表現で数値部分を定義して、
outputパラメータで位置を指定することで数値として取り出すわけ
です。

つまり、cronなどの何らかの方法を利用して定期的にsnmpwalkなど
で取得した文字列をファイルに出力して、Zabbixではそのファイル
を監視するように設定するわけです。

一例としては、昨年末のZabbix Advent Calendar 2015でも紹介し
ているので、参考にしてみてください。

ご参考:Zabbix 3.0の新機能:ログファイルから数値を取得
  http://qiita.com/atanaka7/items/0e7ad1735d281adcec45

ヒント:(ここでは正常に表示できないかも)
log[/tmp/sample.log,"5 Secs . ([0-9]+\.[0-9]*)%. 60 Secs . ([0-9]+\.[0-9]*)%. 300 Secs . ([0-9]+\.[0-9]*)%.",,,,\3]

ユーザー sejusonia の写真

TNKさん、迅速なレスありがとうございます!

この機能知りませんでした。3.0はまさに「痒いところに手が届く」アップデートがなされてますね。

ただこの方式だと、アイテムデータは監視対象のホスト(SNMPポーリング対象のNW機器)でなく、ログを吐いているホスト(ここだとsnmpwalkを実行するサーバ)に保存されてしまいました。。

対象のNW機器のアイテムとして保存する方法はありませんよね?
もしくは障害検知させる際に対象がわかるよう、トリガー名にNW機器のホスト名を記載するなど工夫するのがベターでしょうか。

ユーザー TNK の写真

失礼しました。
そうしたら、awkなどで切り出してzabbix_senderでZabbixサーバー
に送ったほうがよいかもしれません。

ユーザー sejusonia の写真

TNKさん
awkとzabbix_senderを利用して、やりたいことが実現できました!

zabbix_senderはホスト指定ができるんでしたね。senderはあまり使ったことがなかったので、思いつきませんでした。。

具体的にどうやったかは後日ここにまとめます。

とりいそぎ御礼までに。