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