よしだのブログ

サブタイトルはありません。

CPU監視について、下がった場合の監視も必要。

お客様から、サーバーのCPUの使用率が通常より低下しているという連絡が来て、調べてみたらプロセスが落ちていたことが判明しました。幸いにも二重化していたし、プロセスの再起動で簡単に復旧しました。

今日は、システム監視の教訓の話です。

f:id:yoshi0309:20140204213824p:plain

理想は ”いつもと違う” 状態を検知できるか

システムの監視で、CPUの使用率は一般的にされると思うけど、通常は”上”、すなわち通常より高負荷になることを監視します。インターネットに公開されているサービスとかの場合、急なアクセス増に備える、もしくは、利用者の増加によるサーバーの増強時期の検知などが目的です。

一方で、そういう監視では、今回のように落ちたとかそういうケースは検知できない。

いろんな目的があって監視を設定するわけなんですけど、異常な状態を早急に発見する、という最も大事な目的を満たすには、高いとか低いとか、多いとか少ないとか、そういうことも大事だけど いつもと違う ということを定義し、検知できるかが大事だなーと教えられました。

具体的なやり方。

で、OSSの監視ツールであるところの zabbix でのやり方を調べてみたら、トリガーの条件に数値と不等号を設定できるので、例えば、25%以下になったら~、というような設定も簡単そう。以下参照。 http://d.hatena.ne.jp/shey_nassy/20120221

更に平均値よりも下回ったらーという、条件も設定可能。以下のトリガー関数の項を参照。 https://www.zabbix.com/documentation/jp/1.8/manual/config/triggers

パッケージ製品を使う場合にも有効。

今回の対象のプロセスは、パッケージ製品のプロセスで、動きがちょっと特殊で、親プロセスがいて、たくさんの子プロセスを起動したり停止したりを繰り返している、というものでした。子プロセスが正常に起動しなければ親プロセスは起動しているけれども、サービスが提供されていない状態になる。SNMPも提供されているんだけど、親プロセスの死活しか確認できず、ログで引っ掛けるにもログレベルが警告だったりと、結構イマイチ。

この製品の仕様がイマイチなのは置いておいて、こういうパッケージ製品は、提供されているログやSNMPでは、監視項目に漏れがあることはありがちな話なので、CPUの低下は警告とかでデフォルトで設定しておくのはいいアイディアかも知れない。