Template DB PostgreSQL の使用時に zbx_monitor ユーザ に スーパーユーザ権限を与えないとダメなのかについて
環境:
zabbix 4.2.5
postgresql 9.5.10
postgreql 監視用テンプレートとして こちらのページを参考にインストールしてみました。
[Zabbix / Zabbixを参照 - ZABBIX GIT](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/pos...)
- こちらのページでは zabbix 4.2.1 と postgresql 9.6 ~ でテストしたとあり、私の環境がちょっと古いせいな可能性もあります。
手順どおりにインストールしたところ、 zabbix_server.log に以下のメッセージが出ました。
1829:20191028:162704.058 error reason for "Zabbix server:pgsql.wal.write" changed: Preprocessing failed for: psql:/var/lib/zabbix/postgresql/pgsql.wal.stat.sql:24: ERROR: ディレクトリ一覧を得るにはスーパーユーザでなければなりません.CON...
1. Failed: cannot extract value from json by path "$.write": cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: 'psql:/var/lib/zabbix/postgresql/pgsql.wal.stat.sql:24: ERROR: ディレクトリ一覧を得るにはスーパーユーザでなければなりませ
(日本語が切れてるのは原文ママです)
postgresql 側のログにも同じようなエラーが出ていて、調べたところ pgsql.wal.stat.sql 内で使用されている pg_ls_dir() 関数はスーパーユーザでないと使えないようです。
[9.26. システム管理関数](https://www.postgresql.jp/document/9.5/html/functions-admin.html)
試しに zbx_monitor ロールに SUPERUSER 権限を付与したところ、エラーは出なくなり、zabbix_server.log にも以下のようなメッセージがでて、サポートされたとのことです。
7263:20191030:162204.296 item "Zabbix server:pgsql.wal.count" became supported
7264:20191030:162703.545 item "Zabbix server:pgsql.wal.write" became supported
zbx_monitor に SUPERUSER 権限を付与するとは 前述のドキュメントには載っていませんし、できれば安易に SUPERUSER 権限を増やしたくないと思います。
他になにか方策はないでしょうか。
TNK - 投稿数: 4742
現時点のpg_ls_dir()を使用する方式では、PostgreSQL上の特権ロ
ールが必要なようです。
PostgreSQL 10だとpg_ls_waldir()というのが使えて、pg_monitor
ロールを与えれば実現できそうなので、権限をより限定的にさせる
ことができそうです。
別のテンプレートですが、MySQLのテンプレートでは使用する環
境依存の実装になっていて、それをより多くの環境でも使用でき
るようになるよう修正を行ってもらっています。
新しいテンプレートは、まだまだブラッシュアップが必要そうで
す。