PING死活監視のメール送信タイミング

いつもお世話になっております。

表題の件について質問です。

現在サーバのPING CHECKのトリガーとして
「{hostname:fping.sh [対象IPアドレス].max(60)}=0」
と設定しております。

ちなみに"fping.sh"内には、
「ping 対象IPアドレス -c1 -w1 | grep icmp_seq | wc -l」
と記述しております。

ここで質問ですが、上記のようなトリガーの条件式の場合、
1.メール送信のタイミングは60秒ごとに値を判断して正常or障害となる
2.それとも60秒という期間内でリアルタイムに判断して正常or障害となる

このうちどちらが正しいでしょうか?

コメント表示オプション

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

takatomatoさん

1.メール送信のタイミングは60秒ごとに値を判断して正常or障害となる
2.それとも60秒という期間内でリアルタイムに判断して正常or障害となる

ソースを読み切っていませんので大まかな説明になりますが…

■item設定
データを収集し、収集時刻を加えて各種historyテーブルに格納します。収集間隔はitem設定の「間隔」です。

■trigger設定
定期的に各種historyテーブルを検索し、trigger条件のon/offが変わるもの(または不明なもの)をイベントとしてテーブルに格納します。
例の「max(60)」ですが、historyテーブルに格納されたデータを検索して、前回監視から60秒間にイベントが発生しているかの判断になります。

■action
イベントテーブルに格納された情報がactionに合致したものについてメールやコマンド実行を行います。

なので、1や2のような動作にはならないと思います。

ユーザー takatomato の写真

KAZさん

ご回答ありがとうございます。

>ソースを読み切っていませんので大まかな説明になりますが…
ご提供しました情報が少ない中、ご丁寧にお答え頂いてありがとうございます。

各設定について記載致します。

■ITEM
タイプ:External check
キー:fping.sh [対象ホスト]
データ形式:数値(integer 64 bit)
更新間隔 (秒):30
New flexible interval:遅延50期間 1-7,00:00-23:59
ヒストリ保存期間 (日):60
トレンド保存期間 (日):14
Show value:Service State
Applications:なし

■Trigger
名前:ping check
条件式:{対象ホスト:fping.sh [対象IPアドレス].max(60)}=0

■Action
Event source:Trigger
Type of calculation:(A)and(B)
Conditions:(A)HOST=対象ホスト
      (B)Trigger value = "障害"
メール本文:
MESSAGE :{TRIGGER.NAME} {TRIGGER.STATUS}
DATE :{DATE} {TIME}
HOSTNAME :{HOSTNAME}
EVENT :{EVENT.ID}
TRIGGER :{TRIGGER.KEY}
SEVERITY :{TRIGGER.SEVERITY}
VALUE : {ITEM.LASTVALUE}

以上のような設定になっております。

KAZさんのご説明をもとに考えると、私の現在の設定では
「30秒の間隔で収集して、前回監視から60秒間にイベントが発生しているかの判断(過去2回分)しイベント発生を確認し、
"障害"と判断されたらメールが送信される」
という認識で正しいでしょうか?

ユーザー KAZ の写真

takatomatoさん

「30秒の間隔で収集して、前回監視から60秒間にイベントが発生しているかの判断(過去2回分)しイベント発生を確認し、 "障害"と判断されたらメールが送信される」

「"障害"と判断されたら」の部分ですが、「障害じゃない状態」→「障害」に切り替わったらが正確かと。

前回障害を検知し、今回も障害を検知した場合は、状態が変わらないのでactionは起きません。

ログの監視はログが出ないときでも状態を回復するようにnodata()を使って状態を回復させるように設定することが多いようです。

ユーザー takatomato の写真

KAZさん

>「"障害"と判断されたら」の部分ですが、「障害じゃない状態」→「障害」に切り替わったらが正確かと。
>前回障害を検知し、今回も障害を検知した場合は、状態が変わらないのでactionは起きません。

上記の内容で理解致しました。

>ログの監視はログが出ないときでも状態を回復するようにnodata()を使って状態を回復させるように設定することが多いようです。

こちらについては、よく理解できていません。
"アクティブチェックだけを使用してホストの可用性を監視するトリガー関数"がnodata()というのは、マニュアルにて確認致しました。

「nodata()を使って状態を回復させるように設定する・・・」とありますが、もしよろしければもう少し具体的に教えていただけますでしょうか。

私が提供いたしました情報でご説明していただけると幸いです。

ユーザー KAZ の写真

takatomatoさん

こちらについては、よく理解できていません。
"アクティブチェックだけを使用してホストの可用性を監視するトリガー関数"がnodata()というのは、マニュアルにて確認致しました。

「nodata()を使って状態を回復させるように設定する・・・」とありますが、もしよろしければもう少し具体的に教えていただけますでしょうか。

監視間隔にデータが無かったら偽となる条件を組んでやれば、良いです。(※:監視間隔はnodata関数の仕様上30秒以上)

<code>
({ホスト:log[ログファイル].nodata(監視間隔)}=1)&({ホスト:log[ログファイル名].str(監視キーワード)}=1)
</code>

triggerは組み方次第で色々できますので、色々お試し下さい。

ユーザー takatomato の写真

KAZさん

何度もご回答していただきまして、ありがとうございました。
とてもご丁寧な説明で大変感謝しております。

色々と試してみます。