张世宏(当代张思德) | Zabbix开源社区签约专家

2017-2021年连续5届Zabbix中国峰会演讲高朋2020年Zabbix环球峰会演讲高朋自主研发开源组件Zabbix报表系统ZbxTable,在社区大获好评序言

Zabbix 6.0目前已发布beta1版本,包含浩瀚新功能和新特性,本文紧张先容Zabbix 6.0 配置TimescaleDB,此安装配置方法可基本通用与其他版本。

TimescaleDB

TimescaleDB基于PostgreSQL数据库打造的一款时序数据库,插件化的形式支配,随着PostgreSQL的版本升级而升级,具备以下特点:

php安装pg组件Zabbix 60 TimescaleDB 安装设置装备摆设 RESTful API

基于时序优化;自动分片(按韶光、空间自动分片(chunk));全SQL接口;支持垂直于横向扩展;支持韶光维度、空间维度自动分区。
空间维度指属性字段(例如传感器ID,用户ID等);支持多个SERVER,多个CHUNK的并行查询。
分区在TimescaleDB中被称为chunk;自动调度CHUNK的大小;内部写优化(批量提交、内存索引、事务支持、数据倒灌);繁芜查询优化(根据查询条件自动选择chunk,最近值获取优化(最小化的扫描,类似递归收敛),limit子句pushdown到不同的;server,chunks,并行的聚合操作);利用已有的PostgreSQL特性(支持GIS,JOIN等),方便的管理(流复制、PITR);支持自动的按韶光保留策略(自动删除过旧数据);

Zabbix 从5.0版本开始全面支持TimescaleDB,并针对其特性做了优化。
可自动压缩历史数据存储,节省50-70%的存储空间,同时具备自动分区功能。
通过Zabbix Housekeeper清理历史数据时直接清理对应的分区,大大提高了历史数据的清理效率。
建议新建系统采取TimescaleDB方案。

环境先容

角色

配置

主机名

IP

版本

Zabbix Server

4v8G40G CentOS 8.5_x64

zbx-srv-61

172.16.66.61

Zabbix 6.0 beta1

Zabbix Web

4v8G40G CentOS 8.5_x64

zbx-web-63

172.16.66.63

Apache 2.4.3/PHP 7.2.24

Zabbix DB

4v8G40G CentOS 8.5_x64

zbx-db-64

172.16.66.64

PostgreSQL 13/TimescaleDB 2

此为实验环境,生产环境建议按照实际须要调度机器硬件配置。
所有机器配置韶光同步,并添加对应的hosts.

172.16.66.61 zbx-srv-61172.16.66.63 zbx-web-63172.16.66.64 zbx-db-61Zabbix DB

安装好系统对系统进行初始化配置,安装必要的包.

初始化

yum update -ysed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configsystemctl disable --now firewallddnf install chrony wget -ysystemctl enable --now chronydsetenforce 0

Zabbix 6.0目前支持PostgreSQL 13不支持最新的14版本,本次利用PostgreSQL 13+TimescaleDB。

安装PostgreSQL

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpmdnf -qy module disable postgresqldnf install -y postgresql13-server安装TimescaleDB

添加TimescaleDB源

tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL[timescale_timescaledb]name=timescale_timescaledbbaseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$basearchrepo_gpgcheck=1gpgcheck=0enabled=1gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkeysslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crtmetadata_expire=300EOL

安装TimescaleDB包

dnf install timescaledb-2-postgresql-13 -y配置

初始化PostgreSQL

/usr/pgsql-13/bin/postgresql-13-setup initdb

启动PostgreSQL server

systemctl enable --now postgresql-13

添加TimescaleDB并配置参数

timescaledb-tune --pg-config=/usr/pgsql-13/bin/pg_config

会涌现交互画面,一起y 即可,此步骤会根据当前机器配置,调度PostgreSQL配置参数,并加载Timescaledb插件库.重启PostgreSQL生效.

systemctl restart postgresql-13

建立Zabbix用户及数据库

sudo -u postgres createuser --pwprompt zabbix

此处是须要输入数据库zabbix用户的密码,输入二次后确认。
此处配置密码为: zabbixpwd_123后续zabbix server连接数据库利用这个密码,用户为zabbix创建zabbix数据库

sudo -u postgres createdb -O zabbix zabbix

为Zabbix数据库启用TimescleDB插件

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbixsystemctl restart postgresql-13

成功后会涌现如下画面,表示配置完成。

下载Zabbix 6.0beta1源码并导入数据库。

wget https://cdn.zabbix.com/zabbix/sources/development/6.0/zabbix-6.0.0beta1.tar.gztar zxvf zabbix-6.0.0beta1.tar.gzcd zabbix-6.0.0beta1/database/postgresql/useradd zabbix

依次按照顺序导入三个Zabbix sql文件

cat schema.sql |sudo -u zabbix psql zabbixcat images.sql |sudo -u zabbix psql zabbixcat data.sql |sudo -u zabbix psql zabbix

导入TimescleDB表配置sql

cat timescaledb.sql |sudo -u zabbix psql zabbix

导入成功后会后如下提示

修正配置许可远程连接

sed -i "s/#listen_addresses = 'localhost'/listen_addresses = ''/g" /var/lib/pgsql/13/data/postgresql.confsed -i 's/#port = 5432/port = 5432/g' /var/lib/pgsql/13/data/postgresql.confsed -i 's/max_connections = 100/max_connections = 500/g' /var/lib/pgsql/13/data/postgresql.conf

连接数修正成500,生产可根据实际情形修正。
配置利用md5办法认证

vi /var/lib/pgsql/13/data/pg_hba.conf

添加如下信息到# IPv4 local connections之后

host all all 0.0.0.0/0 md5

重启pgsql

systemctl restart postgresql-13Zabbix Server

Zabbix Server利用源码编译办法安装,其他版本可参考此安装办法。

初始化

yum update -ysed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configsystemctl disable --now firewallddnf --enablerepo=powertools install OpenIPMI-devel -ydnf install make wget chrony gcc curl-devel net-snmp-devel \libxml2-devel libevent-devel pcre-devel -ysetenforce 0 systemctl enable --now chronyd

由于后端采取PostgreSQL数据库,因此须要安装PostgreSQL的开拓包。

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpmdnf -qy module disable postgresqldnf install -y postgresql13-devel -y编译

下载Zabbix Server源码

useradd zabbixwget https://cdn.zabbix.com/zabbix/sources/development/6.0/zabbix-6.0.0beta1.tar.gztar zxvf zabbix-6.0.0beta1.tar.gzcd zabbix-6.0.0beta1/

编译

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent \--with-postgresql=/usr/pgsql-13/bin/pg_config --with-net-snmp \--with-libcurl --with-libxml2 --with-openipmi

此处会检测各种依赖组件及配置,如果涌现error根据缺点安装对应组件,无误后终极会输出所要安装的内容。

实行make

makemake install配置

安装后,须要修正配置文件里的数据库连接信息

sed -i 's/# DBHost=localhost/DBHost=172.16.66.64/g' /usr/local/zabbix/etc/zabbix_server.confsed -i 's/# DBPassword=/DBPassword=zabbixpwd_123/g' /usr/local/zabbix/etc/zabbix_server.conf

Zabbix 6.0增加了二个关于HA的配置参数,建议配置

sed -i 's/# HANodeName=/HANodeName=zbx-srv-61/g' /usr/local/zabbix/etc/zabbix_server.confsed -i 's/# NodeAddress=localhost:10051/NodeAddress=172.16.66.61:10051/g' /usr/local/zabbix/etc/zabbix_server.conf

HANodeName修正为主机名,这里最好配置唯一;NodeAddress为节点地址,这里配置为实际ip+默认的10050端口;创建Zabbix Server启动脚本

tee /lib/systemd/system/zabbix-server.service <<EOL[Unit]Description=Zabbix ServerAfter=syslog.targetAfter=network.targetAfter=mysql.serviceAfter=mysqld.serviceAfter=mariadb.serviceAfter=postgresql.service[Service]Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"EnvironmentFile=-/etc/sysconfig/zabbix-serverType=forkingRestart=on-failurePIDFile=/tmp/zabbix_server.pidKillMode=control-groupExecStart=/usr/local/zabbix/sbin/zabbix_server -c \$CONFFILEExecStop=/bin/kill -SIGTERM $MAINPIDRestartSec=10sTimeoutSec=0[Install]WantedBy=multi-user.targetEOL

创建Zabbix Agent启动脚本

tee /lib/systemd/system/zabbix-agent.service <<EOL[Unit]Description=Zabbix AgentAfter=syslog.targetAfter=network.target[Service]Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agentd.conf"EnvironmentFile=-/etc/sysconfig/zabbix-agentType=forkingRestart=on-failurePIDFile=/tmp/zabbix_agentd.pidKillMode=control-groupExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c \$CONFFILEExecStop=/bin/kill -SIGTERM $MAINPIDRestartSec=10sUser=zabbixGroup=zabbix[Install]WantedBy=multi-user.targetEOL启动

利用以下命令启动Zabbix Server及Zabbix Agent

systemctl enable --now zabbix-serversystemctl enable --now zabbix-agent

如启动非常,查看日志确认非常,日志位置/tmp/zabbix_server.log

Zabbix Web

Zabbix 6.0须要php最低版本为7.2,由于利用PostgreSQL,因此须要按照php的PostgreSQL扩展组件。

初始化

yum update -ysed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configsystemctl disable --now firewallddnf install wget chrony httpd php php-pgsql php-xml php-ldap php-json php-gd php-mbstring php-bcmath langpacks-zh_CN.noarch -ysystemctl enable --now chronydsetenforce 0安装Web

下载Zabbix源码,并拷贝到对应目录

wget https://cdn.zabbix.com/zabbix/sources/development/6.0/zabbix-6.0.0beta1.tar.gztar zxvf zabbix-6.0.0beta1.tar.gzcd zabbix-6.0.0beta1/uicp -raf /var/www/html/

修正php参数,并启动Apache和php

sed -i 's/post_max_size = 8M/post_max_size = 16M/' /etc/php.inised -i 's/max_execution_time = 30/max_execution_time = 300/' /etc/php.inised -i 's/max_input_time = 60/max_input_time = 300/' /etc/php.inichown -R apache:apache /var/www/html/systemctl enable --now httpdsystemctl enable --now php-fpmWeb初始化

浏览器输入Web IP地址:http://172.16.66.63/ 这里有个提示,不用关注

确保这里全部ok再下一步,

这里填入数据库做事器地址及配置的数据库密码zabbixpwd_123,并取消利用TLS连接

这里zabbix server name留空即可,选择对应的时区,这里选择Asia/Shanghai

确认无误后点击Next

创建文件成功,如失落败可能是web目录没有写入权限

利用默认的帐号密码上岸,帐号:Admin 密码:zabbix

首页

安装成功

基本设置

安装完之后,须要对系统进行一些配置Administrator-Greneral-Housekeeping这里可配置history(详情)数据与Trend(趋势)数据保留的韶光。
默认已开启7天历史数据压缩。