何らかの値が出力されたら障害とするトリガーの設定方法について
お世話になっております。
Zabbixバージョン: 2.2.10
あるアイテムで、該当のログがあったらログ出力(echoで出力)するスクリプトを実行させているのですが、
このアイテムのトリガーで、何らかの値が出力されたら障害としたいのですが、上手くいきません。
条件式に「期間Tの間にデータが存在しない N NOT 1、それ以外 N NOT 0」があったので、以下のようにしたりしたのですが、
値が出力されても、値がなくとも障害になりませんでした。
{Zabbix server:check.sh["hoge1","hoge2"].nodata(0)}=0
何らかの値が出力されたら障害とするにはどうしたらよいのでしょうか。
TNK - 投稿数: 4769
check.shの中身を存じ上げませんが、その何かを実行したときに
標準出力に出力されたかどうかということを確認されたいのです
か?
check.shというのをシェルスクリプトか何かを実行するために設定
されたUserParameterだと仮定させて頂いて、それにもう一段かぶ
せて、出力された行数を返すようなアイテムにされてはいかがでし
ょうか?
そうすれば、0以外が返却されたら障害というトリガーの条件式に
することで対応できると思います。
heya - 投稿数: 319
あまり関係ないと思うのですが、 nodata() で指定できる秒数(上の書き方なら T に指定できる数)は30 以上です。
kasugai - 投稿数: 72
スクリプトでは、「AWS Service Health Dashboard」というところから、AWSのサービスに異常が発生していないかを確認し、
異常があれば、内容を以下のような形で標準出力で出してアイテムに登録しています。
出力結果の例)
2015-10-24 03:08:00 +0900 Service is operating normally: [RESOLVED] EC2 console affected in US-EAST-1
現在はサービス異常がないので、文字列"test"をechoで出力させたりしています。
nodataを60にしてみたのですが、値"test"があっても無くても、障害のステータスになっていました。
{Zabbix server:check.sh["hoge1","hoge2"].nodata(60)}=0
書き忘れていたのですが、トリガーは障害イベントを継続して生成が有効になっています。
[最新データ]から[ヒストリ]を確認すると、ちゃんと値"test"があったり、なかったりしています。(画像を添付しました)
値"test"があっても無くても、障害のステータスになるのが気になります。
今回のトリガーの意味としては、以下だと思っているのですが、違うのでしょうか。
・キー(check.sh["hoge1","hoge2"])のアイテムで60秒以内にデータがあれば異常とする
TNK - 投稿数: 4769
2016/01/22 10:15:26以前の値の部分に何も表示されていないよう
に、空の行が取得されているのであれば、空行として値は取得でき
ているので、nodata()は使えません。
nodata()は、値自体が取得できない状態が継続しているかどうかを
判断する時に利用します。
出力されるパターンとして、
以外にどのようなパターンがあるかにもよりますが、例えば、取得
された行に対して、特定の文字列が含まれていたら障害とするよう
なトリガーにされてはいかがでしょうか?
複数パターンがあるなら、複数トリガーを設定しても良いでしょう。
例:
{Zabbix server:check.sh["hoge1","hoge2"].str(Service)}=1
{Zabbix server:check.sh["hoge1","hoge2"].str(RESOLVED)}=1
kasugai - 投稿数: 72
出力されるログの頭が、おそらく 2016-~ になるので、それで引っかけるか、正規表現とかで何とかできないか検証してみます。