この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の8日目です。
それでは8日目は check-procs
です。
check-procsはプロセスを監視してくれるプラグインです。
インストールと設定手順
至れり尽くせりなので公式ドキュメントに手順が書いてあるのじゃ!!
使い方
至れり尽くせりなので公式ドキュメントに使い方が書いてあるのじゃ!!
オプション一覧
公式ドキュメントに無いので追加しました。
# check-procs -h Usage: check-procs [OPTIONS] Application Options: -w, --warning-over=N Trigger a warning if over a number --warn-over=N (DEPRECATED) Trigger a warning if over a number -c, --critical-over=N Trigger a critical if over a number -W, --warning-under=N Trigger a warning if under a number (default: 1) --warn-under=N (DEPRECATED) Trigger a warning if under a number (default: 1) -C, --critical-under=N Trigger a critial if under a number (default: 1) -m, --match-self Match itself -M, --match-parent Match parent -p, --pattern=PATTERN Match a command against this pattern -x, --exclude-pattern=PATTERN Don't match against a pattern to prevent false positives --ppid=PPID Check against a specific PPID -f, --file-pid=PID Check against a specific PID -z, --virtual-memory-size=VSZ Trigger on a Virtual Memory size is bigger than this -r, --resident-set-size=RSS Trigger on a Resident Set size is bigger than this -P, --proportional-set-size=PCPU Trigger on a Proportional Set Size is bigger than this -T, --thread-count=THCOUNT Trigger on a Thread Count is bigger than this -s, --state=STATE Trigger on a specific state, example: Z for zombie -u, --user=USER Trigger on a specific user -U, --user-not=USER Trigger if not owned a specific user -e, --esec-over=SECONDS Match processes that older that this, in SECONDS -E, --esec-under=SECONDS Match process that are younger than this, in SECONDS -i, --cpu-over=SECONDS Match processes cpu time that is older than this, in SECONDS -I, --cpu-under=SECONDS Match processes cpu time that is younger than this, in SECONDS Help Options: -h, --help Show this help message
ベーシックなプロセス監視
まずやりたいことと言えばプロセスの死活監視です。
公式ドキュメントを読んだ方はご存知の通り、とても簡単に check-procs --pattern プロセス名
実現できます。
--pattern
はなんと正規表現でマッチングできますので --pattern .*.php
のようなプロセスの監視も可能です。
ちなみにオプションにもあるとおりPIDやPPIDでも監視できます。
ここまで書いて翻訳されてる記事を見つけました。
すごく丁寧に書いてあるので必読です!!
プロセスの実行時間を監視したい
次に要望があるのはプロセスの実行時間の監視だと思います。
例えば非同期で処理されるプロセスが長時間生き残っている場合はアラートを上げたい場合や逆にMySQLのプロセスが勝手に再起動したことを知りたいなどの場合です。
この場合は --esec-over
や --esec-under
を使うと監視できます。
--esec-over
はプロセス実行時間[秒]が指定値より 大きいプロセスを検索して --esec-under
は小さいプロセスを検索します。
死んだプロセスは勝手に再起動してほしい
わかる、めちゃめちゃやりたいし、Apacheとか死んでも再起動して欲しい。 安心してください、mackerel-agentのチェック監視の機能と組み合わせると出来ます!!
実際に試して頂いてる例もあるのでご確認ください。
この他にも長時間生きてるプロセスをkillしたりなど応用が効くテクニックです!! ただし実行しているプロセスが例えばBatchなどでkillしたことでデータが破損するなどもあり得るので使い方には注意しましょう。
プロセス監視は無限の可能性
この他にもプロセス監視は色んな可能性があります。 実際に多くの事例がありますのでみなさんも検索してみたり、自分なりのアレンジをしてみてください!!
タブ、吹き飛ばすことありますよね…。 それもこれでアラートが来るので安心です!!!
それでは明日は知ってると得するSocketの監視です。