テンプレートとリンクされたホスト数

お世話になります。

今、Zabbix2.4で環境を構築しているのですが、
特定のテンプレートまたはホストグループにリンクされたホスト数を数えて、
トリガーのアクションの条件に加える手段は無いのでしょうか。
Zabbixインターナルのzabbix[host]ですと有効なすべてのホストがカウントされてしまいます。

Zabbizアグリゲートで grpsum[グループ名,agent.ping,sum,]とすれば出来そうな気がするのですが、
試してもデータなしから進まず、仮に取れたとしてもagentのないホストが含まれないため、
より良い方法が知りたいのです。

お手数をおかけいたしますがご教示いただきたく。
よろしくお願い申し上げます。

コメント表示オプション

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

Zabbixの設定だけで値を取得する方法はすぐに思いつかなかったの
ですが、APIを利用すれば、テンプレートのIDやホストグループの
IDを指定してホストの一覧を取得できるので、外部スクリプトを利
用してAPIを呼び出すスクリプト実行して値を取得しても良いかも
しれません。

ちょっと試しただけで綺麗なコードはかけていないので、ヒントだ
け。
使ったZabbix APIは、

 user.authenticate (API呼び出しに必要なauthトークン取得)
 template.get (テンプレートのIDを取得するために)
 hostgroup.get (ホストグループのIDを取得するために)
 host.get

です。
curlとjqを組み合わせてhost.getで取得できた結果に対して、

 jq '.result | length'

でresultの件数を数えると実現できると思います。

ユーザー TNK の写真

Zabbixアグリゲートを利用して、特定のホストグループ内でZabbix
エージェントが起動しているホストの数という求め方でよければ、
以下のような設定で値を取得できると思います。

ex. ホストグループの名前が「Test group」

 タイプ:
  Zabbixアグリゲート
 キー:
  grpsum["Test group","agent.ping",last,0]

ご教示ありがとうございます。

APIを使った方法はまだ検討していませんでした。
ありがとうございます。少し試用してみて、旨くいきそうなら、
真面目にAPIでくみ上げることを検討してみます。

Zabbixアグリゲートは始めに書きましたとおり、検討したのですが、
やはりZabbixエージェントがないとダメというのが少々使いにくい所です。
現時点は、問題ないのですがゆくゆくはネットワーク機器も対象にしたいと
考えておりますので。

進展があれば、ご報告いたします。
ありがとうございます。