Postgres 监控的 zabbix 代理配置文件中的用户名\密码?

Postgres 监控的 zabbix 代理配置文件中的用户名\密码?

阅读指南为 Postgres 监控配置代理 2使用 Zabbix

它提到...“如果您想要,请在主机宏({$PG.USER} 和 {$PG.PASSWORD})中设置用户名和密码覆盖 Zabbix 代理配置文件中的参数“”。

我很好奇如何在 zabbix_agent2.conf 文件中设置用户名\密码,这样我就不必将它们作为宏存储在 zabbix 服务器上?

至少在 Ubuntu 中,它不会创建 /var/lib/zabbix 目录来放置文件.pgpass,因此我继续这样做,但它似乎没有获取那些登录凭据。

我想获取有关复制的统计信息,这需要超级用户,所以我想将凭据保留在 postgres 服务器本身上。

答案1

您可以允许只读 zabbix 监控用户从本地主机访问 postgres 服务器,无需密码。

  1. 首先,您必须创建一个具有对 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;
  1. 将 postgresql/ 文件夹复制到 Zabbix 代理主目录 /var/lib/zabbix/。postgresql/ 目录包含从 PostgreSQL 获取指标所需的文件。

  2. 将template_db_postgresql.conf复制到Zabbix代理配置目录/etc/zabbix/zabbix_agentd.d/并重新启动Zabbix代理服务。

  3. 找到并编辑 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
  1. 如果您需要监视远程服务器,请在 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 安装在同一台服务器上,则可以跳过上一点。

  1. 重新启动 zabbix 代理:

    systemctl 重新启动 zabbix-agent

  2. 将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

相关内容