share facebook facebook2 twitter menu hatena pocket slack

2016.05.30 MON

Mackerel事始め check-plugin プロセス監視

WRITTEN BY大住 孝之

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
通知結果

20160426215657

debuglogを確認
2016/04/26 20:23:19 checker.go:81: DEBUG <checks> Checker "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 <checks> 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 <checks> 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 <checks> 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 <checks> 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 <checks> 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 <checks> 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 <checks> 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時間[秒]が指定値より 大きい|小さい プロセスが検索される

閾値超過時の例

Alert発生時のWebコンソール

20160426215050

Slack通知

20160426215051

Close時のWebコンソール

20160426215052

元記事はこちら

Mackerel事始め check-plugin プロセス監視

大住 孝之

構築運用担当。 個性的な面々の中で無個性という個性を打ち出していこうと画策中。