我们往往在谈论zabbix的优缺点的时候,提到最多的依然还是数据库(默认采用关系型数据库),由于关系型数据库所有的读写都是采用sql语句解析,一但并发过大或者数据量过大,处理能力就显得捉襟见肘,这也是Zabbix让人诟病的地方,终于在4.2版本正式加入了Timescale时序性数据库,该数据库在基于PG的基础上加入时序插件,既保证了易用性,同时也解决了关系型数据库的弊端(弊端仅仅指在监控场景),具体细节可以去官网看看,今天来介绍如何基于PG的Timescale时序数据库来安装Zabbix。
正文
环境
- Linux版本:CentOS 8.2
- Zabbix版本:5.2
- Web:Nginx
- 数据库:PG+Timescale
Zabbix相关组件安装
1.导入5.2阿里云源
cat < /etc/yum.repos.d/zabbix.repo[zabbix]name=Zabbix Official Repository - $basearchbaseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.2/rhel/8/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591[zabbix-non-supported]name=Zabbix Official Repository non-supported - $basearchbaseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/8/$basearch/enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIXgpgcheck=1EOF添加 gpgkeycurl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
安装zabbix相关组件
dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-agent -y
PG数据库安装
由于Timescale的最低要求为PG11,所以本文所提到的PG版本为12
1.PG12的镜像源安装
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装源
2.安装PG12
dnf -qy module disable postgresql ##此条不输入会出现下面图一报错dnf -y install postgresql12 postgresql12-server

未输入第一条命令安装报错

安装成功
3.初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb

完成数据库初始化
4.启动PG并设置为开机启动
systemctl start postgresql-12&&systemctl enable postgresql-12

启动数据库并设置为开机启动
5.添加TimescaleDB源
tee /etc/yum.repos.d/timescale_timescaledb.repo <

添加TimescaleDB源
6.安装TimescaleDB
dnf install -y timescaledb-postgresql-12

完成安装TimescaleDB
7.Timescale插件初始化PG
timescaledb-tune --pg-config=/usr/pgsql-12/bin/pg_config

一直输入Y完成初始化
8.重启数据库
systemctl restart postgresql-12
配置数据库
1.创建数据库实例及用户名密码

创建数据库、用户名密码
2.开启TimescaleDB插件
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

启用成功
3.导入zabbix架构文件
zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix

导入架构
4.导入Timescale架构文件
zcat /usr/share/doc/zabbix-server-pgsql*/timescaledb.sql.gz | sudo -u zabbix psql zabbix

导入TimescaleDB架构文件
5.配置pg配置文件
vi /var/lib/pgsql/12/data/postgresql.conf

开启远程访问,可以写*,也可以为指定IP,最大连接数建议写大一些
vi /var/lib/pgsql/12/data/pg_hba.conf
两个注意点:如果all in one,则不需要在IPv4 connection改为0.0.0.0/0,第二点是认证方式全改为MD5,否则会验证失败

修改过后
5.重启数据库
systemctl restart postgresql-12
配置zabbix-server相关文件
vi /etc/zabbix/zabbix-server.conf

只需要修改DBPassword部分,修改为自己创建的密码
Nginx配置
由于Nginx默认占用80端口,导致无法访问zabbix,需要进行调整
vi /etc/nginx/nginx.conf

将Nginx的默认监听端口改为8080
vi /etc/nginx/conf.d/zabbix.conf

这里默认即可
启动zabbix服务
systemctl restart zabbix-server zabbix-agent nginx php-fpmsystemctl enable zabbix-server zabbix-agent nginx php-fpm
前端关键页面

新增PG模式选择,填写public即可

完工大吉
结语
基于Timescale的PG安装过程比较复杂,但是解决了mysql的瓶颈,所以值得一试,根据官方的测试,压缩比大概在25倍左右,读写速度远超mysql,这也是时序数据库的优势,如果大家在安装的时候有任何疑问可以留言私信我。