質問: 上手くいかないため、内容追記しなおします。 SQLの失敗がロギングされるよう設定し、以下のようなシェルスクリプトでPostgreSQLにエラーを出力しています。 ``` while true do export PGPASSWORD=password psql -U postgres -d mydb -h hostname -c "SELET error"; sleep 10; done ``` テンプレートのpg.logは以下の通りデフォルトです。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/2fb0dd1d31fa8f68281b571293f7ae7d.jpeg) ホストに登録しているマクロは以下の通りです。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/93980902b632e5936971d5b8409f9a59.jpeg) ホストのpg.logは以下の通りになっています。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/663e644b08bd5ef9f02a9a1db4c013fa.jpeg) ディレクトリ・ファイルの権限などはこのようになっています。 ``` -bash-4.2$ ll /usr/local/pgsql/data/pg_log/postgres -d drwxr-xr-x 2 zabbix zabbix 4096 Apr 25 16:01 /usr/local/pgsql/data/pg_log/postgres -bash-4.2$ ll /usr/local/pgsql/data/pg_log/postgres -l total 416 -rw-r--r-- 1 zabbix zabbix 378537 Apr 25 16:00 postgresql.log.2018-04-25-15 -rw-r--r-- 1 zabbix zabbix 35091 Apr 25 16:06 postgresql.log.2018-04-25-16 ``` /var/log/zabbix/zabbix_agent.logおよび/var/log/zabbix/zabbix_server.logにエラーメッセージは何も出力はありません。 ランタイムコンフィギュレーションを利用して、`zabbix_agentd -R log_level_increase="active check"`を行ったりしましたが エラーメッセージは確認されませんでした。 pg_monzのデフォルトにあるすべてのアイテムは有効されており、それらの値は最新データにて正しく確認できています。 RDS PostgreSQLのログをboto3のdownload_db_log_file_portionを使用してサーバーにダウンロードしています。 そのためエンコードもチェックしたのですが、問題なさそうです。 ``` [root@ip-10-10-1-132 ~]# file -i /usr/local/pgsql/data/pg_log/postgres/postgresql.log.2018-04-25-16 /usr/local/pgsql/data/pg_log/postgres/postgresql.log.2018-04-25-16: text/plain; charset=us-ascii ```
回答: regexp() / iregexp() は文字列に合致した場合、**1** を返すので、トリガーの評価式は「=0」ではなく、「=1」になると思います。 ただ、このアイテムの設定だと、"error" でトリガーが「正常」→「障害」になりますが、その後、"PANIC" や "FATAL" で「障害」→「正常」に戻ると思います。 想定した動作でしょうか? ### (2018/04/24 00:58) 追記 まず、「最新データ」でこのアイテムに "PANIC", "FATAL", "ERROR" などに合致した文字列が取りこめているか確認ください。 次に、"PANIC", "FATAL", "ERROR" それぞれをログファイルに追記し、「最新データ」で取りこめていることを確認するとともに、「トリガー」や「イベント」で、状態(正常/障害)がどう変化するのかを確認すると理解が深まると思います。