2. 監視アイテムの追加 - 依存アイテム
依存アイテムは、V3.4から追加された機能です。複数の情報が含まれるデータを1度取得すれば、そこから複数のアイテムに分割することができます。これにより、監視対象へのアクセス頻度を減らしたり、監視データの正確性を高めることができます。
たとえば、Webサーバから監視データを取得する場合、JSONやXMLで結果を受け取ることが多いと思います。これらのデータを1項目ごとにアクセスすると、それなりの頻度でWebサーバにデータを取りにいくことになり、システム運用観点からはあまり望ましいやり方ではありません。 これまでは、一度にデータを取得して、外部スクリプトの中で分解しZabbix_senderで送る、というやり方もありましたが、外部スクリプトがどうしても複雑になってしまい、あまり効率のよい方法ではなかったと思います。
また、CPUやメモリの監視データは、各パラメタを同時に取得しないと、整合性が合わない値になってしまいますが、これらもSNMPやZabbixAgentのアイテム定義でデータの取得を同時に行うことはできないため、急激に値が変化した際、グラフのデータがおかしくなってしまうケースがありました。
これらの問題を、依存アイテムを使うことで、シンプルに記述することができるようになります。今回は、依存アイテムの基本的な部分を説明します。応用例は、また別のタイミングを紹介する予定です。
アイテムの定義
まず、最初にまとめてデータを取得するアイテムを定義します。これは依存アイテムからみてマスターアイテムと呼びますが、マスターアイテムというアイテムタイプがあるわけではなく、データを取得する手段は、どれでもOKです。
今回はテスト用のJSONデータを取得するための、Zabbixトラッパーアイテムを作成します。データ型は、サイズの大きいテキストを取得することが多いので、テキストやログを指定するケースが多いと思います。
次に依存アイテムの定義です。
タイプ:依存アイテム
キー:任意の名称を指定します
マスターアイテム:先ほど作成したアイテムを選択してください
次に、マスターアイテムから、必要なデータを切り出すため、保存前処理を記述します。
今回の確認で使用するJSONのデータです。上記の定義で、nameに該当する部分を切り出すことができます。
$ echo '{ "name" : "John", "age" : 37 }' | jq { "name": "John", "age": 37 }
処理結果
Zabbixトラッパーアイテムに、JSONデータを送ります。
$ zabbix_sender -z 192.168.0.9 -s "Dependent item test" -k master.json -o '{ "name" : "John", "age" : 37 }' info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.001396" sent: 1; skipped: 0; total: 1
name、ageの値だけを、同時にアイテムとして取得することができます。