Zabbix 5.4全功能安装篇(数据库基于PG+Timescale)
我们往往在谈论zabbix的优缺点的时候,提到最多的依然还是数据库(默认采用关系型数据库),一但并发过大或者数据量过大,处理能力就显得捉襟见肘,这也是Zabbix让人诟病的地方,终于在4.2版本正式加入了Timescale时序性数据库,该数据库在基于PG的基础上加入时序插件,超高压缩比和提升了写的能力,具体细节可以去官网看看,今天来介绍如何基于PG的Timescale时序数据库来安装Zabbix。
正文
环境
- 系统版本:CentOS 8 Stream 
- Nginx:1.14 
- PHP:7.2 
- 数据库:Postgresql 12 
- Timescale:2.0 
安装Zabbix官方源
rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm安装Zabbix相关组件
dnf -y install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2Postgresql 12数据库安装
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm##如果不输入下面这条命令,会出现下图报错dnf -qy module disable postgresqldnf install -y postgresql12-server
初始化Postgresql数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb启动PG数据库服务
systemctl enable postgresql-12 && systemctl start postgresql-12安装Timescale
sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL[timescale_timescaledb]name=timescale_timescaledbbaseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$basearchrepo_gpgcheck=1gpgcheck=0enabled=1gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkeysslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crtmetadata_expire=300EOL
安装时序插件
dnf install -y timescaledb-2-postgresql-12初始化PG
一路Y,然后回车即可
timescaledb-tune --pg-config=/usr/pgsql-12/bin/pg_config重启数据库
systemctl restart postgresql-12配置数据库
创建数据库实例、用户名、密码,出现下图的报错部分可以忽略,因为在postgres用户无root家目录权限,如果想避免报错,可以先进其他目录,再执行命令。
sudo -u postgres createuser --pwprompt zabbixsudo -u postgres createdb -O zabbix zabbix
开启Timescale插件,当出现下图的显示即为成功开启。
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix导入Zabbix数据文件
zcat /usr/share/doc/zabbix-sql-scripts/postgresql/create.sql.gz | sudo -u zabbix psql zabbix导入时序插件数据文件
如下图,导入成功
zcat /usr/share/doc/zabbix-sql-scripts/postgresql/timescaledb.sql.gz | sudo -u zabbix psql zabbix配置PG
vi /var/lib/pgsql/12/data/postgresql.confvi /var/lib/pgsql/12/data/pg_hba.conf重启数据库
systemctl restart postgresql-12配置Zabbix-server
这里需要注意的是数据库部分和自身配置关系很大,如果用户名密码非配置文件默认,则需要进行调整,文中数据库实例名称为zabbix,用户名为zabbix,密码为xiaoyu123,所以仅调整数据库密码
vi /etc/zabbix/zabbix_server.confNginx配置
将默认Nginx配置的端口部分加上注释。如下图,已经将80端口配置加上注释了,
vi /etc/nginx/nginx.conf将nginx目录里的zabbix.conf的端口注释取消,如下图所示。
vi /etc/nginx/conf.d/zabbix.conf启动Zabbix相关服务
systemctl start zabbix-server zabbix-agent2 nginx php-fpmsystemctl enable zabbix-server zabbix-agent2 nginx php-fpm
前端配置
进入首页,无需带/zabbix,直接访问IP即可。
数据库连接部分需要注意的是Database schema,默认是public。
默认用户名密码依然是Admin/zabbix
效果图
报表服务安装
此时无法正常使用报表,会出现报错,因为服务暂未开启
安装报表服务
dnf -y install zabbix-web-service启动报表服务
systemctl start zabbix-web-service && systemctl enable zabbix-web-service开启报表服务
修改Zabbix Server配置文件
vi /etc/zabbix/zabbix_server.conf重启Zabbix Server
systemctl restart zabbix-server安装Chrome浏览器
Zabbix实现报表的功能其实依托模拟访问打印的方式生成PDF,所以这里不难理解为什么要装Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpmdnf -y localinstall google-chrome-stable_current_x86_64.rpm
前端配置
测试正常
写在最后
报表功能其实设置起来还比较麻烦,后续会用一篇文章来写,这里简单的放个效果图,那么整个过程其实完整跑下来还是有点小复杂的,但是熟练后基本都可以知道每一步报错的问题在哪里,这也是学习的一个过程,相比mysql版本还是优化了很多的,具体效果怎么样大家可以自行测试,不熟悉切勿上生产。
END
欢迎入群讨论!
