Zabbix使用TimescaleDB数据库

一、前言

Zabbix 6.0 已发布很久,下个季度7.0应该会正式发布,但6.0也有许多新功能和新特性,这里介绍 6.0 配置 TimescaleDB,此安装配置方法可基本通用与其他版本。

二、TimescaleDB

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

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

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

三、安装及准备

1.初始化

yum update -y
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
dnf install chrony wget -y
systemctl enable --now chronyd
setenforce 0

注:zabbix 6.0 目前支持 postgresql 13 不支持最新的 14 版本,本次使用 postgresql 13+Timescaledb

2、安装postgresql

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

 3.安装Timescaledb

添加 Timescaledb 源

tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$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
EOL

安装 TimescaleDB 包

dnf install timescaledb-2-postgresql-13 -y

4.配置

1).初始化 pgsql

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

2).启动 pgsql server

systemctl enable --now postgresql-13

3).添加 Timescaledb 并配置参数

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

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

systemctl restart postgresql-13

4).建立 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 zabbix
systemctl restart postgresql-13

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

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

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

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

cat schema.sql |sudo -u zabbix psql zabbix
cat images.sql |sudo -u zabbix psql zabbix
cat 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.conf
sed -i 's/#port = 5432/port = 5432/g' /var/lib/pgsql/13/data/postgresql.conf
sed -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-13

 5.安装Zabbix Server

1).初始化

yum update -y
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
dnf --enablerepo=powertools install OpenIPMI-devel -y
dnf install make wget chrony gcc curl-devel net-snmp-devel \
libxml2-devel libevent-devel pcre-devel -y
setenforce 0
systemctl enable --now chronyd

2).由于后端采用 pgsql 数据库,因此需要安装 pgsql 的开发包

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

3).编译安装

useradd zabbix
wget https://cdn.zabbix.com/zabbix/sources/development/6.0/zabbix-6.0.0beta1.tar.gz
tar zxvf zabbix-6.0.0beta1.tar.gz
cd 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 && make install

 4).配置

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

sed -i 's/# DBHost=localhost/DBHost=数据库IP地址/g' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's/# DBPassword=/DBPassword=数据库密码/g' /usr/local/zabbix/etc/zabbix_server.conf

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

sed -i 's/# HANodeName=/HANodeName=zbx-node-01/g' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's/# NodeAddress=localhost:10051/NodeAddress=节点IP地址: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 Server
After=syslog.target
After=network.target
After=mysql.service
After=mysqld.service
After=mariadb.service
After=postgresql.service[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c \$CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0[Install]
WantedBy=multi-user.target
EOL

创建 zabbix agent 启动脚本

tee /lib/systemd/system/zabbix-agent.service <<EOL
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c \$CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix[Install]
WantedBy=multi-user.target
EOL

启动

使用以下命令启动 zabbix server 及 zabbix agent

systemctl enable --now zabbix-server
systemctl enable --now zabbix-agent

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

6.Zabbix WEB安装

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

1).初始化

yum update -y
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
dnf install wget chrony httpd php php-pgsql php-xml php-ldap php-json php-gd php-mbstring php-bcmath langpacks-zh_CN.noarch -y
systemctl enable --now chronyd
setenforce 0

2).安装Web

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

wget https://cdn.zabbix.com/zabbix/sources/development/6.0/zabbix-6.0.0beta1.tar.gz
tar zxvf zabbix-6.0.0beta1.tar.gz
cd zabbix-6.0.0beta1/ui
cp -raf * /var/www/html/

修改 php 参数,并启动 apache 和 php

sed -i 's/post_max_size = 8M/post_max_size = 16M/' /etc/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 300/' /etc/php.ini
sed -i 's/max_input_time = 60/max_input_time = 300/' /etc/php.ini
chown -R apache:apache /var/www/html/
systemctl enable --now httpd
systemctl enable --now php-fpm

3).Web 初始化 

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

 

确保这里全部 ok 再下一步

这里填入数据库服务器地址及配置的数据库密码,并取消使用 TLS 连接

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

确认无误后点击 Next

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

 

使用默认的帐号密码登陆,帐号:Admin 密码:zabbix

四、基本设置

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

探索技术无限可能,博主具有丰富监控模板资源及开发能力和项目管理经验,欢迎添加交流一起探讨,解决你的技术难题!

微信号:king_songax

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/564607.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Power BI ----SVG(圆环图)

圆环图助力矩阵图 定义度量值放置视觉对象 SVG是什么鬼&#xff0c;在现在的Web世界中越来越凸显这一标准的优势。关于SVG&#xff0c;我们只需要知道一点就好 ---- SVG 意为可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff09;。它是使用 XML 格式定义的图像。 由…

pytorch 实现多层神经网络MLP(Pytorch 05)

一 多层感知机 最简单的深度网络称为多层感知机。多层感知机由 多层神经元 组成&#xff0c;每一层与它的上一层相连&#xff0c;从中接收输入&#xff1b;同时每一层也与它的下一层相连&#xff0c;影响当前层的神经元。 softmax 实现了 如何处理数据&#xff0c;如何将 输出…

vue3对openlayers使用(加高德,天地图图层)

OpenLayers认识 WebGIS四大框架&#xff1a; Leaflet、OpenLayers、Mapbox、Cesium OpenLayers 是一个强大的开源 JavaScript 地图库&#xff0c;专注于提供可嵌入网页的交互式地图体验。作为一款地理信息系统&#xff08;GIS&#xff09;的前端开发工具&#xff0c;OpenLaye…

[套路] 浏览器引入Vue.js场景-WangEditor富文本编辑器的使用 (永久免费)

系列文章目录 [套路] el-table 多选属性实现单选效果[套路] 基于服务内存实现的中文拼音混合查询[套路] Bypass滑块验证码 目录 系列文章目录前言一、实现1.1 场景1.2 Window对象简介1.3 引入WangEditor1.4 页面配置 前言 公司使用freemarker的老旧SpringBootWeb后台项目, 前…

前端框架前置课(1)---AJAX阶段

1. AJAX入门 1.1 AJAX概念和axios使用 1.1.1 什么是AJAX? 1.1.2 怎么用AJAX? 引入axios.js 获取省份列表数据 1.2 认识URL 1.3 URL查询参数 1.4 常用请求方和数据提交 1.5 HTTP协议-报文 1.5.1 HTTP响应状态码 1.5.1.1 状态码&#xff1a;1XX&#xff08;信息&#xff09…

DCDC-Buck降压电路

DCDC DCDC转换器是输入、输出电压类型均为直流的一种开关电源&#xff1b;是一种在直流电路中将一个电压值的电能转换成另一个电压值的电能转换装置。 DCDC转换器可以将一个5.0V直流电压转换成1.5V/12.0V直流电压。 DCDC电源可分为三类&#xff1a;Buck降压型,Boost升压型,Buc…

小程序英文口语发音评测

一、英文口语评测需求 在全球化的今天&#xff0c;英语已经成为了世界上最重要的国际语言之一。无论是在国际商务、科技研究、教育还是日常生活中&#xff0c;英语都扮演着举足轻重的角色。因此&#xff0c;掌握英文口语的能力对于个人的职业发展、学术研究以及跨文化交流都具…

石子合并与果子合并:区间动态规划和贪心

果子合并是如何将一堆果子合并起来所消耗体力最少&#xff0c;石子合并也是将一堆石子合并起来质量最小&#xff0c;但不同的是 石子合并只能相邻的两个合并 。本篇通过讲解这两个相似例题&#xff0c;来学习区间dp与贪心。 目录 石子合并&#xff1a; 题目&#xff1a; 思路…

pta-洛希极限

科幻电影《流浪地球》中一个重要的情节是地球距离木星太近时&#xff0c;大气开始被木星吸走&#xff0c;而随着不断接近地木“刚体洛希极限”&#xff0c;地球面临被彻底撕碎的危险。但实际上&#xff0c;这个计算是错误的。 洛希极限&#xff08;Roche limit&#xff09;是一…

java面向对象编程基础

对象&#xff1a; java程序中的对象&#xff1a; 本质上是一种特殊的数据结构 对象是由类new出来的&#xff0c;有了类就可以创建对象 对象在计算机的执行原理&#xff1a; student s1new student();每次new student(),就是在堆内存中开辟一块内存区域代表一个学生对象s1变…

LangChain-Chatchat知识库对话

前言 上次我们完成了Chatchat的本地部署&#xff0c;使用了LLM对话的功能。这次我们尝试一下其他的功能&#xff0c;之前总是有报错没有跑通&#xff0c;这次处理了几个问题之后才跑通了知识库对话和文件对话。 知识库对话 原理: 首先我们看这个图可以明白&#xff0c;知识库…

go面向对象

继承 封装 多态 定义结构体 //定义老师的结构体 type Teacher struct {Name stringAge intSchool string }func main() {var t1 Teacherfmt.Println(t1)t1.Name "tom"t1.Age 20t1.School "school"fmt.Println(t1) } 结构体实例的创建 package ma…