其实出这期文章的目的就是展示官方为了解决传统关系型数据库在应对海量监控数据的能力不足的方案。
本文环境
- 系统:AlmaLinux 8.7
- 数据库:PostgreSQL 14
- Timescale
- PHP
数据库部分
AlmaLinux 自带源为 postgresql-13,安装14版本需要安装源
自带源
先禁用自带源
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
安装 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
安装 timescale
dnf install timescaledb-2-postgresql-14 -y
安装完成后会提示下面命令,这是Timescaledb 提供的优化工具,用下面命令进行调用,一路 Y 即可
timescaledb-tune --pg-cnotallow=/usr/pgsql-14/bin/pg_config
重启数据库
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
在第一条命令执行时,需要输入账户的密码,这个在下面会用到
登录数据库测试,是否正常
psql -U zabbix -h 127.0.0.1
这里和以前不一样,以前需要改权限,可以看看配置文件
vim /var/lib/pgsql/14/data/pg_hba.conf
如果用 host 方式是可以采用用户名密码方式的登录的,而 local 需要切换相关用户才能登录,所以这里无需更改
由于采用了 Timescale插件,原有的连接数是不够的,所以需要修改连接数,不然会出现下面情况
连接数由25改为100
重启数据库
systemctl restart postgresql-14
导入 Zabbix 相关数据文件
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
启用 Timescale 插件
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u zabbix psql zabbix
导入超表文件
cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix
Zabbix 配置部分
修改 Zabbix 配置,本文需要修改两个部分,如下图
DBHost 改为 IP
数据库密码改为前面 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
环境检查,下一步
数据库界面需要关注4点,host 部分由 localhost 改为 127.0.0.1,Database schema
部分填写 public,Password 部分填写用户的密码即可,TLS加密取消
时区、服务器名称自行调整,下一步
Zabbix Server信息,下一步
完成安装
登录页,用户名/密码依然为 Admin/zabbix
效果图
首页
Dashboard
最新数据
Housekeeping 默认开启了7天的历史数据、趋势数据的压缩,可以降低磁盘的使用率,时间根据自身的情况自行设定
最后
该方案相比传统的方案的确优化的要好一些,但实际生产过程中还有很多性能相关的因素掣肘导致体验不佳,例如磁盘的性能不够,网络存在延迟,大量超时等待都会影响 Zabbix 的性能,调优是个比较漫长的过程,后续都会提到。