質問: ### 前提・実現したいこと Zabbixの外部チェックを使って、対象のESXiからインベントリ情報を取得したいと考えています。(標準のテンプレートでは取得できる項目が少ないため) インベントリ情報は、値が常に1つに決まるもの(搭載CPU名など)と複数(可変)のもの(ESXiがマウントしているデータストア名など)があります。 複数(可変)の値を取得したいため、LLD(ローレベルディスカバリ)を使用したいのですが、LLD、アイテムのプロトタイプの設定あたりで悩んでいます。 ### 困っている事 通常、ローレベルディスカバリで複数の値を取得しjson形式で出力した後、アイテムのプロトタイプでそのjsonの値(戻り値)を引数にして、何かしらの値をとるようにすると思います。 しかし、今回スクリプト(=LLD設定)だけで複数の値(=ほしい値)が取れてしまうので、アイテムのプロトタイプをどのように設定すれば良いかわかりません。 ### 試したこと 以下のような値(jsonオブジェクト)を返すスクリプトを作りました(LLDに設定済み)。 {"data": [{"{#DS_NAME}": "datastore-01"}, {"{#DS_NAME}": "datastore-02"}, {"{#DS_NAME}": "datastore-03"}] } 次にアイテムのプロトタイプですが、ここは例えばどのように書けばいいでしょうか。 上の例で言えば、datastore-01、datastore-02、datastore-03が欲しい結果(=zabbixのDBに格納したい値そのもの)です。 試しにアイテムのプロトタイプに{#DS_NAME}とだけ書いてもエラー(設定不可)でした。 ※もしくはLLDやアイテムのプロトタイプ以外にやり方がありますか? よろしくお願いいたします ### 補足情報(FW/ツールのバージョンなど) ・CentOS7 64bit ・zabbix 4.0 ・ESXi6.7
回答: ローレベルディスカバリでのjsonデータは、監視対象項目を見つけるためのデータです。上記でのdatastore-01あたりは、監視データではなくて監視対象のなにかですね。これが動的に変更されても追従してくれるってのがLLDです。 https://rougeref.hatenablog.com/entry/20180308/1520560172 ここに特定のディレクトリ以下のディスク使用量をLLDで監視するときの設定例がありますので参考にしてみてください。