proc.num[postgres,,,]が0を返す
pg_monzをインストール。PostgreSQLサーバを監視対象としてZabbixサーバを適当にセットアップしました。
そうするとまもなくこんな警告メールが。
Trigger: PostgreSQL process is not running on hoge Trigger status: PROBLEM Trigger severity: High Trigger URL: Item values: 1. Number of postgres process (hoge:proc.num[postgres,,,]): 0 2. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN* 3. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*
postgresプロセスがいませんよ、と。(本当なら)そりゃ大変だ。
本当な訳はなく、監視対象機器にはpostgresプロセスはちゃんといます。
# ps -ef | grep postgres postgres 14687 1 0 Apr23 ? 05:26:18 /usr/pgsql-9.3/bin/postmaster -p 5433 -D /var/lib/pgsql/9.3/data postgres 14689 14687 0 Apr23 ? 00:00:02 postgres: logger process postgres 14691 14687 0 Apr23 ? 00:06:35 postgres: checkpointer process postgres 14692 14687 0 Apr23 ? 00:04:37 postgres: writer process postgres 14693 14687 0 Apr23 ? 00:02:36 postgres: wal writer process postgres 14694 14687 0 Apr23 ? 00:00:05 postgres: autovacuum launcher process postgres 14695 14687 0 Apr23 ? 00:00:09 postgres: archiver process last was 000000010000002800000046 postgres 14696 14687 0 Apr23 ? 01:33:25 postgres: stats collector process (以下略)
上記の警告メールにも書いてありますが、テンプレートから設定された当該アイテムのキーはこんな。
proc.num[postgres,,,]
なんか良さそうです。でもこれでひっかからないということは、zabbix_agentdは単純にプロセス名で数えているのではないということですね。いろいろ調べていると、zabbix_agentdがプロセス数を数える方法について記述があるQAページを発見しました。
args[0]を変更しない場合は云々。。ピンときた。postgresの場合、親プロセスはpostmasterで、そこからforkされた子プロセスがpostgres。proc.numに書くのはpostgresじゃなくて、postmasterじゃないといけないんじゃないか。
とこういうキーのアイテムを作成。
proc.num[postmaster]
そうするとちゃんと数えてくれました。
pg_monz2.0中のテンプレートファイル、Template_App_PostgreSQL.xml,Template_App_PostgreSQL_SR.xmlの該当箇所を修正してテンプレート再インストール。