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 - 投稿数: 4760
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 - 投稿数: 6
TNKさん、迅速なレスありがとうございます!
この機能知りませんでした。3.0はまさに「痒いところに手が届く」アップデートがなされてますね。
ただこの方式だと、アイテムデータは監視対象のホスト(SNMPポーリング対象のNW機器)でなく、ログを吐いているホスト(ここだとsnmpwalkを実行するサーバ)に保存されてしまいました。。
対象のNW機器のアイテムとして保存する方法はありませんよね?
もしくは障害検知させる際に対象がわかるよう、トリガー名にNW機器のホスト名を記載するなど工夫するのがベターでしょうか。
TNK - 投稿数: 4760
失礼しました。
そうしたら、awkなどで切り出してzabbix_senderでZabbixサーバー
に送ったほうがよいかもしれません。
sejusonia - 投稿数: 6
TNKさん
awkとzabbix_senderを利用して、やりたいことが実現できました!
zabbix_senderはホスト指定ができるんでしたね。senderはあまり使ったことがなかったので、思いつきませんでした。。
具体的にどうやったかは後日ここにまとめます。
とりいそぎ御礼までに。