全网独家:zabbixV7版本容器服务器无法访问Postgres V17数据库的问题解决

近期将zabbix平台从V6.2.6升级到7.2.4,遇到问题“PostgresoL server is not available. Waiting 5seconds”,容器无法访问Postgres V17数据库,本文记录问题解决过程。

一、系统环境

1、数据库版本

数据库版本:postgres-17.4-timescale-2.17.2,如下:

#  psql -U zabbix  zabbix -h 192.168.128.111  
Password for user zabbix: 
psql (13.3, server 17.4)
WARNING: psql major version 13, server major version 17.
         Some psql features might not work.
Type "help" for help.

zabbix=> \dx
                                                List of installed extensions
    Name     | Version |   Schema   |                                      Description                              
        
-------------+---------+------------+-------------------------------------------------------------------------------
--------
 plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
 timescaledb | 2.17.2  | public     | Enables scalable inserts and complex queries for time-series data (Community E
dition)
(2 rows)

zabbix=> \q

2、zabbix服务器容器版本

zabbix/zabbix-web-apache-pgsql:centos-7.2.4
zabbix/zabbix-server-pgsql:centos-7.2.4

二、报错信息

zabbix服务器连接数据库报错:“PostgresoL server is not available. Waiting 5seconds”

三、问题分析

1、数据库版本是否兼容

 从zabbix官网,可以看到相关数据库版本在兼容清单的

support for PostgreSQL versions:- 17.X  

support for TimescaleDB versions: 2.17.X 

 2、测试数据库外部连接情况
#  psql -U zabbix  zabbix -h 192.168.128.111  
Password for user zabbix: 
psql (13.3, server 17.4)
WARNING: psql major version 13, server major version 17.
         Some psql features might not work.
Type "help" for help.

zabbix=> \dx
                                                List of installed extensions
    Name     | Version |   Schema   |                                      Description                              
        
-------------+---------+------------+-------------------------------------------------------------------------------
--------
 plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
 timescaledb | 2.17.2  | public     | Enables scalable inserts and complex queries for time-series data (Community E
dition)
(2 rows)

zabbix=> \q

 可以看到,数据库外部访问正常,可以查询到库的信息,可以排除数据库自身的问题。

3、问题定位

经过本人全面检查,最终查到本问题是因为zabbix服务器官方容器包的问题。

原因为zabbix使用--list来检查数据库服务是否存活,在容器外本地使用该命令,反馈信息如下:

# psql -U zabbix  zabbix -h 192.168.128.111 --list
Password for user zabbix: 
                             List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges   
-----------+----------+-----------+---------+-------+-----------------------
 postgres  | postgres | SQL_ASCII | C       | C     | 
 template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 template1 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 zabbix    | zabbix   | UTF8      | C       | C     | 
(4 rows)

登入zabbix服务器容器,可以看到容器内封装的PostgreSQL客户端版本为16.6,该命令执行反馈信息报错“column d.daticulocale does not exist”:

# docker exec -it zbxsrv /bin/bash
bash-5.1$ psql -V
psql (PostgreSQL) 16.6
bash-5.1$ psql -h 192.168.128.111 -U zabbix -d zabbix --list
Password for user zabbix: 
psql: ERROR:  column d.daticulocale does not exist
LINE 8:   d.daticulocale as "ICU Locale",
          ^
HINT:  Perhaps you meant to reference the column "d.datlocale".
bash-5.1$ cat /etc/centos-release 
CentOS Stream release 9

 且zabbix官方Centos、ubuntu系统容器包都存在此问题。

四、解决办法

使用zabbix官方alpine系统平台的服务器容器镜像。

zabbix/zabbix-server-pgsql:alpine-7.2-latestalpine-7.2-latest(目前实际是7.2.4)

zabbix/zabbix-web-apache-pgsql:alpine-7.2.4

如下:

[root@localhost ~]# docker pull zabbix/zabbix-server-pgsql:alpine-7.2-latest
alpine-7.2-latest: Pulling from zabbix/zabbix-server-pgsql
f18232174bc9: Already exists 
145118636fb4: Pull complete 
2e36442cfc45: Pull complete 
90bbfafe739a: Pull complete 
ff10713dcc30: Pull complete 
39a26e625a05: Pull complete 
4f4fb700ef54: Pull complete 
db0d9b0bdf27: Pull complete 
Digest: sha256:c8db24a3fc509ea4b1a3d9f4ef197e1ee46f2656f586c3c5f9014ca6de61804b
Status: Downloaded newer image for zabbix/zabbix-server-pgsql:alpine-7.2-latest
docker.io/zabbix/zabbix-server-pgsql:alpine-7.2-latest
[root@localhost ~]# docker pull zabbix/zabbix-web-apache-pgsql:alpine-7.2.4
alpine-7.2.4: Pulling from zabbix/zabbix-web-apache-pgsql
f18232174bc9: Already exists 
0068142ce15f: Pull complete 
a2c25e127afd: Pull complete 
0f6189e461cd: Pull complete 
4f4fb700ef54: Pull complete 
5d085b3ca5ae: Pull complete 
Digest: sha256:3e91ca4aad3bd051ed33cdfa343fb9711b9dd5a33518798926af862a9bae4c41
Status: Downloaded newer image for zabbix/zabbix-web-apache-pgsql:alpine-7.2.4
docker.io/zabbix/zabbix-web-apache-pgsql:alpine-7.2.4

运行容器,可以看到,服务器已正常连接:

 问题得到解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代先生.重庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值