WindowsサーバのCPU使用率0%が続いた時、異常通知を上げるには

Zabbix入門者です。
CPU使用率が5分間隔平均位で、CPU使用率0%が続いた時、異常通知を出すにはどうしたらよいでしょうか?
基礎的な質問で、申し訳ありません。

よろしくお願いいたします。

コメント表示オプション

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

広瀬です

申し訳ありませんが、お使いのZabbixサーバのOS種類、バージョン、
並びにZabbixのバージョン、及び監視対象のWindowsOSについて
ご回答お願いします。

また、現状どこまで設定されており、どこから設定に迷われている
のか詳細にご記入頂くと回答しやすいかと思います。

お言葉足らずで申し訳ありません。

Zabbixプロキシサーバ:CentOS 6.8
ZabbixDBサーバ:CentOS6.7
Zabbix監視サーバ:CentOS6.7
Zabbixのバージョン:3.0

上記で、監視対象がWindows2008ServerR2で、常にログインした状態で、Excelが起動している状態が通常となります。
つまり、Excelが動作するという事は、CPU使用率が常時30%~40%を遷移します。

ただ、サーバが再起動また、ユーザがログアウトしたら、ログアウトした状態になるので、Excelが起動しません。CPU使用率が0%になります。
この時、異常通知を出して、気がついたときに、すぐにログイン処理を実施して業務が止まらないようにしたいと考えております。

設定等はどうやったらいいかご教授頂けたらと思います。もちろん、監視対象のサーバはエージェントは入っており、他の監視はしております。
ただ、私はエージェント導入後の設定などは詳しくは無いので、恐らく、関数を組んだり?するのではないかと思っております。

お手数ですが、ご教授頂けると幸いでございます。よろしくお願いいたします。

ユーザー heya の写真

書かれたことにそのまま答えるなら、
アイテム:更新間隔を300秒にして、system.cpu.util[,system,avg5] を使って値を取る(※)
トリガー:条件式で count を使う(例:{ホスト:system.cpu.util[,system,avg5].count(#2,lt,1)}=2 →この場合、二回連続で 1 より小さければ障害)
という感じになると思います。
※Windows の場合 type に system しか使えないのですが、具体的にこれがどういう値になるのか、私は試したことがないのでよく知りません。望み通り 0 と出るのかどうか・・・。

これは 2.2 のマニュアルですが、今の範囲の内容なら 3.0 でもほとんど同じです。
初心者ということなので日本語の方が分かりやすいと思うので。
https://www.zabbix.com/documentation/2.2/jp/manual/config/items/itemtype...
https://www.zabbix.com/documentation/2.2/jp/manual/appendix/triggers/fun...

ただ、Excel が起動しているかどうかを見たいだけであれば、アイテムを proc.num[EXCEL.EXE] とすればいいんじゃないでしょうか。これが 0 なら起動していないということです。
#これも試してはいませんが。

heya様、丁寧なご回答有難うございます。

実施方法がわかりましたが、トリガーで、{ホスト:system.cpu.util[,system,avg5].count(#2,lt,1)}=2がエラーになりまして、別途以下の方法で対処する事にしました。
トリガーを{ホスト名:system.cpu.util[,system,avg1].avg(5m)}<3 でCPU使用率が3%より小さくなったら異常通知を出すように設定しました。

ドキュメントのURLも大変参考になりました。以上です。

ユーザー karna の写真

>実施方法がわかりましたが、トリガーで、{ホスト:system.cpu.util[,system,avg5].count(#2,lt,1)}=2がエラーになりまして、別途以下の方法で対処する事にしました。

マニュアルにもありますが、count関数の引数は、
 秒または#データ数
 条件文字列または数値
 演算子(条件が数値の場合のみ)
 タイムシフト
の順で指定します。

(略).count(#2,lt,1) の場合、過去2つのデータの中に、lt という文字列が・・・ということになりますが、
次の 1という演算子はありませんし、文字列に対しての指定になるので、エラーとなります。

それはさておき、ログインしていないからと言って、CPU使用率が低いとも限らないので、heyaさんと同じく、プロセスの起動を監視するか、
ある程度長く監視データを集めて、挙動を見極めて閾値を設定しないと、無駄なアラート、あるいは見過ごしが生じると思います。

ユーザー heya の写真

補足ありがとうございます。
そうですね、count のパラメータの順番、書き間違えていたようですね。すみません・・・。

wakaba様、karna様、heya様、情報有難うございます。

プロセスを監視する事にしました。私はアイテムとトリガーの組み合わせ自体の意味すら、わかっていなかったようです。。。
大変勉強になりました。なお、実際にはExcelを動作させるのではなく、JAVAから起動して処理されているプログラムでしたので、以下のように実施しました。
{ホスト名:proc.num[java.exe].avg(300)}=0
とりあえず、こちらで監視したいと思います。

ユーザー kaeru の写真

>ひろ様
余計なお世話かもしれませんが、
今回の内容的にプロセス数をavg(平均)で取るのは少々おかしい気がします。

・トリガー条件式:{ホスト名:proc.num[java.exe].avg(300)}=0
式的には150秒を超える期間、java.exeが0だった場合に障害となりますが、
何となくご質問文から300秒間、プロセス数が0だったら障害としたいような意図が見えますので、
・トリガー条件式:{ホスト名:proc.num[java.exe].max(300)}=0
 →300秒間で、java.exeのプロセス数が0だったら障害
とやったほうが良いのではないでしょうか。

kaeru様

貴重なご意見大変助かります。

>・トリガー条件式:{ホスト名:proc.num[java.exe].max(300)}=0
> →300秒間で、java.exeのプロセス数が0だったら障害
>とやったほうが良いのではないでしょうか。

→確実に上記の意図で実施したかったです。
 他のトリガーで利用されていたので、avgを利用しておりました。

ご教授頂き、有難うございました。今後とも、よろしくお願いいたします。