zabbix5.0監控postgresql13.6
環境描述
- zabbix版本:5.0.12
- PG版本:13.6
監控需求
- 監控postgresql運行情況(非核心業務,主要監控掛沒掛)
- 監控流復制運行情況
如有異常,則告警
具體步驟
- 在postgresql上創建監控用戶, 授權, 并配置
pg_hba.conf文件允許通過該用戶去訪問 - 到zabbix的網站上下載監控腳本
- 將腳本部署在postgresql數據庫服務器中,并根據實際情況調整zabbix agent腳本
- zabbix server中導入模板(步驟2中里的文件有)
- 將模板關聯到被監控的主機(postgresql數據庫服務器)
- 重啟zabbix agent
實際操作
(1)數據庫中創建監控用戶, 并配置`pg_hba.conf`
postgres=# CREATE USER zbx_monitor WITH PASSWORD 'zbx_8643' INHERIT;
CREATE ROLE
postgres=# GRANT pg_monitor TO zbx_monitor;
GRANT ROLE
$ vim pg_hba.conf
local all all trust
host all all 127.0.0.1/32 trust
(2)到https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/postgresql?at=refs%2Ftags%2F5.0.12 下載軟件下來(只要templates/db/postgresql)
# ls -alrt
total 184
-rw-r--r-- 1 root root 142049 May 24 2021 template_db_postgresql.xml # 模板文件,用于導入zabbix server
-rw-r--r-- 1 root root 3109 May 24 2021 template_db_postgresql.conf # zabbix agent配置文件
-rw-r--r-- 1 root root 33964 May 24 2021 README.md # 本文所參考的文檔
drwxr-xr-x 2 root root 4096 May 24 2021 postgresql # zabbix agent主要的執行腳本
(3)我這里的zabbix_agent是通過yum安裝的,配置文件路徑在/etc/zabbix
# tree -L 2 /etc/zabbix/
.
├── postgresql # 這個是上面的postgresql文件夾, 我放在了這里,后面的conf需要對應修改
│ ├── pgsql.bgwriter.sql
│ ├── pgsql.cache.hit.sql
│ ├── pgsql.config.hash.sql
│ ├── pgsql.connections.prepared.sql
│ ├── pgsql.connections.sql
│ ├── pgsql.connections.sum.sql
│ ├── pgsql.dbstat.sql
│ ├── pgsql.dbstat.sum.sql
│ ├── pgsql.discovery.db.sql
│ ├── pgsql.frozenxid.sql
│ ├── pgsql.locks.sql
│ ├── pgsql.ping.time.sql
│ ├── pgsql.query.time.sql
│ ├── pgsql.replication.lag.sql
│ ├── pgsql.replication.recovery_role.sql
│ ├── pgsql.replication.status.sql
│ ├── pgsql.scans.sql
│ ├── pgsql.transactions.sql
│ ├── pgsql.uptime.sql
│ └── pgsql.wal.stat.sql
├── server_info
├── zabbix_agentd.conf
├── zabbix_agentd.d
│ ├── server_info.conf
│ └── template_db_postgresql.conf # conf放在了這里
└── zabbix_agentd.log
將template_db_postgresql.conf 放在zabbix_agentd.d 下,
# cat template_db_postgresql.conf | more
UserParameter=pgsql.bgwriter[*], psql -qtAX -h "$1" -p "$2" -U "$3" -d "$4" -f "/var/lib/zabbix/postgresql/pgsql.bgwriter.sql"
UserParameter=pgsql.connections.sum[*], psql -qtAX -h "$1" -p "$2" -U "$3" -d "$4" -f "/var/lib/zabbix/postgresql/pgsql.connections.sum.sql"
這里可以看到調用的腳本目錄是/var/lib/zabbix/postgresql, 我這里想要把步驟2的postgresql放在/etc/zabbix/下,因此需要修改一下這個配置文件。
# cd /etc/zabbix/zabbix_agentd.d/
# sed -i 's#/var/lib/zabbix#/etc/zabbix#g' template_db_postgresql.conf
另外,template_db_postgresql.conf里是通過psql去執行的, 我這里是源碼安裝的postgresql ,并且zabbix user 是nologin, 我不想改zabbix的環境變量,因此這里需要改成絕對路徑,否則將會報錯“psql command not found”
改完后的文件大體如下:
# cat template_db_postgresql.conf | more
UserParameter=pgsql.bgwriter[*], /postgresql/pg13/bin/psql -qtAX -h "$1" -p "$2" -U "$3" -d "$4" -f "/etc/zabbix/postgresql/pgsql.bgwriter.sql"
# chown -R zabbix.zabbix /etc/zabbix
(4)將template_db_postgresql.xml 導入zabbix server中。略
(5)將模板關聯到被監控主機。模板名稱為`Template DB PostgreSQL`。略
可以看到已經正常工作,如果報錯的話,到item那里看具體報什么錯。

(6)重啟zabbix-agent
# systemctl restart zabbix-agent.service
觀察監控是否正常。步驟3如果不配置好路徑,可能會報找不到psql,如下圖所示:

也可以修改模板,去掉一些自己覺得不需要的監控指標。

浙公網安備 33010602011771號