はじめまして
Zabbixバージョン:2.0.0
現在、下記のようなプロセス数監視トリガーを設定しています。
{proc.num[******].last(0)}<1
(※アイテム更新間隔:60秒)
このトリガーに
「日曜日のAM3:00~3:10に限り障害検知しないようにする」
という条件文を組み込みたいと考えています。
時間帯の指定はtime関数を使えばいいと思うのですが、
「日曜日のみ」という条件をそこに噛ませるにはどうしたら良いのでしょうか。
例外の更新間隔の設定は使わず、あくまでトリガー条件式での対応を考えています。
よろしくお願いいたします。
KAZ - 投稿数: 1085
SKさん
dayofweekを使ってみてはどうでしょう?
以下、1.8マニュアルですが、参考になるかと…
https://www.zabbix.com/documentation/jp/1.8/manual/config/triggers
SK - 投稿数: 8
KAZ様
返信ありがとうございます。
dayofweekを使用すると、以下のような感じでしょうか。
{proc.num[******].last(0)}<1
& ({proc.num[******].dayofweek(0)}=7
& ({proc.num[******].time(0)}<030000 | {proc.num[******].time(0)}>031000))
私の予測ですが、これですと日曜日にしかトリガーが稼動しなくなってしまう気がします。
恐縮ですが、具体的な設定例など提示していただけると幸いです。
(本来ならこちらで検証すべきですが、十分な時間がとれないもので…)
よろしくお願いいたします。
KAZ - 投稿数: 1085
SKさん
試してないですが、時間の様に月(1)~土(6)とするか…
{proc.num[******].last(0)}<1
& ({proc.num[******].dayofweek(0)}>0 | {proc.num[******].dayofweek(0)}<7)
& ({proc.num[******].time(0)}<030000 | {proc.num[******].time(0)}>031000))
日曜日以外とすれば良いのでは?
{proc.num[******].last(0)}<1
& ({proc.num[******].dayofweek(0)}#7)
& ({proc.num[******].time(0)}<030000 | {proc.num[******].time(0)}>031000))
SK - 投稿数: 8
KAZ様
設定例ありがとうございます。
>時間の様に月(1)~土(6)とするか…
>日曜日以外とすれば良いのでは?
1番目の設定例ですが、「月~土曜日、AM3:00~3:10の間検知しない。日曜日はトリガー稼動しない」となってしまいませんでしょうか。
dayofweekについて理解不足で申し訳ないのですが、トリガーの稼動をその曜日だけに限定してしまう、というような
挙動をするのでしょうか。
そうであれば、2番目の設定例も同様の結果となってしまう気がします。
目指している結果について補足しますと、
「日曜日のAM3:00~3:10の10分間のみ障害検知しない。その10分以外は通常検知」
ということです。
dayofweekの挙動を詳しく知りたいのですが、検索しても有用な情報がほとんどないですね…
kng - 投稿数: 30
横から失礼します。
({proc.num[httpd,,,].last()}=0)
&
( ({proc.num[httpd,,,].dayofweek(0)}=7
& {proc.num[httpd,,,].time(0)}<031000
& {proc.num[httpd,,,].time(0)}>030000) = 0 )
で、いけませんか?
※修正
KAZ - 投稿数: 1085
勘違いしてました。
「日曜日のAM3:00~3:10に限り障害検知しないようにする」は
「月~土は監視する。
日曜日は0時から3時まで、3時10分から23時59分(59秒)まで監視する」
となりますので、そのまま書けば良いです。
下記ですね。(見やすいようにインデント付けました。)
dayofweekの挙動を詳しく知りたいのですが、検索しても有用な情報がほとんどないですね…
オープンソースなので、そういう時は試した方が早いです。
SK - 投稿数: 8
kng様
設定例ありがとうございます。
すごくシンプルな条件文ですね。是非試させていただきます。
お手数でなければ、時間指定の部分の記述について簡単に解説いただけないでしょうか。
kng - 投稿数: 30
すみません。
携帯からの投稿なので、上の設定例はおかしいので、以下に日本語で書きますね。
({プロセス}がない)&
(((曜日が日曜日)&((時間が3時より大きい)&(時間が3時10分より小さい))の結果が0)
を条件としています。
日曜日であり、且つ該当時間を()でくくったばあい、その結果が真であれば条件一致ですので、結果をさらに評価し、偽である場合に一致させています。
帰宅後、ちゃんと書き直しますね。。。
kng - 投稿数: 30
({proc.num[httpd,,,].last()}=0)
&
(({proc.num[httpd,,,].dayofweek(0)}=7 &{proc.num[httpd,,,].time(0)}<031000 &
{proc.num[httpd,,,].time(0)}>030000 ) = 0 )
kng - 投稿数: 30
期間を特定して、『=0』で否定することで、実現できます
SK - 投稿数: 8
kng様
(({proc.num[httpd,,,].dayofweek(0)}=7 <031000 >030000 ) = 0 )
この部分は、「日曜日の、AM3:00~3:10の間でない場合」という意味であっているでしょうか。
仮に、最後の「=0」を「=1」に変えると、「日曜日の、AM3:00~3:10の間である場合」となるのでしょうか。
kng - 投稿数: 30
ご認識の通りです
否定しない場合は、『=0』いりません。
dayof~で曜日を特定
timeで時間を指定
を全てandとすることで、特定の時間にマッチとし、
その結果を否定することで、除外しています
KAZ - 投稿数: 1085
kngさん
すっきりして見やすいですね!
kng - 投稿数: 30
KAZさん
ありがとうございます。
評価式を評価するのは邪道ですかね?(笑)
KAZ - 投稿数: 1085
kngさん
私の個人的意見ですが、理解して使うなら邪道も正道もなく、それは「ロジック」かと…A(^^;
なので、それでトリガー式が短くなるならありでは?
kng - 投稿数: 30
KAZさん
トリガー式が短くなるのはいいのですが、引き継ぎが控えてたりすると、
説明が大変だったりするので、ナレッジ共有とかには気を使います・・・
シンプルに書くのがベターなのですが、誰が見ても分かるというのも重要で
さじ加減が難しいですね。
SK - 投稿数: 8
kng様
なるほど、承知しました。
こちらの条件文に関しても試させていただこうと思います。
ご丁寧にありがとうございました。
SK - 投稿数: 8
KAZ様
設定例ありがとうございます。
月~土曜日と、日曜日の10分以外をor条件で結べばよかったのですね。
解決できそうです。感謝いたします。
ちなみにですが、「日曜日は0時から3時まで、3時10分から23時59分(59秒)まで監視する」の部分は
以下のようにしても問題ないでしょうか。(すみません、ちょっと表示がおかしいですが…)
({proc.num[******].time(0)} >= 000000 < 030000) |
({proc.num[******].time(0)} > 031000 <= 235959)
↓
{proc.num[******].time(0)}<030000 | {proc.num[******].time(0)}>031000
KAZ - 投稿数: 1085
SKさん
あー、そうですね。
問題ないですね。A(^^;
SK - 投稿数: 8
KAZ様
ご丁寧にありがとうございました。