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-agent2
Postgresql 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 postgresql
dnf 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_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
安装时序插件
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 zabbix
sudo -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.conf
vi /var/lib/pgsql/12/data/pg_hba.conf
重启数据库
systemctl restart postgresql-12
配置Zabbix-server
这里需要注意的是数据库部分和自身配置关系很大,如果用户名密码非配置文件默认,则需要进行调整,文中数据库实例名称为zabbix,用户名为zabbix,密码为xiaoyu123,所以仅调整数据库密码
vi /etc/zabbix/zabbix_server.conf
Nginx配置
将默认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-fpm
systemctl 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.rpm
dnf -y localinstall google-chrome-stable_current_x86_64.rpm
前端配置
测试正常
写在最后
报表功能其实设置起来还比较麻烦,后续会用一篇文章来写,这里简单的放个效果图,那么整个过程其实完整跑下来还是有点小复杂的,但是熟练后基本都可以知道每一步报错的问题在哪里,这也是学习的一个过程,相比mysql版本还是优化了很多的,具体效果怎么样大家可以自行测试,不熟悉切勿上生产。
END
欢迎入群讨论!