毎日深夜のバックアップ処理のために CPU使用率が上がり I/O系 のアラートが発報することがあり、原因はわかっているので止めたいと思って対処しました。監視ツールはzabbixです。
指定した時間帯のトリガーを無効にする
アラート通知自体はアクションの設定で行いますが、障害として検知するかどうかはトリガーに指定した内容によって決まります。
例えば、メモリの使用率が80%を上回ったら障害と検知するのか、90%を上回ったらなのか、という具合です。
また、トリガーには複数の条件を組み合わせることができます。メモリ使用率の監視を例に挙げると
正常時は使用率が80%を上回ったら障害として検知する
障害状態(使用率80%を上回っている状態)では、使用率が70%を下回ったら復旧とみなす
こういう設定ができることによって使用率が閾値(80%)前後を推移している場合に、障害アラートと復旧アラートが頻繁に発報されるのを防ぐことができます。
これを応用して、深夜2時から5時までは障害として検知しない、というトリガー条件式を設定したいと思います。
1 |
({TemplateName:system.cpu.util[,iowait].avg(5m)}>30) and ((({TemplateName:system.cpu.util[,iowait].time(0)} >= 000000) and ({TemplateName:system.cpu.util[,iowait].time(0)} <= 020000)) or (({TemplateName:system.cpu.util[,iowait].time(0)} >= 050000) and ({TemplateName:system.cpu.util[,iowait].time(0)} <= 235959))) |
Zabbixに設定するときは1行で書く必要がありますが、わかりずらいのでインデント付きで記載してみます。
1 2 3 4 5 6 7 |
({TemplateName:system.cpu.util[,iowait].avg(5m)}>30) and ( ( ({TemplateName:system.cpu.util[,iowait].time(0)} >= 000000) and ({TemplateName:system.cpu.util[,iowait].time(0)} <= 020000) ) or ( ({TemplateName:system.cpu.util[,iowait].time(0)} >= 050000) and ({TemplateName:system.cpu.util[,iowait].time(0)} <= 235959) ) ) |
わかりやすく書くと以下のようになっています。
(もともとのトリガー条件)and((0~2時まで)or(5~24時まで))
結果として、2時から5時までは障害として検知しないことになりますが、正確には、0時~2時までと5時から24時までのあいだでトリガーの条件に引っかかったら障害として検知するというものです。
これで不要なアラート発報をとめられるぜ~
以上です。
↓↓↓ 持っていると便利な一冊。