check-plugin を使ってプロセス監視を行います。
チェックプラグインの共通設定
- notification_interval
— 再送間隔(分)
— 未指定=再送無し
— 最短30分(30分未満を設定した場合も30分) - max_check_attempts
— 指定回数連続でOK以外の結果の場合にアラート発報
再送30分、連続3回の設定の場合
設定例
[plugin.checks.check_ntpd] command = "/usr/local/bin/check-procs --pattern ntpd -u ntp" notification_interval = 30 max_check_attempts = 3
通知結果
debuglogを確認
2016/04/26 20:23:19 checker.go:81: DEBUGChecker "check_ntpd" status=OK message="Procs OK: Found 1 matching processes; cmd /ntpd/; user /ntp/n" # ntpdを停止、以降CRITICAL 2016/04/26 20:25:18 checker.go:81: DEBUG Checker "check_ntpd" status=CRITICAL message="Procs CRITICAL: Found 0 matching processes; cmd /ntpd/; user /ntp/n" 2016/04/26 20:26:18 checker.go:81: DEBUG Checker "check_ntpd" status=CRITICAL message="Procs CRITICAL: Found 0 matching processes; cmd /ntpd/; user /ntp/n" 2016/04/26 20:27:18 checker.go:81: DEBUG Checker "check_ntpd" status=CRITICAL message="Procs CRITICAL: Found 0 matching processes; cmd /ntpd/; user /ntp/n" # ↑で通知発生 2016/04/26 20:28:18 checker.go:81: DEBUG Checker "check_ntpd" status=CRITICAL message="Procs CRITICAL: Found 0 matching processes; cmd /ntpd/; user /ntp/n" # ・・・ 略 ・・・ 2016/04/26 20:56:39 checker.go:81: DEBUG Checker "check_ntpd" status=CRITICAL message="Procs CRITICAL: Found 0 matching processes; cmd /ntpd/; user /ntp/n" 2016/04/26 20:57:39 checker.go:81: DEBUG Checker "check_ntpd" status=CRITICAL message="Procs CRITICAL: Found 0 matching processes; cmd /ntpd/; user /ntp/n" # ↑で通知発生 2016/04/26 20:58:39 checker.go:81: DEBUG Checker "check_ntpd" status=CRITICAL message="Procs CRITICAL: Found 0 matching processes; cmd /ntpd/; user /ntp/n"
check-procs.conf
予期しないプロセスを検索してしまう可能性があるため、 patternは極力正確に、userも指定した方が無難です。
[plugin.checks.check_http] command = "/usr/local/bin/check-procs --pattern /usr/sbin/httpd" [plugin.checks.check_ntpd] command = "/usr/local/bin/check-procs --pattern ntpd -u ntp" notification_interval = 30 max_check_attempts = 3
オプション
状態オプション
閾値設定を省略した場合、-W、-Cのデフォルトが 1 なので、プロセスが存在していない(停止している)状態でCRITICALアラートが飛びます。
オプション | ロングオプション | 説明 |
---|---|---|
-w | -W | –warn-over | –warn-under | WARNING閾値(プロセス数が指定値より 大きい|小さい) |
-c | -C | –critical-over | –critical-under | CRITICAL閾値(プロセス数が指定値より 大きい|小さい) |
検索オプション
m | M オプションは今一つ使い所がわかりませんでした。 また、s オプションは { R | S | D | T | Z } のいずれを指定してもマッチせずでした。
(原因について深くは調べていません)
オプション | ロングオプション | 説明 |
---|---|---|
-p | -x | –pattern | –exclude-pattern | 検索パターン | 除外パターン |
-f | –file-pid | 検索PID(.pidファイル指定ではない) |
-m | -M | –ppid –match-self | –match-parent |
検索親PID os.Getpid() | os.Getppid と比較(mackerel-agent のプロセスを含めるか否か?) |
-z | –virtual-memory-size | VSZ[KB]閾値、指定値以下のプロセスが検索される |
-r | –resident-set-size | RSS[KB]閾値、指定値以下のプロセスが検索される |
-P | –proportional-set-size | PSS[KB]閾値、指定値以下のプロセスが検索される |
-T | –thread-count | スレッド数閾値、指定値以下のプロセスが検索される |
-s -u | -U |
–state –user | –user-not |
スレッド状態 プロセス所有者 |
-e | -E | –esec-over | –esec-under | プロセス実行時間[秒]が指定値より 大きい |小さい プロセスが検索される |
-i | -I | –cpu-over | –cpu-under | CPU時間[秒]が指定値より 大きい|小さい プロセスが検索される |