Zabbix使用TimescaleDB数据库

news2024/11/17 0:44:31

一、前言

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.coloradmin.cn/o/1541029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Leetcode】2549. 统计桌面上的不同数字

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给你一个正整数 n n n &#xff0c;开始时&#xff0c;它放在桌面上。在 1 0 9 10^9 109 天内&#xff0c;每天都要执行下述步骤&#xff1a; 对于出现在桌面上的每个数字 x &am…

Programming Abstractions in C阅读笔记:p331-p337

《Programming Abstractions in C》学习第79天&#xff0c;p331-p337&#xff0c;总计7页。 一、技术总结 /** File: stack.h* -------------* This interface defines an abstraction for stacks. In any* single application that uses this interface, the values in* the…

2024/3/24 LED点阵屏

显示原理&#xff1a; 类似矩阵键盘&#xff0c;逐行or逐列扫描 74HC595是串行 寄存器 感觉就是三转八寄存器 并行&#xff1a;同时输出&#xff1b;串行&#xff1a;一位一位输出 先配置74HC595&#xff0c;重新进行位声明 sbit RCKP3^5; //RCLK sbit SCKP3^6; …

ai问答机器人是什么?介绍这几款实用ai问答机器人

ai问答机器人是什么&#xff1f;随着人工智能技术的飞速发展&#xff0c;AI问答机器人已成为我们生活中不可或缺的一部分。它们能够智能地解答各种问题&#xff0c;提供便捷的服务&#xff0c;极大地提升了用户体验。本文将带你了解AI问答机器人的基本概念&#xff0c;并介绍几…

30-函数(上)

30-1 函数是什么 在计算机科学中&#xff0c;子程序是一个大型程序中的某部分代码&#xff0c;由一个或多个语句块组成。它负责完成某项特定任务&#xff0c;而且相较于其他代码&#xff0c;具备相对的独立性。 一般会有输入参数并有返回值&#xff0c;提供对过程的封装和细节…

jenkins配置源码管理的git地址时,怎么使用不了 credential凭证信息

前提 Jenkins使用docker部署 问题 &#xff08;在jenlins中设置凭证的方式&#xff09;在Jenkins的任务重配置Git地址&#xff0c;并且设置了git凭证,但是验证不通过&#xff0c;报错; 无法连接仓库&#xff1a;Command "git ls-remote -h -- http://192.1XX.0.98:X02/…

梅林生态第一个Defi借贷协议零撸教程

简介&#xff1a;Avalon Finance是第一个基于Merlin Chain的去中心化借贷协议。它包括三个关键组成部分&#xff1a;超额抵押借贷、与借贷相关的衍生品交易和基于借贷的算法稳定币。 相关概念&#xff1a;梅林生态、Defi 融资信息&#xff1a;项目于3月15日完成种子轮融资&am…

IntelliJ IDEA集成git配置账号密码

1 背景说明 刚使用IDEA,本地也安装Git,在提交和拉取代码的时候,总提示登录框,而且登录框还不能输入账号密码,只能输入登录Token。如下: 从而无法正常使用IDEA的Git功能,很苦恼。 2 解决方法 2.1 安装Git 进入官网地址 https://git-scm.com/,点击下载: 浏览器直接…

数据结构——栈和队列的表示与实现详解

目录 1.栈的定义与特点 2.队列的定义与特点 3.案例引入 4.栈的表示和操作的实现 1.顺序栈的表示 代码示例&#xff1a; 2.顺序栈的初始化 代码示例&#xff1a; 3.判断栈是否为空 代码示例&#xff1a; 4.求顺序栈长度 代码示例&#xff1a; 5.清空顺序栈 …

官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会

摘要&#xff1a;本文整理自阿里云开源大数据平台徐榜江 (雪尽)&#xff0c;关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会&#xff0c;内容主要分为以下四部分&#xff1a; 1、Flink CDC 新仓库&#xff0c;新流程 2、Flink CDC 新定位&#xff0c;新玩法 3、Flin…

taro框架之taro-ui中AtSwipeAction的使用

题记&#xff1a;所需效果&#xff1a;滑动删除 工作进程 官网文档代码 <AtSwipeAction options{[{text: 取消,style: {backgroundColor: #6190E8}},{text: 确认,style: {backgroundColor: #FF4949}} ]}><View classNamenormal>AtSwipeAction 一般使用场景</…

Vue 3 里的 onMounted 怎么用?

疑问 最近&#xff0c;一直在学习 Vue 3&#xff0c;此前我不懂前端&#xff0c;也没写过 Vue 2&#xff0c;所以是从 0 开始学习 Vue 3 的。很多对普通人不是疑问的&#xff0c;在我这里也会不太清楚。 我在写项目的时候&#xff0c;常见的一种场景是这样的&#xff1a;页面…

Excel通过下拉菜单,显示不同图片

背景&#xff1a;有的时候需要通过更改下拉菜单来改变对应的 值/ 图片。 如果是数值的话就是我们常常用的Vlookup&#xff0c;这个可以很简单的实现这个功能。&#xff08;这个如果不知道请自行百度&#xff09; 但是如果是图片呢&#xff1f;这个就不常见了&#xff0c;那么…

41 物体检测和目标检测数据集【李沐动手学深度学习v2课程笔记】

目录 1. 物体检测 2. 边缘框实现 3.数据集 4. 小结 1. 物体检测 2. 边缘框实现 %matplotlib inline import torch from d2l import torch as d2ld2l.set_figsize() img d2l.plt.imread(../img/catdog.jpg) d2l.plt.imshow(img);#save def box_corner_to_center(boxes):&q…

企业计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密流程步骤

在网络技术飞速发展的今天&#xff0c;越来越多的企业走向了数字化办公模式&#xff0c;网络为企业的生产运营提高了效率&#xff0c;为企业带来了极大便利&#xff0c;但网络是一把双刃剑&#xff0c;在为人们提供便利的同时也会带来数据安全问题&#xff0c;网络数据安全一直…

NFS网络文件系统

目录 简介 案例 配置autofs自动挂载 客户端配置autofs 简介 NFS&#xff08;Network File System&#xff0c;网络文件系统&#xff09;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机&#xff08;不同的计算机、不同的操作系统&#xff09;之间通过TCP/I…

每日一题 --- 螺旋矩阵 II[力扣][Go]

螺旋矩阵 II 题目&#xff1a;59. 螺旋矩阵 II - 力扣&#xff08;LeetCode&#xff09; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出…

vulhub打靶记录——cengbox

文章目录 主机发现端口扫描搜索SSH EXPweb渗透nikto扫描目录扫描登录网站后台提权 主机发现 使用nmap扫描局域网内存活的主机&#xff0c;命令如下&#xff1a; nmap -sP 192.168.56.0/24192.168.56.1&#xff1a;主机IP&#xff1b;192.168.56.100&#xff1a;DHCP服务器IP&…

SpringCloud-Gateway服务网关

一、网关介绍 1. 为什么需要网关 Gateway网关是我们服务的守门神&#xff0c;所有微服务的统一入口。 网关的核心功能特性&#xff1a; 请求路由 权限控制 限流 架构图&#xff1a; 权限控制&#xff1a;网关作为微服务入口&#xff0c;需要校验用户是是否有请求资格&am…

windows 系统下(nacos1.x) nacos-1.1.3 链接数据库 mysql8.0 出错分析

** windows 系统下&#xff08;nacos1.x&#xff09; nacos-1.1.3 链接数据库 mysql8.0 出错分析 ** 1、首先以下方法亲测无效&#xff1a; 1&#xff09;需要在数据库 URL 链接配置信息中 添加 allowPublicKeyRetrievaltrue 无效 db.url.0**&allowPublicKeyRetrievalt…