阅读指南为 Postgres 监控配置代理 2使用 Zabbix
它提到...“如果您想要,请在主机宏({$PG.USER} 和 {$PG.PASSWORD})中设置用户名和密码覆盖 Zabbix 代理配置文件中的参数“”。
我很好奇如何在 zabbix_agent2.conf 文件中设置用户名\密码,这样我就不必将它们作为宏存储在 zabbix 服务器上?
至少在 Ubuntu 中,它不会创建 /var/lib/zabbix 目录来放置文件.pgpass
,因此我继续这样做,但它似乎没有获取那些登录凭据。
我想获取有关复制的统计信息,这需要超级用户,所以我想将凭据保留在 postgres 服务器本身上。
答案1
您可以允许只读 zabbix 监控用户从本地主机访问 postgres 服务器,无需密码。
- 首先,您必须创建一个具有对 PostgreSQL 服务器的适当访问权限的只读 zbx_monitor 用户:
对于 PostgreSQL 版本 10 及更高版本:
CREATE USER zbx_monitor WITH PASSWORD '<PASSWORD>' INHERIT;
GRANT pg_monitor TO zbx_monitor;
对于 PostgreSQL 版本 9.6 及以下:
CREATE USER zbx_monitor WITH PASSWORD '<PASSWORD>';
GRANT SELECT ON pg_stat_database TO zbx_monitor;
要收集 WAL 指标,用户必须具有superuser
角色。
ALTER USER zbx_monitor WITH SUPERUSER;
将 postgresql/ 文件夹复制到 Zabbix 代理主目录 /var/lib/zabbix/。postgresql/ 目录包含从 PostgreSQL 获取指标所需的文件。
将template_db_postgresql.conf复制到Zabbix代理配置目录/etc/zabbix/zabbix_agentd.d/并重新启动Zabbix代理服务。
找到并编辑 postgres pg_hba.conf 以允许来自 Zabbix 代理的连接https://www.postgresql.org/docs/current/auth-pg-hba-conf.html。
updatedb find pg_hba.conf vi /etc/postgresql/11/main/pg_hba.conf(在您的主机中可能有所不同)
添加行(例如):
host all zbx_monitor 127.0.0.1/32 trust
host all zbx_monitor 0.0.0.0/0 md5
host all zbx_monitor ::0/0 md5
重新启动 postgres 服务器。您应该可以使用新用户进行连接,无需密码:
systemctl restart postgresql
psql -h 127.0.0.1 --username=zbx_monitor postgres
- 如果您需要监视远程服务器,请在 Zabbix 代理主目录 /var/lib/zabbix/ 中创建 .pgpass 文件,并按照以下格式添加包含实例、端口、数据库、用户和密码信息的连接详细信息https://www.postgresql.org/docs/current/libpq-pgpass.html。
示例 1:
<REMOTE_HOST1>:5432:postgres:zbx_monitor:<PASSWORD>
<REMOTE_HOST2>:5432:postgres:zbx_monitor:<PASSWORD>
...
<REMOTE_HOSTN>:5432:postgres:zbx_monitor:<PASSWORD>
示例 2:
*:5432:postgres:zbx_monitor:<PASSWORD>
对于 localhost,REMOTE_HOST 可以是 127.0.0.1。但是,如果代理与 postgres 安装在同一台服务器上,则可以跳过上一点。
重新启动 zabbix 代理:
systemctl 重新启动 zabbix-agent
将template_db_postgresql.yaml导入到Zabbix服务器并链接到目标主机。
您可以在 Zabbix/templates/db/postgresql/ 中找到此答案中提到的文件,但您也可以在此处下载它们:https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/postgresql
答案2
当我将文件“template_db_postgresql.conf”复制到“/etc/zabbix/zabbix_agentd.d/”时
代理服务不起作用
当我删除“template_db_postgresql.conf”时,代理服务可以运行(但没有获取数据)
我正在使用 zabbix_agent2