zabbix4.4使用时序数据库TimescaleDB

实战

Posted by dbstack on April 3, 2020

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; ```