複数のホストからのステータスチェックを計算アイテムで実行したい
すみません、お知恵を貸してください。
使用しているversion等は以下の通りです。
zabbix_server (Zabbix) 3.0.16
ホストのA,B,Cでテンプレートを用いて以下のようなステータスチェックを行っています。
プロセスが存在していたらOK
プロセスが存在しない場合NG
今までは、OKであれば正常。
NGであればアクションを実行し通知等を行っていたのですが
1台の間欠障害では異常とせずこの例の場合2つのノードでNGが検出された場合のみ異常とする。
といった監視を行いたいと思っています。
zabbixアグリゲートを利用する為のホストを用意しているのでこのホストに計算アイテムとして
ホストA、B、CのOK/NGを取得しているアイテムでcountを使い最新の値がNGに等しい数を
アイテムとして登録することは可能でしょうか?
書きっぷりが理解していないのか現状1ノードでも取得ができていません。
count({"ホストA:Key.regexp(NG,#1)})
最新の取得データがNGであれば1になるようにして残りを足しこんでいければと考えています。
count({"ホストA:Key.regexp(NG,#1)}) + count({"ホストC:Key.regexp(NG,#1)}) + count({"ホストC:Key.regexp(NG,#1)})
この結果が2になった場合をトリガーで判定させるイメージなのですが。
yk_taiko - 投稿数: 184
計算アイテムで使えるのは【アイテム】で、【トリガー】ではないです。
(.regexp が入ることはないです)
3.0 でも count で "文字列一致(not正規表現)" なら検索できるので、
count 関数で処理してはいかがでしょうか。
count("ホストA:Key",#1,NG)+count("ホストB:Key",#1,NG)+count("ホストC:Key",#1,NG)
ちなみに、ホストA,B,C は完全に固定ですか?
流動的でないなら、計算アイテムとか使わずに直接トリガー作ってはどうでしょうか。
例えば.
({ホストA:Key.regexp(NG,#1)}+{ホストB:Key.regexp(NG,#1)}+{ホストC:Key.regexp(NG,#1)})>1
y-oga06 - 投稿数: 7
コメントありがとうございます。
使える関数を取り違えていたのですね。。
count関数での処理を確認してみます。
> ちなみに、ホストA,B,C は完全に固定ですか?
> 流動的でないなら、計算アイテムとか使わずに直接トリガー作ってはどうでしょうか。
完全に固定です。
サーバ台数は今後増加する可能性はありますがそれぞれのホストにアイテムとして登録しているため
トリガーを直接作るとアクションが余計に動いてしまうことを懸念していました。
※全体通してNGがN台になったら1アクションとしたい
そのため、計算アイテムで登録をしようかなと思った次第です。
yk_taiko - 投稿数: 184
複数のホストにまたがりますがトリガーとしては1つなので、
「継続して...」にチェックしていなければ、1回出たら復旧するまで出なくなりますよ。
y-oga06 - 投稿数: 7
なんだか色々勘違いしていたり認識不足なようです。
計算アイテムでの方式は問題ありませんでした。
トリガーで解決できるようであれば計算アイテム自体が不要となるので
合わせて確認して選択したいと思います。
コメント助かりました。
ありがとうございました。