概述
本文通过实际操作,指导使用PostgreSQL作为zabbix的数据库,并将history和trend相关表迁移到TimescaleDB中。
创建用户
登录到PostgreSQL服务器,并切换到postgres用户下
createuser --pwprompt zabbix
根据命令行提示设置密码。
创建zabbix数据库
createdb -O zabbix -E Unicode -T template0 zabbix
-
-O user 指定数据库owner。
-
-E encoding 指定数据库的编码。
-
-T template 指定创建此数据库的模板。
导入数据库
按照顺序依次导入schema.sql、images.sql和data.sql,对于的sql文件可从zabbix的源码包中获取。
psql -d zabbix -U zabbix -f schema.sql
psql -d zabbix -U zabbix -f images.sql
psql -d zabbix -U zabbix -f data.sql
至此已完成了PostgreSQL数据库的创建,接下来就将zabbix server和zabbix web的配置指向该数据库
配置zabbix server
打开zabbix_server.conf配置文件
# DBHost=localhost
DBHost=[pgsql-ip]
### Option: DBName
# the tnsnames.ora file or set to empty string; also see the TWO_TASK environment variable if DBName is set to
# DBName=
DBName=zabbix
### Option: DBSchema
# DBSchema=
DBSchema=public
### Option: DBUser
# DBUser=
DBUser=zabbix
### Option: DBPassword
# DBPassword=
DBPassword=zabbix
### Option: DBSocket
# DBSocket=
### Option: DBPort
# DBPort=
DBPort=5432
重启zabbix-server服务器
配置zabbix web
打开zabbix web配置页面
http://[zabbix_web]:8080/setup.php
配置DB连接
然后一直[下一步],直到配置完成
至此,我们就完成了zabbix的使用PostgreSQL数据库的配置。
使用TimescaleDB作为历史数据存储
TimescaleDB是基于PostgreSQL的一个插件,可以实现时序性数据库。
使用TimescaleDB可以实现自动历史数据自动分区,提高zabbix的查询效率,扩大监控规模。
启用PostgreSQL的TimescaleDB特性
-
编辑postgresql.conf 文件,在末尾添加以下内容,重启postgresql服务
# Add settings for extensions here timescaledb.telemetry_level=basic timescaledb.last_tuned = '2021-08-16T18:25:24Z' timescaledb.last_tuned_version = '0.11.0'
-
使用psql启用timescaledb插件
使用super用户来登录到postgreSQL数据库,切换到zabbix数据库
\c zabbix;
运行结果:
You are now connected to database "zabbix" as user "postgres".
启用timescale插件
create extension