ZABBIX 4.4.0 + TimescaleDB

2019-12-11 14:18:11 浏览数 (1)

2019.10 ZABBIX 4.4.0 正式发布,发布全新的基于Go语言编写全新agent2和众多新功能特性,接下来介绍最重要的新功能,TimescaleDB数据库,ZABBIX除了支持MySQL、PostgreSQL、Oracle和DB2之外,ZABBIX 官方正式宣布支持TimescaleDB。与传统的关系数据库相比,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.支持自动的按时间保留策略(自动删除过旧数据)

基础架构

Linux系统配置

系统版本

代码语言:javascript复制
cat  /etc/redhat-release
CentOS Linuxrelease 7.6.1810 (Core)

安装软件包

代码语言:javascript复制
yum install epel-release
yum -y install sysstat traceroute  net-tools telnet  tree net-snmp-utils htop vim lrzsz tcpdump wget git

关闭selinux

永久关闭将配置文件中参数selinux改为disabled

临时关闭setenforce 0

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

修改ulimit(最大进程数和最大文件打开数)

修改 /etc/security/limits.conf 文件

代码语言:javascript复制
*               soft      nofile          65536
*               hard     nofile          65536
*               soft       nproc           65536
*               hard      nproc           65536

* 代表针对所有用户

nproc 是代表最大进程数

nofile 是代表最大文件打开数

关闭交换内存优化系统参数

代码语言:javascript复制
vim /etc/sysctl.conf
vm.swappiness =0
vm.max_map_count= 262144
net.core.somaxconn=65535
net.ipv4.ip_forward= 1

激活设置

sysctl -p

修改完需要重启系统

主机清单

hosname

ip

Version

zabbix-server

192.168.99.200

zabbix 4.4.0

zabbix-db

192.168.99.221

PostgreSQL 11.5

Postgresql部署

timescaledb是 postgres的一个 扩展 插件 , 所以要安装 timescaledb就先要安装 postgres

安装postgresql

代码语言:javascript复制
yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm

安装客户端

代码语言:javascript复制
yum install postgresql11

安装服务端

代码语言:javascript复制
yum install postgresql11-server

初始化数据库并设置为开机自动启动

代码语言:javascript复制
/usr/pgsql-11/bin/postgresql-11-setup initdb 

启动并开机启动

代码语言:javascript复制
systemctl enable postgresql-11 && systemctl start postgresql-11

Timescaledb部署

添加timescaledb的yum源

代码语言:javascript复制
vim etc/yum.repos.d/timescale_timescaledb.repo
[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

安装timescaledb插件

代码语言:javascript复制
yum install -y timescaledb-postgresql-11

配置postgresql.conf 使用postgres启动时加载‘timescaledb’

代码语言:javascript复制
vim/var/lib/pgsql/11/data/postgresql.confshared_preload_libraries = 'timescaledb'

重启Postgresql服务

代码语言:javascript复制
systemctl  restart  postgresql-11

Postgresyum 安装默认会创建一个postgres的用户

切换到postgres用户

su postgres

执行psql ,进入postgres的命令行

psql

q退出

在psql命令行修改默认用户密码(默认无密码)

代码语言:javascript复制
ALTERUSER postgres WITH PASSWORD '123456';

修改postgres的监听地址,默认只能为 本地连接

代码语言:javascript复制
vi/var/lib/pgsql/11/data/postgresql.conf
listen_addresses = '*'  

允许所有地址 来连接该数据库

代码语言:javascript复制
vi/var/lib/pgsql/11/data/pg_hba.conf
host   all            all            0.0.0.0/0              md5

重启服务

代码语言:javascript复制
systemctl start postgresql-11

测试数据库远端登录

psql -Upostgres -h 192.168.99.221

注意:ZABBIX Server支持TimescaleDB,Zabbix Proxy不支持TimescaleDB。

ZABBIX TimescaleDB数据库配置

创建zabbix用户并授权

代码语言:javascript复制
sudo-upostgres psql
create user zabbix with password 'zabbixpwd123';
create database zabbix owner zabbix;
grantall privileges on database zabbix to zabbix;
数据库创建
echo"CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo-u postgrespsqlzabbix

以下步骤需要在安装完成zabbix-server执行

导入zabbix数据库

代码语言:javascript复制
zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz| sudo -u zabbix psql zabbix –h 192.168.99.221
zcat/usr/share/doc/zabbix-server-pgsql*/timescaledb.sql.gz| sudo -u zabbix psql zabbix  -h 192.168.99.221

至此zabbixTimescaledb数据库部署完成!

ZABBIX Server部署

配置ZABBIX官方yum数据源(zabbix 4.4 集成nginx rpm 包)

代码语言:javascript复制
yum  localinstall zabbix-nginx-conf-4.4.0-1.el7.noarch.rpm

安装LNMP软件包

代码语言:javascript复制
#yum install nginx php  php-fpm  php-mysql  –y

启动配置并开机启动

代码语言:javascript复制
systemctl  start nginx && systemctl enable nginx

注意:zabbix-nginx-conf软件包为Zabbix前端安装了单独的Nginx服务器。其配置文件位于中/etc/nginx/conf.d/zabbix.conf。为了使Zabbix前端正常工作,必须取消注释和设置listen和server_name指令。

查看端口是否已经启动监听状态

代码语言:javascript复制
[root@zabbix ~]# netstat  -auntlp |grep -w 80
启动php-fpm(不启动php-fpm,php链接失败)
systemctl start php-fpm && systemctl enable  php-fpm

ZABBIX-Server 安装

配置ZABBIX官方yum数据源

代码语言:javascript复制
rpm -Uvhhttps://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm

yum 安装zabbix server 和zabbix前端Web组件

代码语言:javascript复制
yum-y install zabbix-server-pgsql zabbix-web-pgsql

由于在线yum安装软件包较慢,这里将软件包上传至/opt目录下使用yum localinstall安装

代码语言:javascript复制
yum localinstall zabbix-server-pgsql-4.4.0-1.el7.x86_64.rpm zabbix-web-pgsql-4.4.0-1.el7.noarch.rpm zabbix-web-4.4.0-1.el7.noarch.rpm zabbix-get-4.4.0-1.el7.x86_64.rpm

编辑zabbix server 配置文件

代码语言:javascript复制
egrep-v "*#|^$" /etc/zabbix/zabbix_server.conf |grep DB
DBHost=192.168.99.221
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpwd123
DBPort=5432

启动并开机启动zabbix-serber服务

代码语言:javascript复制
#systemctl start zabbix-server && systemctl enable zabbix-server

ZABBIX PHP优化

配置PHP 相关参数

vim /etc/php-fpm.d/zabbix.conf

其配置文件位于中/etc/php-fpm.d/zabbix.conf。PHP参数已经配置。但是有必要在此文件中设置正确的date.timezone。

重启php-fpm

代码语言:javascript复制
systemctl restart php-fpm

ZABBIX Web UI 安装ZABBIX 4.4.0

ZABBIX Web中文显示优化

在Windows 系统中找到 C:WindowsFonts 中的楷体(常规)复制到windows桌面上

通过cecureFX上传在zabbix server /usr/share/fonts/dejavu/ 目录下

查看zabbix字体软链接

代码语言:javascript复制
[root@zabbixdejavu]# cd/etc/alternatives/
[root@zabbixdejavu]# ll
[root@zabbixdejavu]# mv simkai.ttf zabbix.ttf
[root@zabbixdejavu]# rm -f /etc/alternatives/zabbix-web-font
[root@zabbixdejavu]# ln -s /usr/share/fonts/dejavu/zabbix.ttf /etc/alternatives/zabbix-web-font

以上文章来源于开源搬运工宋师傅,作者songhongpeng

0 人点赞