zabbix4.4使用时序数据库TimescaleDB
一、TimescaleDB 时序数据库的优势
-
TimescaleDB是基于PostgreSQL的时序数据库插件,完全继承了PostgreSQL的功能,对于复杂查询,各种类型(GIS,json,k-v,图像特征值,range,数组,复合类型,自定义类型,…..)的支持非常丰富,非常适合工业化的时序数据库场景需求。具有以下特点:
-
1.基于时序优化
-
2.自动分片(按时间、空间自动分片(chunk))
-
3.全SQL接口
-
4.支持垂直横向扩展
-
5.支持时间维度、空间维度自动分区。空间维度指属性字段(例如传感器ID,用户ID等)
-
6.支持多个SERVER,多个CHUNK的并行查询。分区在TimescaleDB中被称为chunk。
-
7.自动调整CHUNK的大小
-
8.内部写优化(批量提交、内存索引、事务支持、数据倒灌)。内存索引,因为chunk size比较适中,所以索引基本上都不会被交换出去,写性能比较好。数据倒灌,因为有些传感器的数据可能写入延迟,导致需要写以前的chunk,timescaleDB允许这样的事情发生(可配置)。
-
9.复杂查询优化(根据查询条件自动选择chunk,最近值获取优化(最小化的扫描,类似递归收敛),limit子句pushdown到不同的server,chunks,并行的聚合操作)
-
10.利用已有的PostgreSQL特性(支持GIS,JOIN等),方便的管理(流复制、PITR)
-
11.支持自动的按时间保留策略(自动删除过旧数据)
部署
- 系统环境
[root@wyw 11]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core)
- 安装依赖包
```
yum -y install wget net-snmp-devel OpenIPMI-devel httpd openssl-devel
java lrzsz fping libcurl-devel perl-DBI pcre-devel libxml2 libxml2-devel
mysql-devel gcc php php-bcmath php-gd php-xml php-mbstring php-ldap php-mysql.x86_64 php-pear php-xmlrpc net-tools \
- 安装 postgresql
yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
yum install postgresql11
yum install postgresql11-server
- 初始化数据库并设置为开机自动启动
/usr/pgsql-11/bin/postgresql-11-setup initdb systemctl enable postgresql-11 && systemctl start postgresql-11
- Timescaledb部署
cat>/etc/yum.repos.d/timescale_timescaledb.repo«-“EOF” [timescale_timescaledb] name=timescale_timescaledb baseurl=https://packagecloud.io/timescale/timescaledb/el/7/$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 EOF
- 安装timescaledb插件
yum install -y timescaledb-postgresql-11
- 配置postgresql.conf 使用postgres启动时加载‘timescaledb’
vim /var/lib/pgsql/11/data/postgresql.conf shared_preload_libraries = ‘timescaledb’ 重启Postgresql服务 systemctl restart postgresql-11
- postgresql设置密码
登录PostgreSQL sudo -u postgres psql 修改登录PostgreSQL密码 ALTER USER postgres WITH PASSWORD ‘123456’; 步骤三:退出PostgreSQL客户端 \q
- 修改postgres的监听地址,默认只能为 本地连接
vi /var/lib/pgsql/11/data/postgresql.conf listen_addresses = ‘*’
允许所有地址 来连接该数据库 cat» /var/lib/pgsql/11/data/pg_hba.conf«-“EOF” host all all 0.0.0.0/0 md5 EOF
重启数据库 systemctl start postgresql-11
- 测试数据库远端登录
psql -Upostgres -h 10.0.52.222 输入密码
psql (11.7) 输入 “help” 来获取帮助信息.
postgres=# 创建zabbix用户并授权 postgres=#create user zabbix with password ‘zabbix’; postgres=#create database zabbix owner zabbix; postgres=#grantall privileges on database zabbix to zabbix;
- 数据库创建
echo”CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;” | sudo -u postgres psql zabbix 导入zabbix数据库 yum-y install zabbix-server-pgsql-4.4.7-1.el7.x86_64.rpm zabbix-web-pgsql-4.4.7-1.el7.noarch.rpm
cd /usr/share/doc/zabbix-server-pgsql-4.4.7 zcat create.sql.gz| sudo -u zabbix psql zabbix –h 10.0.52.222 zcat timescaledb.sql.gz|sudo -u zabbix psql zabbix –h 10.0.52.222
- 至此zabbix-server Timescaledb数据库部署完成!
# 安装zabbix 前端
yum localinstall -y zabbix-nginx-conf-4.4.7-1.el7.noarch.rpm
- 修改nginx注释
vi /etc/nginx/conf.d/zabbix.conf
server { listen 80; server_name 10.0.52.222;
root /usr/share/zabbix;
systemctl start nginx && systemctl enable nginx systemctl start php-fpm && systemctl enable php-fpm
- 修改时区
vim /etc/php-fpm.d/zabbix.conf [date.timezone] = Asia/Shanghai
- 配置zabbix-server
egrep-v “*#|^$” /etc/zabbix/zabbix_server.conf |grep DB DBHost=10.0.52.222 DBName=zabbix DBUser=zabbix DBPassword=zabbix DBPort=5432
systemctl start zabbix-server && systemctl enable zabbix-server
- 修改字体
在Windows 系统中找到 C:\Windows\Fonts 中的楷体(常规)复制到windows桌面上 通过rz上传在zabbix server /usr/share/fonts/dejavu/ 目录下 [root@wyw]# cd/etc/alternatives/ [root@wyw]# ll [root@wyw]# mv simkai.ttf zabbix.ttf [root@wyw]# rm -f /etc/alternatives/zabbix-web-font [root@wyw]# ln -s /usr/share/fonts/dejavu/zabbix.ttf /etc/alternatives/zabbix-web-font
[root@wyw web]# cat zabbix.conf.php <?php // Zabbix GUI configuration file. global $DB;
$DB[‘TYPE’] = ‘POSTGRESQL’; $DB[‘SERVER’] = ‘10.0.52.222’; $DB[‘PORT’] = ‘5432’; $DB[‘DATABASE’] = ‘zabbix’; $DB[‘USER’] = ‘zabbix’; $DB[‘PASSWORD’] = ‘zabbix’;
// Schema name. Used for IBM DB2 and PostgreSQL. $DB[‘SCHEMA’] = ‘’;
$ZBX_SERVER = ‘10.0.52.222’; $ZBX_SERVER_PORT = ‘10051’; $ZBX_SERVER_NAME = ‘zabbix-server’;
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ```