zabbix整合prometheus的数据

1 zabbix安装

官方文档参考

https://www.zabbix.com/download?zabbix=6.0&os_distribution=centos&os_version=7&components=proxy&db=mysql&ws=

https://www.zabbix.com/download?zabbix=4.0&os_distribution=centos&os_version=7&components=server_frontend_agent&db=mysql&ws=apache

1.1 zabbix软件安装

[root@zabbix zabbix]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm ## 安装zabbix仓库
[root@zabbix zabbix]# yum clean all
[root@zabbix zabbix]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent ##安装zabbix server、前端、代理

1.2 数据库安装配置

1.2.1 数据库安装

[root@zabbix zabbix]# yum install mariadb-server
[root@zabbix zabbix]# systemctl start mariadb
[root@zabbix zabbix]# systemctl enable mariadb
[root@zabbix zabbix]# mysql_secure_installation ##设置数据库root密码并进行安全配置

1.2.2 创建zabbix用户并授权

[root@zabbix zabbix]# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;

1.2.3 导入数据库

[root@zabbix zabbix]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

1.3 配置文件中修改zabbix用户数据库密码

[root@zabbix zabbix]# cat /etc/zabbix/zabbix_server.conf |grep -v "^#"|grep DBPassword

1.4 修改前端显示时区

[root@zabbix zabbix]# grep timezone /etc/httpd/conf.d/zabbix.confphp_value date.timezone Asia/Shanghai

1.5 启动zabbix相关服务

[root@zabbix zabbix]# systemctl restart zabbix-server zabbix-agent httpd
[root@zabbix zabbix]# systemctl enable zabbix-server zabbix-agent httpd

1.6 访问zabbix

ui上输出zabbix服务器地址加/zabbix即可访问到zabbix初始化页面

http://172.18.100.137/zabbix

图片

2 zabbix初始化

2.1 环境检查

查看是否有包或插件不满足条件

图片

2.2 数据库配置

根据实际情况配置zabbix使用的数据库及用户名密码等信息

图片

2.3 zabbix服务配置

图片

2.4 信息确认

图片

2.5 配置完成

图片

2.6 登录zabbix

配置完成以后即可登录zabbix,默认zabbix的用户名为Admin,密码为zabbix

图片

2.7 修改页面为中文显示

图片

3 zabbix对接prometheus

3.1 前提条件

  • zabbix版本要大于4.2版本

  • zabbix服务器需要能访问被管控节点的9100端口

在4.2及以上版本的zabbix中,提供了prometheus pattern和prometheus to json两种监控项预处理方式来处理prometheus的监控数据,我们可以通过http代理的方式无需安装agent来管理prometheus中的主机。

3.2 zstack中主机监控介绍

ZStack云平台集成了promehtus来获取物理机及云主机的监控数据。其中cpu、内存、磁盘、网络等监控数据来源由安装在物理机上的Prometheus客户端node_exporter提供。node_exporter相关信息可参考

https://github.com/prometheus/node_exporter

可以通过http://{物理机ip}:9100/metrics来查看node_exporter获取到的监控数据

图片

上述输出中高亮部分,node_cpu_guest_seconds_total为metric名,cpu、mode为label名,26和user为两个lable的值。55184.82为metric的实际值。

3.3 创建一个主机群组

创建一个名为prometheus_node的主机群组

图片

3.4 创建一个主机

创建一个主机,填写好以下信息,主机无需安装任何zabbix代理

  • 主机名称:填写好主机名称

  • 群组:选择我们刚创建好的群组

  • 接口:填写要添加的主机的ip地址,后面的端口无需配置保持默认即可

  • 代理程序检测:选择无agent代理程序

图片

3.5 创建一个http代理类型的监控项

该代理的作用为为后续的监控项提供数据来源,进入刚创建的主机页面,点击监控项,填写以下信息,创建一个http代理类型的监控项。

  • 名称:填写监控项的名称

  • 类型:http代理

  • 键值:master

  • URL:填写物理机的监控数据地址

  • 主机接口:选择我们刚刚创建的主机

  • 信息类型:文本

  • 更新间隔:5s

  • 历史数据保留时长:do not keep history

其余项保持默认即可,设置完成后点击添加。

图片

图片

3.6 监控单项指标

下面通过创建一个指标来获取网卡br_bond1的传输包总量

3.6.1 创建一个Dependent item

首先查看相关的指标信息。监控项相关信息参考

https://lnsyyj.github.io/2019/05/27/prometheus-node-exporter-%E7%9B%91%E6%8E%A7%E9%A1%B9/

图片

主机下新建一个监控项

  • 名称:填写监控项的名称,可以以metric name和label name命名

  • 类型:相关项目(Dependent item)

  • 键值:transmit_br_bond1

  • 主要项:选择前面创建好的主要项(prometheus node exporter)

  • 信息类型:根据监控项的情况进行选择。数据包总量是一个非负整数,所以信息类型选择数字(无正负)

其它值保持默认

图片

给监控项配置一个进程

  • 名称:prometheus pattern

  • 参数:node_network_transmit_packets_total{device="br_bond1"}。参数的形式为"metric name{label name = label value}",根据具体的监控项而定。

图片

3.6.2 查看创建好的监控项的数据

在监测-->最新数据一栏可以看到监控项已经获取到了数据

图片

点击图形可以查看该监控项的相关监控图形信息

图片

3.7 同时监控多项相同的指标

单个监控项的配置相对简单,但当服务器上存在多个网卡需要监控时,一个个去配置监控项显然是非常麻烦的,而且当服务器上的网卡有增加或删除时,我们需要手动的去增加和删除监控项,非常的麻烦。这个时候就可以使用zabbix的低级自动发现(LLD)来自动发现相关的监控项。

3.7.1 prometheus to json介绍

https://www.zabbix.com/documentation/current/en/manual/discovery/low_level_discovery/examples/prometheus

zabbix的Prometheus to json预定步骤会将获取到的metrics数据转换为json格式。例如有以下metrics数据。

# HELP wmi_logical_disk_free_bytes Free space in bytes (LogicalDisk.PercentFreeSpace)
# TYPE wmi_logical_disk_free_bytes gauge
wmi_logical_disk_free_bytes{volume="C:"} 3.5180249088e+11
wmi_logical_disk_free_bytes{volume="D:"} 2.627731456e+09
wmi_logical_disk_free_bytes{volume="HarddiskVolume4"} 4.59276288e+08

获取到的json格式类似于下

[{"name": "wmi_logical_disk_free_bytes","help": "Free space in bytes (LogicalDisk.PercentFreeSpace)","type": "gauge","labels": {"volume": "C:"},"value": "3.5180249088e+11","line_raw": "wmi_logical_disk_free_bytes{volume=\"C:\"} 3.5180249088e+11"},{"name": "wmi_logical_disk_free_bytes","help": "Free space in bytes (LogicalDisk.PercentFreeSpace)","type": "gauge","labels": {"volume": "D:"},"value": "2.627731456e+09","line_raw": "wmi_logical_disk_free_bytes{volume=\"D:\"} 2.627731456e+09"},{"name": "wmi_logical_disk_free_bytes","help": "Free space in bytes (LogicalDisk.PercentFreeSpace)","type": "gauge","labels": {"volume": "HarddiskVolume4"},"value": "4.59276288e+08","line_raw": "wmi_logical_disk_free_bytes{volume=\"HarddiskVolume4\"} 4.59276288e+08"}]

3.7.2 LLD macro和JSONPath

https://www.zabbix.com/documentation/4.4/zh/manual/config/macros

https://www.zabbix.com/documentation/3.4/zh/manual/config/macros/usermacros

宏的格式为{#var_name}

jsonPath

https://www.zabbix.com/documentation/4.0/zh/manual/appendix/items/jsonpath?hl=JSONPath

macro是定义的一个变量。jsonPath指定变量的值从哪里获取

例如有下面这段数据

           {"name": "wmi_logical_disk_free_bytes","help": "Free space in bytes (LogicalDisk.PercentFreeSpace)","type": "gauge","labels": {"volume": "HarddiskVolume4","disk": "C"},"value": "4.59276288e+08","line_raw": "wmi_logical_disk_free_bytes{volume=\"HarddiskVolume4\"} 4.59276288e+08"}

通过以下定义就能获取到name、help、lables等值

图片

3.7.3 创建LLD

在配置-->主机中选择我们之前创建好的主机,点击自动发现,创建自动发现规则

  • 名称:输入LLD的名称

  • 类型:相关项目

  • 键值:net_transmit_pack_total

  • 主要项:选择前面创建的prometheus node exporter

  • 资源周期不足:0

图片

添加进程预处理步骤

  • 名称:prometheus to json

  • 参数:node_network_transmit_packets_total{device=~".*"}  , 其中~". *"表示label value可以是任意值。

图片

添加LLD宏

我们添加三个宏,LLD宏分别为

  • {#DEVICE}

  • {#HELP}

  • {#METRIC}

json路径分别为

  • $.labels['device']

  • $['help']

  • $['name']

图片

设置完成后点击添加

3.7.4 设置自动发现规则的监控项原型

选择刚创建好的LLD自动发现规则,点击监控项原型,创建监控项原型。

  • 名称:

  • 类型:相关项目

  • 键值:Total_transmit_packets[{#DEVICE}],如果有多个宏需要将宏都写在[]中,如[{#DEVICE},{#MODE}]

  • 主要项:此前创建的prometheus node exporter

  • 信息类型:数字(无正负)

其余信息保持不变

图片

为监控项原型添加预处理步骤

一共需要添加两个预定步骤:

第一个:

  • 名称:prometheus pattern

  • 参数:{#METRIC}{device="{#DEVICE}"}

第二个:

  • 名称:每秒更改

图片

配置完成后点击添加

3.7.5 查看通过自动发现规则创建的监控项

点击配置-->主机-->监控项可以发现通过我们刚刚配置的自动发现规则已经自动创建了多个网卡相关的监控项

图片

3.7.6 查看监控数据

点击监测-->最新数据,可以看到各项监控项的监控数据

图片

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

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

相关文章

Jmeter 连接 MySQL 数据库脚本

1、创建线程组 2、创建 JDBC Connection Configuration 3、创建 JDBC Request 4、最终创建的目录 5、重点来了 5.1 在百度中下载个 MySQL-connector-Java-8.0.28.jar,放在 jmeter 的 bin 目录下 5.2 在测试计划中,将 jar 包添加到脚本中 5.3 输入参…

[Docker精进篇] Docker镜像构建和实践 (三)

前言: Docker镜像构建的作用是将应用程序及其依赖打包到一个可移植、自包含的镜像中,以便在不同环境中快速、可靠地部署和运行应用程序。 文章目录 Docker镜像构建1️⃣是什么?2️⃣为什么?3️⃣镜像构建一、用现有容器构建新镜像…

网络通信原理TCP字段解析(第四十七课)

字段含义Source Port(源端口号)源端口,标识哪

opencv实战项目-停车位计数

手势识别系列文章目录 手势识别是一种人机交互技术,通过识别人的手势动作,从而实现对计算机、智能手机、智能电视等设备的操作和控制。 1. opencv实现手部追踪(定位手部关键点) 2.opencv实战项目 实现手势跟踪并返回位置信息&a…

Wlan安全——认证与加密方式(WPA/WPA2)

目录 终端认证技术 WEP认证 PSK认证 802.1x认证与MAC认证 Portal认证 数据加密技术 WEP加密 TKIP加密 CCMP加密 TKIP和CCMP生成密钥所需要的密钥信息 802.11安全标准 WEP共享密钥认证、加密工作原理 WEP共享密钥认证 WEP加解密过程 PSK认证以及生成动态密钥的工…

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践 文本匹配多用于计算两个文本之间的相似度,该示例会基于 ESimCSE 实现一个无监督的文本匹配模型的训练流程。文本匹配多用于计算两段「自然文本」之间的「相似度」。 例如…

基于docker实现主从复制

1:实现主从复制这个过程我是趟过坑的,后面是自己动手搞了几遍都成功了以后才开始决定记录的,(所以有的截图和上下文对不上的,比如说docker容器的名字对应不上,大家就用自己的就好),打…

LeetCode 141.环形链表

文章目录 💡题目分析💡解题思路🔔接口源码💡深度思考❓思考1❓思考2 题目链接👉 LeetCode 141.环形链表👈 💡题目分析 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中…

antd5源码调试环境启动(MacOS)

将源码下载至本地 这里antd5 版本是5.8.3 $ git clone gitgithub.com:ant-design/ant-design.git $ cd ant-design $ npm install $ npm start前提:安装python3、node版本18.14.0(这是本人当前下载的版本) python3安装教程可参考:https://…

激光雷达 01 线数

一、线数 对于 360 旋转式和一维转镜式架构的激光雷达来说,有几组激光收发模块,垂直方向上就有几条线,被称为线数。这种情况下,线数就等同于激光雷达内部激光器的数量[参考]。 通俗来讲,线数越高,激光器的…

Linux学习之iptables的nat表

iptables -t nat 命令 规则链 规则是格式命令。 PREROUTING一般用于内网,用于目的地址转换。 POSTROUTING一般用于外网,用于源地址转换。 iptables -t nat -A PREROUTING -i eth0 -d 114.115.116.117 -p tcp --dport 80 -j DNAT --to-destination 10.0.0…

编程语言学习笔记-架构师和工程师的区别,PHP架构师之路

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责…