複数ホスト間の計算アイテム
いつもお世話になっております。
Zabbix 5.4.3
監視対象CentOS7
当フォーラムでduコマンドを利用したディレクトリサイズ取得に関して質問しました。
http://www.zabbix.jp/node/5663
データは正常に取れております。
このデータをホストグループに所属しているホストで合算しようとしています。
5.4からZabbixアグリゲートが使えなくなったとの情報が有りましたので
ドキュメントに従って計算アイテムから設定を行いました。
ディスカバリルールのアイテムのプロトタイプに設定しています。
https://www.zabbix.com/documentation/5.4/en/manual/config/items/itemtype...
条件式:
sum(last_foreach(/*/
system.run[/usr/bin/du /var/spool/xxx/yyy/zzz/{#DOMAIN} | tail -n 1 | awk '{ print $1 }']?[group=“group”]))
保存しようとするとエラーになります。
パラメータ "/1/params"が正しくありません:"sum(last_foreach(/*/
system.run[/usr/bin/du /var/spool/xxx/yyy/zzz/{#DOMAIN} | tail -n 1 | awk '{ print $1 }']?[group=“group”]))"から始まる条件式が正しくありません。
LLDマクロの部分に実際のディレクトリを入れてもエラーでした。
試行錯誤しましたがどの部分が間違っているのか分からず。
どうぞよろしくお願いします。
TNK - 投稿数: 4769
恐らく、特殊記号などがバリデーションチェックで引っかかってい
るのではないでしょうか?
UserParameterなどを使用してアイテムキーを特殊記号を含まない
よう簡略化して計算アイテムの式を作成するようにしてみてはいか
がでしょうか?
MSG - 投稿数: 68
ありがとうございます。
UserParameterを利用して引数をLLDで渡すようにしたところ、計算式の保存は出来る様になりました。
sum(last_foreach(/*/domain.recordings.size[{#DOMAIN}]?[group="group-name"]))
domain.recordings.sizeがkeyで{#DOMAIN}がLLDで得られる引数です。
ホスト毎のデータは取れているのですが、合算のテストを実行すると以下エラーになります。
Cannot evaluate function: no data for query at "last_foreach(/*/domain.recordings.size[{#DOMAIN}]?[group="group-name"]))"
データがないと言われている様です。
group-nameは実際のホストグループにしてあります。
引き続き調査します。
MSG - 投稿数: 68
計算アイテム&アグリゲートアイテムで引数にLLDマクロを使う際に、問題が有る様です。
単純に引数無しでキーで値を取る場合は、合算データが取れます。
本家zabbix.comフォーラムでも聞いてみましたが、同じく困っている人が要る様です。
https://www.zabbix.com/forum/zabbix-help/447342-about-aggregate-calculat...
zabbix.comのブログで5.4でグループにマクロを使っているサンプルは有りました。
https://blog.zabbix.com/triggers-calculated-and-aggregated-items-in-zabb...
TNK - 投稿数: 4769
記載されている情報だけでは、どのように設定されているのかが理
解できていません。
ディスカバリルール内に設定するのは、ホスト内のアイテム生成で
すので、ホストグループをまたぐようなアイテムは作成できないと
思います。
別途、仮想ホストを作成して、{#DOMAIN}のリストを取得するよう
なものを用意して、LLDで各ドメイン毎のアイテムを生成するよう
な工夫が必要となるのではないでしょうか。
MSG - 投稿数: 68
ホスト内にドメインA,B,C,Dが有り、それぞれの通話録音サイズをLLDで取得しています。
domain.recordings.size[{#DOMAIN}]
複数のホストに同じドメインがクラスターで存在していて、
ホストグループ内のホストでドメインAのデータを合算、Bのデータを合算と言った事がしたいです。