そーだいなるらくがき帳

そーだいが自由気侭に更新します。

プロセスの監視 ~ check-procsを読み解く

この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の8日目です。

qiita.com

soudai.hatenablog.com

それでは8日目は check-procs です。

check-procsはプロセスを監視してくれるプラグインです。

github.com

インストールと設定手順

至れり尽くせりなので公式ドキュメントに手順が書いてあるのじゃ!!

mackerel.io

使い方

至れり尽くせりなので公式ドキュメントに使い方が書いてあるのじゃ!!

mackerel.io

オプション一覧

公式ドキュメントに無いので追加しました。

# 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でも監視できます。 ここまで書いて翻訳されてる記事を見つけました。 すごく丁寧に書いてあるので必読です!!

htnosm.hatenablog.com

プロセスの実行時間を監視したい

次に要望があるのはプロセスの実行時間の監視だと思います。 例えば非同期で処理されるプロセスが長時間生き残っている場合はアラートを上げたい場合や逆にMySQLのプロセスが勝手に再起動したことを知りたいなどの場合です。 この場合は --esec-over--esec-under を使うと監視できます。 --esec-over はプロセス実行時間[秒]が指定値より 大きいプロセスを検索して --esec-under は小さいプロセスを検索します。

死んだプロセスは勝手に再起動してほしい

わかる、めちゃめちゃやりたいし、Apacheとか死んでも再起動して欲しい。 安心してください、mackerel-agentのチェック監視の機能と組み合わせると出来ます!!

mackerel.io

実際に試して頂いてる例もあるのでご確認ください。

blog.lorentzca.me

この他にも長時間生きてるプロセスをkillしたりなど応用が効くテクニックです!! ただし実行しているプロセスが例えばBatchなどでkillしたことでデータが破損するなどもあり得るので使い方には注意しましょう。

プロセス監視は無限の可能性

この他にもプロセス監視は色んな可能性があります。 実際に多くの事例がありますのでみなさんも検索してみたり、自分なりのアレンジをしてみてください!!

qiita.com

www.yasuhisay.info

タブ、吹き飛ばすことありますよね…。 それもこれでアラートが来るので安心です!!!

それでは明日は知ってると得するSocketの監視です。

9日目 check-tcp