mackerelでゾンビプロセスをチェックする
はじめに
あるプロセスがゾンビプロセスの場合に、mackerelでチェックして通知するのに少しハマったので、覚書。
まずゾンビプロセスのチェックの場合、以下のような設定をします。
- 1件以上の場合、warningかcriticalで通知。(件数は2件以上でも、10件以上でもよい。)
- 0件の場合、通知しない。
通常ゾンビプロセスがない場合は正常なので通知はしません。
ゾンビプロセスのチェック
ゾンビプロセスのチェックをするには、-s (または--state)のオプションを利用します。
ゾンビプロセスの場合は「Z」を指定します。
あと、1件以上でwarning、2件以上でcriticalの通知をしたいので、その設定も一緒します。
check-procs -p 'hoge' -s Z -w 0 -c 1 -u hoge-user
これでゾンビプロセスが存在する場合、通知がきますが
このままだとゾンビプロセスが0件の場合、criticalの通知が来ます。
(warning-under、critical-under共にデフォルトが1のようです。)
ゾンビプロセスが0件の場合は、正常とする
困ったと思って、macherelのソースを見たところ以下のような実装になっていました。
if opts.CritUnder != 0 && count < opts.CritUnder ||
opts.CritOver != nil && count > *opts.CritOver {
result = checkers.CRITICAL
} else if opts.WarningUnder != 0 && count < opts.WarningUnder ||
opts.WarningOver != nil && count > *opts.WarningOver {
result = checkers.WARNING
}
return checkers.NewChecker(result, msg)
プロセスチェックの仕様で、warning-under と critical-underが0の場合は
0件のチェックをしないようなので、以下の設定にします。
check-procs -p 'hoge' -s Z -w 0 -c 1 -W 0 -C 0 -u hoge-user
これで、ゾンビプロセスの通知ができるようになりました。