Zabbix 6 系列学习 07:包安装(时序数据库篇)

时间:2022-12-14 15:04:21

其实出这期文章的目的就是展示官方为了解决传统关系型数据库在应对海量监控数据的能力不足的方案。

本文环境

  • 系统:AlmaLinux 8.7
  • 数据库:PostgreSQL 14
  • Timescale
  • PHP

数据库部分

AlmaLinux 自带源为 postgresql-13,安装14版本需要安装源

Zabbix 6 系列学习 07:包安装(时序数据库篇)

自带源

先禁用自带源

dnf -qy module disable postgresql

安装官方源

dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{centos})-x86_64/pgdg-redhat-repo-latest.noarch.rpm -y

Zabbix 6 系列学习 07:包安装(时序数据库篇)

安装 PostgreSQL 数据库

dnf install postgresql14-server -y

PostgreSQL 初始化

/usr/pgsql-14/bin/postgresql-14-setup initdb

启动数据库

systemctl enable postgresql-14 && systemctl start postgresql-14

Timescale 部分

导入 Timescale 源

tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL

Zabbix 6 系列学习 07:包安装(时序数据库篇)

安装 timescale

dnf install timescaledb-2-postgresql-14 -y

安装完成后会提示下面命令,这是Timescaledb 提供的优化工具,用下面命令进行调用,一路 Y 即可

Zabbix 6 系列学习 07:包安装(时序数据库篇)

timescaledb-tune --pg-cnotallow=/usr/pgsql-14/bin/pg_config

Zabbix 6 系列学习 07:包安装(时序数据库篇)

重启数据库

systemctl restart postgresql-14

Zabbix 部分

安装官方源

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm

安装 Zabbix 相关组件

dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-apache-conf zabbix-sql-scripts  zabbix-agent2 -y

Zabbix 数据库部分

创建数据库实例、用户

cd /tmp
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix

在第一条命令执行时,需要输入账户的密码,这个在下面会用到

Zabbix 6 系列学习 07:包安装(时序数据库篇)

登录数据库测试,是否正常

psql -U zabbix -h 127.0.0.1

Zabbix 6 系列学习 07:包安装(时序数据库篇)

这里和以前不一样,以前需要改权限,可以看看配置文件

vim /var/lib/pgsql/14/data/pg_hba.conf

如果用 host 方式是可以采用用户名密码方式的登录的,而 local 需要切换相关用户才能登录,所以这里无需更改

Zabbix 6 系列学习 07:包安装(时序数据库篇)

由于采用了 Timescale插件,原有的连接数是不够的,所以需要修改连接数,不然会出现下面情况

Zabbix 6 系列学习 07:包安装(时序数据库篇)

连接数由25改为100

Zabbix 6 系列学习 07:包安装(时序数据库篇)

重启数据库

systemctl restart postgresql-14

导入 Zabbix 相关数据文件

zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Zabbix 6 系列学习 07:包安装(时序数据库篇)

启用 Timescale 插件

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u zabbix psql zabbix


Zabbix 6 系列学习 07:包安装(时序数据库篇)

导入超表文件

cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix

Zabbix 6 系列学习 07:包安装(时序数据库篇)

Zabbix 配置部分

修改 Zabbix 配置,本文需要修改两个部分,如下图

Zabbix 6 系列学习 07:包安装(时序数据库篇)

DBHost 改为 IP

Zabbix 6 系列学习 07:包安装(时序数据库篇)

数据库密码改为前面 Zabbix 用户的密码

启动组件

systemctl start zabbix-server zabbix-agent2 httpd php-fpm
systemctl enable zabbix-server zabbix-agent httpd php-fpm

前端配置

本文采用的 apache,默认访问地址为 http://server ip 地址/zabbix

本文为​​http://192.168.21.53/zabbix​

Zabbix 6 系列学习 07:包安装(时序数据库篇)

环境检查,下一步

Zabbix 6 系列学习 07:包安装(时序数据库篇)

数据库界面需要关注4点,host 部分由 localhost 改为 127.0.0.1Database schema

部分填写 public,Password 部分填写用户的密码即可,TLS加密取消

Zabbix 6 系列学习 07:包安装(时序数据库篇)

时区、服务器名称自行调整,下一步

Zabbix 6 系列学习 07:包安装(时序数据库篇)

Zabbix Server信息,下一步

Zabbix 6 系列学习 07:包安装(时序数据库篇)

完成安装

Zabbix 6 系列学习 07:包安装(时序数据库篇)

登录页,用户名/密码依然为 Admin/zabbix

Zabbix 6 系列学习 07:包安装(时序数据库篇)

效果图

首页

Zabbix 6 系列学习 07:包安装(时序数据库篇)

Dashboard

Zabbix 6 系列学习 07:包安装(时序数据库篇)

最新数据

Zabbix 6 系列学习 07:包安装(时序数据库篇)

Housekeeping 默认开启了7天的历史数据、趋势数据的压缩,可以降低磁盘的使用率,时间根据自身的情况自行设定

Zabbix 6 系列学习 07:包安装(时序数据库篇)

最后

该方案相比传统的方案的确优化的要好一些,但实际生产过程中还有很多性能相关的因素掣肘导致体验不佳,例如磁盘的性能不够,网络存在延迟,大量超时等待都会影响 Zabbix 的性能,调优是个比较漫长的过程,后续都会提到。