基于TimeScaleDB(PG时序数据库)离线部署Zabbix5.4
基于TimeScaleDB(PG时序数据库)离线部署Zabbix5.4
原创 Zabbix开源社区 Zabbix开源社区 1周前
蔡斯 | Zabbix资深玩家
曾接管上千主机的上云迁移及应用运维,0到1构建Zabbix+Grafana监控体系。
精通互联网服务组件性能监控及告警优化,基于ZabbixAPI研发SDK对接蓝鲸CMDB,实现主机资产属性自动管理。
2021 Zabbix深圳大会圆桌讨论嘉宾。
一、背景介绍
考虑到安全因素,公司机房管理员通常会将服务器外网访问权限屏蔽,如应用运维有此方面的需求,在没有自建仓库的前提下,要走网络工单申请临时放通,而且只能针对特定网址开放,非常繁琐。这时源码编译就派上用场了。本文主要介绍如何在这种场景下通过源码编译方式,安装ZABBIX最新版及TimeScaleDB后端库(PG时序数据库)。
1.1、关于ZABBIX5.4
ZABBIX5.4系列已发布一段时间,其许多的新特性对运维有很大帮助。如定期生成的PDF可作为运维巡检的日报、周报或月报;基于标签式管理监控对象,包括模板、主机、主机原型、触发器、指标和事件;在线Git模板存储库,可通过Zabbix API实时保持最新模板等等。更多特性可查看官网中文介绍
1.2、关于TimeScaleDB
ZABBIX从4.2开始支持TimeScaleDB,它是一种基于PostGreSQL的数据库解决方案,可自动将数据划分为基于时间的块,以支持更快的大规模性能。Zabbix通过hypertable分区表实现监控数据自动清理和压缩,为大规模监控场景而生。值得注意的是,目前TimeScaleDB不支持ZABBIX PROXY作为后端库。
二、前置条件
2.1、环境介绍
环境 版本 备注
CentOS 7.9 x86_64
Zabbix 5.4.4 官网最新发行版,与DB同机部署
PHP 7.4.24 7.2.5+,暂不支持PHP8.0
Cmake 3.21.2 3.4+,编译TimeScale
PostgreSQL 13.4 官网最新发行版
TimeScaleDB 2.1.1 Zabbix5.4支持1.5~2.1
2.2、系统优化
1)将系统升级到最新
CentOS Linux release 7.9.2009 (Core)
2)关闭SeLinux/FireWall
3)核实操作有效性
sestatusSELinux status: disabled
systemctl status firealld● firealld.service - firealld - dynamic fireall daemon
Loaded: loaded (/usr/lib/systemd/system/firealld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firealld(1)
三、部署后端库
3.1、后端库依赖包安装
在编译过程中,如提示缺少相关包的错误,一般情况下只需安装其对应的devel包即可解决问题,而CentOS的Yum base仓会满足大部分场景,无需额外进行离线编译。
3.2、部署PostGreSQL
1)访问链接 ,下载PostGreSQL13.4,将pg安装包上传至包管理目录。
图片
mkdir -p /data/packages cd /data/packages rz -be md5sum postgresql-13.4.tar.bz27bda65a37c46b8b2c1933d9d1cd677f2 postgresql-13.4.tar.bz2
2)创建组和用户
3)编译安装
mkdir -p /data/postgres/{data,logs} tar xf postgresql-13.4.tar.bz2 cd postgresql-13.4 ./configure --prefix=/data/postgres --enable-rpath --enable-nls --enable-dtrace --ith-python --ith-libxml --ith-libxslt --ith-openssl make -j8 && make install4)设置系统环境变量
cat >> /etc/profile << EOF postgresexport PGHOME=/data/postgres
export PGDATA=/data/postgres/data/
export LD_LIBRARY_PATH=$PGHOME/lib
export PATH=$PATH:$HOME/bin:$PGHOME/bin
EOF
VERSION = PostgreSQL 13.4
5)初始化数据库
$ initdb -D /data/postgres/data/
$ pg_ctl -D /data/postgres/data/ -l /data/postgres/logs/pgsql.log start
$ psql
psql (13.4)
Type “help” for help.
6)测试数据库
postgres=# create database test;
CREATE DATAbase
postgres=# c test
You are no connected to database “test” as user “postgres”.
test=# create table test (id integer,name text);
CREATE TABLE
test=# insert into test values (1,‘chasii’);
INSERT 0 1
test=# insert into test values (1,‘蔡斯’);
INSERT 0 1
test=# select from test;
id | name
----±-------
1 | chasii
1 | 蔡斯
(2 ros)
test=# q
7)实现远程访问
$ cp /data/postgres/data/pg_hba.conf{,.bak}
$ cp /data/postgres/data/postgresql.conf{,.bak}
$ echo “host all all 0.0.0.0/0 passord” >> /data/postgres/data/pg_hba.conf
$ sed -i “s/#listen_addresses = ‘localhost’/listen_addresses = ‘0.0.0.0’/g” /data/postgres/data/postgresql.conf
$ pg_ctl -D /data/postgres/data/ -l /data/postgres/logs/pgsql.log restart
$ stat -lntp|grep 5432
(Not all processes could be identified, non-oned process info
ill not be shon, you ould have to be root to see it all.)
tcp 0 0 0.0.0.0:5432 0.0.0.0: LISTEN 30919/postgres
3.3、安装TimeScaleDB
1)安装CMake最新版,TimeScaleDB编译安装依赖CMake v3.11+,而CentOS7.9初始版本为v2.8。我们访问官网下载最新版CMake源码包进行编译安装。
cmake version 3.21.2
2)安装TimeScaleDB,这里选择2.1.1,GigHub地址
3)添加TimeScaleDB共享库到pgsql的配置文件
su - postgres$ sed -i “s/#shared_preload./shared_preload_libraries = ‘timescaledb’/g” /data/postgres/data/postgresql.conf
$ pg_ctl -D /data/postgres/data/ -l /data/postgres/logs/pgsql.log restart
4)为ZABBIX创建PG用户和数据库
$ psql
psql (13.4)
Type “help” for help.
postgres=# create role zabbix ith passord ‘zabbix’ login;
CREATE ROLE
postgres=# create database zabbix ith template template0 encoding ‘UTF8’;
CREATE DATAbase
postgres=# grant all on database zabbix to zabbix;
GRANT
5)为Zabbix库增加TimeScale扩展
$ psql -Uzabbix -dzabbix -h127.0.0.1
psql (13.4)
Type “help” for help.
zabbix=> CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
WARNING:
WELCOME TO
|_ () | | | _ ___
| | _ _ __ ___ ___ ___ ___ __ | | | | | | |/ /
| | | | _ _ / _ / __|/ __/ _ | |/ _ | | | ___
| | | | | | | | | _/_ (| (| | | __/ |/ /| |/ /
|| ||| || ||_||/__,|_|_|___/ ____/
Running version 2.1.1
For more information on TimescaleDB, please visit the folloing links:
- Getting started: https://docs.timescale./getting-started
- API reference documentation: https://docs.timescale./api
- Ho TimescaleDB is designed: https://docs.timescale./introduction/architecture
Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and ho to disable, please see our docs https://docs.timescaledb./using-timescaledb/telemetry.
CREATE EXTENSION
6)查询Zabbix库扩展
zabbix=> select oid,extname,extoner,extversion from pg_extension here extname = ‘timescaledb’;
oid | extname | extoner | extversion
-------±------------±---------±-----------
25185 | timescaledb | 24639 | 2.1.1
(1 ro)
7)创建Zabbix数据库、索引、分区等配置
cd /data/packages/ tar xf zabbix-5.4.4.tar.gz cd zabbix-5.4.4/database/postgresql/ su postgres$ psql -Uzabbix -dzabbix -h127.0.0.1 -f schema.sql
$ psql -Uzabbix -dzabbix -h127.0.0.1 -f images.sql
$ psql -Uzabbix -dzabbix -h127.0.0.1 -f data.sql
$ psql -Uzabbix -dzabbix -h127.0.0.1 -f timescaledb.sql
NOTICE: PostgreSQL version 13.4 is valid
NOTICE: TimescaleDB extension is detected
NOTICE: TimescaleDB version 2.1.1 is valid
NOTICE: TimescaleDB is configured suessfully
DO
从以上命令执行结果可看出timescaledb.sql语句已成功配置且当前版本有效。通过解读该sql语句可看出其主要作用于history、history_uint、history_log、history_text、history_log、history_str、trends、trends_unit,这7张大表,通过hypertable表将数据按设定的(chunk_time_interval)时间条件自动分块,对7天前的监控数据进行压缩。
四、部署前端组件
4.1、依赖包安装
yum -y install patch gd-devel libxml2-devel libmcrypt-devel openldap-devel mhash-devel curl-devel libpng-devel libjpeg-devel freetype-devel sqlite-devel oniguruma-devel zlib-devel gettext-devel
4.2、安装HTTPD
这里可以选择HTTPD,也可以选择NGINX,后者性能更优越。
HTTP/1.1 403 Forbidden
4.3、编译安装PHP
1)Zabbix从5.0开始,最低要求PHP7.2,而CentOS默认base库只有PHP5.4。需访问官网下载合适版本。
–prefix=/usr/local/php
–enable-fpm
–enable-gd
–enable-ftp
–ith-freetype
–ith-jpeg
–ith-iconv
–ith-zlib
–enable-xml
–disable-rpath
–enable-bcmath
–enable-shmop
–enable-sysvsem
–enable-inline-optimization
–ith-curl
–enable-mbregex
–enable-mbstring
–ith-openssl
–ith-mhash
–enable-ptl
–enable-sockets
–ith-xmlrpc
–enable-soap
–ithout-pear
–ith-gettext
–ith-pdo-pgsql=/data/postgres
PHP 7.4.24 (cli) (built: Sep 24 2021 16:53:46) ( NTS )
php -m | grep pgsql # 查询PHP是否有pgsql模块2)配置PHP相关参数
cp php.ini-production /usr/local/php/lib/php.ini sed -i -e ‘s/post_max_size = 8M/post_max_size = 16M/g’ -e ‘s/max_execution_time = 30/max_execution_time = 300/g’ -e ‘s/max_input_time = 60/max_input_time = 300/g’ -e ‘s#;date.timezone.#date.timezone = Asia/ShangHai#g’ /usr/local/php/lib/php.ini cd /usr/local/php/etc/ mv php-fpm.conf.default php-fpm.conf cd php-fpm.d/ mv .conf.default .conf3)配置PHP服务自启动
cp./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm chkconfig --add /etc/init.d/php-fpm && chkconfig php-fpm on五、部署后端组件
5.1、后端组件依赖包安装
5.2、添加ZABBIX用户组及用户
groupadd zabbix useradd -g zabbix -d /usr/local/zabbix -s /bin/false zabbix5.3、源码编译ZABBIX最新版
cd /data/packages tar xf zabbix-5.4.4.tar.gz cd zabbix-5.4.4 ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --ith-postgresql --ith--snmp --ith-libcurl --ith-libxml2 --ith-ssh2 --ith-libpcre make install /usr/local/zabbix/sbin/zabbix_server -V |head -n 1zabbix_server (Zabbix) 5.4.4
5.4、配置ZABBIX SERVER数据库密码
5.5、配置ZABBIX AGENTD配置
cd /usr/local/zabbix/etc/ cp zabbix_agentd.conf{,.bak} tee > zabbix_agentd.conf << EOFPidFile=/tmp/zabbix_agentd.pid
LogType=file
LogFile=/tmp/zabbix_agentd.log
LogFileSize=5
SourceIP=127.0.0.1
Server=127.0.0.1
ListenPort=10050
ServerActive=127.0.0.1
Hostname=Zabbix server
HostmetadataItem=system.uname
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/.conf
UnsafeUserParameters=1
EOF
5.6、配置ZABBIX服务自启动
Restarting zabbix_server (via systemctl): [ OK ]
/etc/init.d/zabbix_agentd restartRestarting zabbix_agentd (via systemctl): [ OK ]
错误提示1提示pg共享库找不到
– Unit zabbix_server.service has begun starting up. Sep 07 15:58:52 localhost.localdomain zabbix_server[48874]: Starting Zabbix Server: /usr/local/sbin/zabbix_server: error hile loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
将依赖库软链接到系统默认共享库位置/ln -fs /data/postgres/lib/libpq.so.5 /usr/lib64/
六、配置前端页面
6.1、配置ZABBIX站点
6.2、增加ZABBIX站点
tee > /etc/httpd/conf.d/zabbix.conf << EOFServerSignature Off
ServerTokens Prod
StartServers 2 # 启动时进程数
MinSpareThreads 25 # 最小空闲线程数
MaxSpareThreads 75 # 最大空闲线程数
ThreadLimit 64 # 每个进程可以启动的线程数量上限值
ThreadsPerChild 25 # 每个进程可以启动的线程数量
MaxRequestWorkers 400 # 线程数量最大值
MaxConnectionsPerChild 0 # 最大连接数限制
SetHandler “proxy:fcgi://127.0.0.1:9000”
AddType text/html .php
DirectoryIndex index.php
2)ZABBIX安装程序会自动检测PHP版本、配置参数是否符合要求,因前面我们已经初始化PHP.INI,此步可正常通过。如图二所示。
图片
3)配置DB数据库信息,这里建议将Database TLS encryption配置项加上,避免出现一些安全问题。如图三所示。
图片
4)如果出现Unable to determine current Zabbix database version:the table “dbversion” as not found,多半是账号无权限。那么可以临时将zabbix账号权限提升为"SUPSERUSER"。ALTER USER zabbix WITH SUPERUSER;。如图四所示。
图片
5)如数据库配置正确,那么进入到ZABBIX SERVER配置页,这里默认就好。NAME配置项是ZABBIX站点的标题。
图片
6)设定ZABBIX时区
图片
7)到了此步,那么恭喜你,系统配置完全通过,点击下一步会尝试写入zabbix.conf.php文件到站点conf文件夹里。
图片
8)写入配置PHP配置文件,如提示失败,通常做法是用户权限或文件夹权限问题。一般做法是将ZABBIX站点权限修改为777,但安全上可能存在风险。
图片
9)登录ZABBIX,默认账号Admin、默认密码zabbix
图片
10)成功登入后,"Zabbix server is running"的状态为Yes,系统正常运行。
图片
11)查看监控数据,Agent正常上报。
图片
12)通过Administration->General->Housekeeping可配置是否压缩历史数据,以及压缩时间点(系统限制最短为7天)。
图片
至此,基于TimeScaleDB(PG时序数据库)离线部署Zabbix5.4的整个过程算完成了,欢迎交流。
往期推荐
●Zabbix学习资料申请(历届峰会ppt)
● 第三方平台告警接入、翻译、关联恢复
● 大运汽车如何基于Zabbix+Gafana实现硬件可视化展示?
● 兼容信创:如何在银河麒麟系统上离线安装Zabbix5.0?
备注“使用Zabbix年限+企业+姓名”
进入交流群,4000+用户已加入
一个人走得快,一群人走得远
空调维修
- 海信电视维修站 海信电视维修站点
- 格兰仕空调售后电话 格兰仕空调维修售后服务电
- 家电售后服务 家电售后服务流程
- 华扬太阳能维修 华扬太阳能维修收费标准表
- 三菱电机空调维修 三菱电机空调维修费用高吗
- 美的燃气灶维修 美的燃气灶维修收费标准明细
- 科龙空调售后服务 科龙空调售后服务网点
- 华帝热水器维修 华帝热水器维修常见故障
- 康泉热水器维修 康泉热水器维修故障
- 华凌冰箱维修电话 华凌冰箱维修点电话
- 海尔维修站 海尔维修站点地址在哪里
- 北京海信空调维修 北京海信空调售后服务
- 科龙空调维修 科龙空调维修故障
- 皇明太阳能售后 皇明太阳能售后维修点
- 海信冰箱售后服务 海信冰箱售后服务热线电话
- 海尔热水器服务热线