お世話になります。
Zabbix 2.2 の環境です。
CPU使用率が5分間80%以上継続したら障害検知をしたいです。
ドキュメントを調べたら以下を見つけましたが やりたいことを満たしません。
system.cpu.util[,,]
mode - 可能な値: avg5 (5分間の平均)
どなたか良い方法をご存知でないですか?
よろしくお願いいたします。
>CPU使用率が5分間80%以上継続したら障害検知をしたい まず、CPUの使用率については、system/user/idle/nice/steal などに項目が分かれています Linux の top コマンド等で上方に表示されている sy,ni,id,wa 等の各項目とそれぞれ対応しています 細かな指定を与えなければ、system.cpu.util[,user,avg1] と指定した場合と同じ値が得られるようです
仰っている条件の「5分間80%以上継続したら」がどのような意図を持っているのかによって 設定すべきアイテム・トリガーは変わってくると思います
#ユーザ時間だけを監視しても、IOWait等でパフォーマンスが落ちた場合には気づくことができませんので‥
avg1 のような粒度の細かい計測を30秒・1分など短い間隔で取得した値をベースに、 履歴の値を5分間ぶんだけ総合判断して「5分間」にも解釈できますし avg5 の値を5分に1度だけ収集して、1度の取得値だけで判断しても「5分間」と言えるでしょう
#監視間隔が長ければ、データ件数を減らすことができるので、サーバ側のスペックやDB容量の負担は軽くできます #逆に、短い間隔で監視していれば、異変が発生したときに、いち早く気づくことができる場合もあります
複数の値を判定基準にする場合、「常に閾値を上回っていたら‥ or 1度でも上回っていたら‥」で 条件式も変わってきます
例)30秒に1度・1分に1度など、短い間隔でアイドル時間データを収集させておいて、 アイドル時間の割合から、逆説的に処理に使い潰されているCPU時間を想定して利用 すなわち、アイドル時間が20%を切っていたら利用率80%とみなして判定
#最小値が20未満だったら‥→一瞬だけでも80%を超えるような事態があれば、トリガー発動 {host:system.cpu.util[,idle,avg1].min(300)}<20
#平均値が20未満だったら‥→80前後を推移していて、時々80を切っていても、おおよそ80を超える利用率だったら、トリガー発動 {host:system.cpu.util[,idle,avg1].avg(300)}<20
#最大値が20未満だったら‥→常に80を超える利用率だった場合のみ、トリガー発動 {host:system.cpu.util[,idle,avg1].max(300)}<20
どういう意図で、どの程度の「値の収集」「データ量」までが許容できて、どの程度のポリシーで障害だと判断させるか? 設定すべき内容はさまざまです
出来る限り、検証用の環境などを用意して、色々試されることをお薦めします
アカウント名 tanishige
本名 森
Zabbix関連
fripper - 投稿数: 495
>CPU使用率が5分間80%以上継続したら障害検知をしたい
まず、CPUの使用率については、system/user/idle/nice/steal などに項目が分かれています
Linux の top コマンド等で上方に表示されている sy,ni,id,wa 等の各項目とそれぞれ対応しています
細かな指定を与えなければ、system.cpu.util[,user,avg1] と指定した場合と同じ値が得られるようです
仰っている条件の「5分間80%以上継続したら」がどのような意図を持っているのかによって
設定すべきアイテム・トリガーは変わってくると思います
#ユーザ時間だけを監視しても、IOWait等でパフォーマンスが落ちた場合には気づくことができませんので‥
avg1 のような粒度の細かい計測を30秒・1分など短い間隔で取得した値をベースに、
履歴の値を5分間ぶんだけ総合判断して「5分間」にも解釈できますし
avg5 の値を5分に1度だけ収集して、1度の取得値だけで判断しても「5分間」と言えるでしょう
#監視間隔が長ければ、データ件数を減らすことができるので、サーバ側のスペックやDB容量の負担は軽くできます
#逆に、短い間隔で監視していれば、異変が発生したときに、いち早く気づくことができる場合もあります
複数の値を判定基準にする場合、「常に閾値を上回っていたら‥ or 1度でも上回っていたら‥」で
条件式も変わってきます
例)30秒に1度・1分に1度など、短い間隔でアイドル時間データを収集させておいて、
アイドル時間の割合から、逆説的に処理に使い潰されているCPU時間を想定して利用
すなわち、アイドル時間が20%を切っていたら利用率80%とみなして判定
#最小値が20未満だったら‥→一瞬だけでも80%を超えるような事態があれば、トリガー発動
{host:system.cpu.util[,idle,avg1].min(300)}<20
#平均値が20未満だったら‥→80前後を推移していて、時々80を切っていても、おおよそ80を超える利用率だったら、トリガー発動
{host:system.cpu.util[,idle,avg1].avg(300)}<20
#最大値が20未満だったら‥→常に80を超える利用率だった場合のみ、トリガー発動
{host:system.cpu.util[,idle,avg1].max(300)}<20
どういう意図で、どの程度の「値の収集」「データ量」までが許容できて、どの程度のポリシーで障害だと判断させるか?
設定すべき内容はさまざまです
出来る限り、検証用の環境などを用意して、色々試されることをお薦めします