查看原文
其他

专栏|Zabbix 5.0 监控 PostgreSQL 数据库

Zabbix开源社区 Zabbix开源社区 2022-09-22

张思德

------------------

Zabbix社区签约专家

  • ZbxTable是由张思德先生自主开发的开源的Zabbix报表系统,支持分析和导出,还拓展了GraphTree的功能,对统计消息数据是强有力的补充。

  • 2017-2019 Zabbix 峰会演讲嘉宾,演讲部分建议被Zabbix新版本采用。

  • 2020Zabbix峰会演讲嘉宾,主题《Zabbix 5.0 & Timescale DB》、Workshop实践操作课讲师。

 文章简介

Zabbix 支持 PostgreSQL 作为后台数据库,相比 Mysql,PostgreSQL 可加载 timescaledb 插件,提升 Zabbix 性能,同时还支持数据的压缩,因此对于 PostgreSQL 数据库的监控是非常需要的。使用 zabbix5.0 自带的数据库模版及脚本即可实现对 PostgreSQL 的监控。

 一.PostgreSQL 配置 

 1.创建用户


需要在 PostgreSQL 数据库建立监控专用的用户,由于 PostgreSQL 版本不同相关命令会有一定差别,创建一个 zbx_monitor 用户密码为 zbx_monitorpwd123


PostgreSQL 10 以上版本


su - postgrespsqlCREATE USER zbx_monitor WITH PASSWORD 'zbx_monitorpwd123' INHERIT;GRANT pg_monitor TO zbx_monitor;


PostgreSQL 9.6 版本及以下


su - postgrespsqlCREATE USER zbx_monitor WITH PASSWORD 'zbx_monitorpwd123';GRANT SELECT ON pg_stat_database TO zbx_monitor;ALTER USER zbx_monitor WITH SUPERUSER;


2.配置访问策略


编辑 pg_hba.conf 文件,并添加如下内容


host all zbx_monitor 127.0.0.1/32 trusthost all zbx_monitor 0.0.0.0/0 md5host all zbx_monitor ::0/0 md5


如果 Zabbix agent 和 PostgreSQL 在不同机器,需要配置密码文件,需要创建.pgpass 文件,并存放在 zabbix 用户的家目录下,内容如下:


<REMOTE_HOST1>:5432:postgres:zbx_monitor:<PASSWORD>


配置好之后记得重启 PostgreSQL 服务

 二.Zabbix 配置 

1.添加主机


添加主机之后,关联系统自带的 Template DB PostgreSQL 模版

配置如以下主机宏


更多宏的配置及说明请点击查看官网说明


2.配置 Agent


PostgreSQL 监控需要在 Zabbix Agent 端添加脚本文件。

点击下载监控脚本

下载到 Agent 所在机器,添加 Postgresql 监控 SQL 文件


bashwget https://dl.cactifans.com/zabbix/postgresql.tar.gzmkdir -p /var/lib/zabbix/tar zxvf postgresql.tar.gzcp -r postgresql/postgresql/ /var/lib/zabbix/


添加 UserParameter 文件到 Agent 的 zabbix_agentd.d 目录(根据实际情况修改)


cp -r postgresql/template_db_postgresql.conf /etc/zabbix/zabbix_agentd.d/


并修改 zabbix_agentd.conf 文件,确保 UserParameter 被加载


Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf


重启 Zabbix Agent


3.脚本 Bug 修复


正常添加后,已经可以看到部分数据,观察 Zabbix Server 日志,会发现如下错误信息


29128:20200702:014602.152 item "Zabbix server:pgsql.dbstat.blks_read.rate["zabbix"]" became not supported: Preprocessing failed for: psql:/var/lib/zabbix/postgresql/pgsql.dbstat.sql:17: ERROR: field name must not be null1. Failed: cannot extract value from json by path "$['zabbix'].blks_read": cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: 'psql:/var/lib/zabbix/postgresql/pgsql.dbstat.sql:17: ERROR: field name must not be null'


观察 PostgreSQL 监控指标,确实有部分 item 显示为 unsupported 状态,查询资料后发现是由于 sql 脚本问题,修改 sql 文件


vi /var/lib/zabbix/postgresql/pgsql.dbstat.sql


修改为如下内容


sql
SELECT json_object_agg(datname, row_to_json(T)) FROM ( SELECT datname, numbackends, xact_commit, xact_rollback, blks_read, blks_hit, tup_returned, tup_fetched, tup_inserted, tup_updated, tup_deleted, conflicts, temp_files, temp_bytes, deadlocks FROM pg_stat_database WHERE datname is not NULL) T


等待一会就会发现如下日志


29128:20200702:104902.227 item "Zabbix server:pgsql.dbstat.tup_deleted.rate["zabbix"]" became supported
29128:20200702:104902.227 item "Zabbix server:pgsql.dbstat.tup_fetched.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.tup_inserted.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.tup_returned.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.tup_updated.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.xact_commit.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.xact_rollback.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.temp_bytes.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.blks_read.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.conflicts.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.blks_hit.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.temp_files.rate["zabbix"]" became supported 29128:20200702:104902.228 item "Zabbix server:pgsql.dbstat.deadlocks.rate["zabbix"]" became supported


采集正常,此 bug 已提交官方[ZBX-18099]

 三.最终效果 

基本信息

自动发现数据库,监控数据库信息

点击加入社区成长计划




想了解更多Zabbix最新资讯与实践案例,

欢迎参加2020 Zabbix中国峰会!

点击查看峰会详情

延伸阅读


点击在看,把好文章分享给你的朋友(•̀ᴗ•́)و ̑̑

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存