Zabbix:自动发现功能讲解,包括网络发现、自动注册、低级别自动发现以及案例分享。

ZBX:自动发现功能讲解

  • 视频讲解:
  • Zabbix 自动发现
    • 网络发现
      • 概述
      • 操作方法
    • 自动注册
      • 概述
      • 操作方法
    • 低级别自动发现
      • 概述
      • 工作原理及工作流程
      • 案例1,base进程监控
        • 要求:
        • 步骤:
      • 案例2,磁盘IO监控
        • 要求:
        • 步骤:

视频讲解:

Zabbix自动发现-第2集-利用低级别自动发现,在被控主机上自动添加监控、触发器并形成告警

Zabbix 自动发现

自动发现的种类
在这里插入图片描述
网络发现和自动注册的区别
在这里插入图片描述
低级别自动发现的工作原理
在这里插入图片描述

网络发现

概述

  • 在大规模集群环境中,加快Zabbix的部署速度和简化管理。比如自动识别主机并对其批量(添加/删除)主机、批量(关联/取关)模板、批量(关联/取关)主机群组等操作。
  • Zabbix server或Zabbix proxy主动获取数据,支持的检查类型:SSH、LDAP、SMTP、FTP、HTTP、HTTPS、POP、NNTP、IMAP、TCP、Telnet、Zabbix agent、SNMPv1 agent、SNMPv2 agent、SNMPv3 agent、ICMP ping。

操作方法

1. Zabbix-agent配置

[root@zbx-agent1 zabbix_agent2]# vim etc/zabbix_agent2.conf
PidFile=/opt/zabbix_agent2/zabbix_agent2.pid
LogFile=/opt/zabbix_agent2/zabbix_agent2.log
LogFileSize=0
SourceIP=192.168.31.160
Server=192.168.31.160
ServerActive=192.168.31.160
HostnameItem=system.hostname
HostMetadata=Linux
Include=/opt/zabbix_agent2/etc/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock

2. 创建自动发现规则

3. 创建自动发现动作

自动注册

概述

  • 在大规模集群环境中,加快Zabbix的部署速度和简化管理。比如自动识别主机并对其批量(添加/删除)主机、批量(关联/取关)模板、批量(关联/取关)主机群组等操作。
  • Zabbix agent主动上报数据,自动注册心跳间隔为 120秒。

操作方法

1. Zabbix-agent配置

[root@zbx-agent1 zabbix_agent2]# vim etc/zabbix_agent2.conf
PidFile=/opt/zabbix_agent2/zabbix_agent2.pid
LogFile=/opt/zabbix_agent2/zabbix_agent2.log
LogFileSize=0
SourceIP=192.168.31.160
Server=192.168.31.160
ServerActive=192.168.31.160
HostnameItem=system.hostname
HostMetadata=Linux
Include=/opt/zabbix_agent2/etc/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock

2. 创建自动注册动作

低级别自动发现

概述

低级别自动发现提供了一种为计算机上的不同实体自动创建监控项、触发器和图表的方法。通过自动发现规则在被控主机上执行脚本,生成自定义宏变和对应的值,监控项原型将利用自定义宏变和对应的值生成监控项,再通过触发器原型生成相应的触发器从而实现监控功能。

工作原理及工作流程

  1. 创建模板,模板中包括3类,自动发现监控项、监控项原型、触发器原型
  2. 自动发现监控项获取实体信息
  3. 利用监控项原型为获取到的实体创建监控项
  4. 利用触发器原型为获取到的实体创建触发器

案例1,base进程监控

要求:

假设某些主机可能运行base_A、base_B、base_C3种进程,若有以上三个任一进程运行,则创建出相应的监控项,当该进程消失时产生告警。

步骤:

1.创建模板
模板名称:proc_check_template
可见名称:进程监控模板

2. 创建自动发现规则
名称:base进程发现
类型:Zabbix客户端(主动式)
键值:lld.proc.[base_]

3. 编写自动发现脚本

[root@zbx-agent1 ~]# vim /opt/zabbix_agent2/scripts/lld_proc.sh
#!/bin/bashfunction format_data()
{data=""for x in $@dodata=${data}"{\"{#NAME}\":\"$x\"},"doneecho [${data%?}]
}if [ $1 == "base_" ];thenproc=`ps -ef | grep -v grep | grep -v $0 | egrep "\bbase_[A-Z]\b" | grep -oP "(?<=sh )\S+"`format_data ${proc}
fi

4. 编写自动发现配置文件并重启代理

[root@zbx-agent1 ~]# vim /opt/zabbix_agent2/etc/zabbix_agent2.d/base_proc.conf
UserParameter=lld.proc.[*],sh /opt/zabbix_agent2/scripts/lld_proc.sh $1

5. 创建监控项原型
名称:[{#NAME}]进程监控
类型:Zabbix客户端(主动式)
键值:check.proc.[{#NAME}]
信息类型:数字

6. 编写监控项配置文件并重启代理

[root@zbx-agent1 ~]# vim /opt/zabbix_agent2/etc/zabbix_agent2.d/base_proc.conf
UserParameter=check.proc.[*],ps -ef | grep -v grep | grep -c $1

7. 创建触发器原型
名称:[{#NAME}]进程运行异常
表达式:last(/proc_check_template/check.proc.[{#NAME}])<1

8. 形成告警

案例2,磁盘IO监控

要求:

每分钟获取各磁盘的IO信息,信息包括平均读等待、平均写等待、每秒读的数据量、每秒写的数据量。基于iostat命令获取数据,利用JsonPath创建监控项。

步骤:

1.创建模板
模板名称:DISK_IO_Check_Template
可见名称:磁盘IO监测模版

2. 创建自动发现规则
名称:磁盘名称自动发现
类型:Zabbix客户端(主动式)
键值:get.disk.name

3. 编写自动发现和监控脚本
lld_disk()函数用于发现所有磁盘名称
check_disk()函数用于获取所有磁盘的IO信息

[root@zbx-agent1 ~]# vim /opt/zabbix_agent2/scripts/disk_io_check.py
import subprocess
import json
import sysdef exec_command(cmd):try:result = subprocess.run(cmd, shell=True, capture_output=True, text=True, check=True)return result.stdoutexcept subprocess.CalledProcessError as e:print(f"命令执行失败,返回码:{e.returncode}")print(f"标准错误:{e.stderr}")except Exception as e:print(f"发生错误:{e}")return Nonedef parse_iostat_output(output):lines = [line for line in output.strip().split('\n') if line.strip()]disk_data = {}for line in lines:parts = line.split()if len(parts) < 12:  # 检查是否有足够的部分进行解析continuedisk_name = parts[0]disk_data[disk_name] = {"r_await": parts[4],"w_await": parts[10],"rMB_s": parts[1],"wMB_s": parts[7]}return disk_datadef lld_disk():cmd = "iostat -mx | grep -v grep | grep nvme | awk '{print $1}'"disks = exec_command(cmd)if disks:disk_list = disks.split()data = {"data": [{"{#DISK_NAME}": disk} for disk in disk_list]}print(json.dumps(data, ensure_ascii=False, indent=4))def check_disk():cmd = "iostat -mx | grep -v grep | grep nvme"output = exec_command(cmd)if output:disk_data = parse_iostat_output(output)print(json.dumps(disk_data, ensure_ascii=False, indent=4))if __name__ == "__main__":if len(sys.argv) != 2:print("Please enter the correct parameters, such as 'lld' or 'check'!")elif sys.argv[1] in ["lld", "check"]:globals()[sys.argv[1] + "_disk"]()else:print("Please enter the correct parameters, such as 'lld' or 'check'!")

4. 编写自动发现配置文件并重启代理

[root@zbx-agent1 ~]# vim /opt/zabbix_agent2/etc/zabbix_agent2.d/disk_io_check.confUserParameter=get.disk.name,python3 /opt/zabbix_agent2/scripts/disk_io_check.py lld
UserParameter=get.disk.status.info,python3 /opt/zabbix_agent2/scripts/disk_io_check.py check

5. 创建采集监控数据的监控项
名称:获取磁盘状态信息
类型:Zabbix客户端(主动式)
键值:get.disk.status.info
信息类型:字符
预处理:JSONPath $.{#DISK_NAME}.wMB_s

6. 创建监控项原型
名称:磁盘[{#DISK_NAME}]写入量MB/S
类型:相关项目
键值:wMB_s_[{#DISK_NAME}]
信息类型:浮点数
预处理:JSONPath $.{#DISK_NAME}.wMB_s

名称:磁盘[{#DISK_NAME}]读取量MB/S
类型:相关项目
键值:rMB_s_[{#DISK_NAME}]
信息类型:浮点数
预处理:JSONPath $.{#DISK_NAME}.rMB_s

名称:磁盘[{#DISK_NAME}]平均写等待
类型:相关项目
键值:w_await_[{#DISK_NAME}]
信息类型:浮点数
预处理:JSONPath $.{#DISK_NAME}.w_await

名称:磁盘[{#DISK_NAME}]平均读等待
类型:相关项目
键值:r_await_[{#DISK_NAME}]
信息类型:浮点数
预处理:JSONPath $.{#DISK_NAME}.r_await

7. 形成监控数据

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

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

相关文章

Windows上安装Go并配置环境变量(图文步骤)

前言 1. 本文主要讲解的是在windows上安装Go语言的环境和配置环境变量&#xff1b; Go语言版本&#xff1a;1.23.2 Windows版本&#xff1a;win11&#xff08;win10通用&#xff09; 下载Go环境 下载go环境&#xff1a;Go下载官网链接(https://golang.google.cn/dl/) 等待…

#端云一体化开发# #HarmonyOS Next#《说书人》鸿蒙原生基于角色的对话式文本编辑开发方案

1、写在前面 过去的一百年里&#xff0c;在“编程”的这个行业诞生之初&#xff0c;人们采用面向过程的方式进行开发&#xff0c;但是&#xff0c;伴随着程序规模的日益增大&#xff0c;程序的复杂度也随之增加&#xff0c;使用结构化编程方法来管理复杂的程序逻辑变得越来越困…

xadmin后台首页增加一个导入数据按钮

xadmin后台首页增加一个导入数据按钮 效果 流程 1、在添加小组件中添加一个html页面 2、写入html代码 3、在urls.py添加导入数据路由 4、在views.py中添加响应函数html代码 <!DOCTYPE html> <html lang

【AimRT】现代机器人通信中间件 AimRT

目录 一、什么是AimRT二、AimRT与ROS22.1 定位与设计2.2 组成与通信方式对比 三、AimRT基本概念3.1 Node、Pkg 和 Module3.2 Protocol、Channel、Rpc 和 Filter3.3 App模式 和 Pkg模式3.4 Executor3.5 Plugin 一、什么是AimRT AimRT 是智元机器人公司自主研发的一款机器人通信…

mysql系列7—Innodb的redolog

背景 本文涉及的内容较为底层&#xff0c;做了解即可&#xff0c;是以前学习《高性能Mysql》和《mysql是怎样运行的》的笔记整理所得。 redolog(后续使用redo日志表示)的核心作用是保证数据库的持久性。 在mysql系列5—Innodb的缓存中介绍过&#xff1a;数据和索引保存在磁盘上…

C++【内存管理】

C/C中程序的内存划分&#xff1a; 栈&#xff1a;又称堆栈&#xff0c;存放非静态的局部变量、函数参数、返回值等等&#xff0c;栈是向下增长的。内存映射段&#xff1a;是高效的&#xff29;&#xff0f;&#xff2f;映射方式&#xff0c;用于装载一个共享的动态内存库。用户…

手机租赁平台开发助力智能设备租赁新模式

内容概要 手机租赁平台开发&#xff0c;简单说就是让你用得起高大上的智能设备&#xff0c;不管是最新款的手机、平板&#xff0c;还是那些炫酷的智能耳机&#xff0c;这个平台应有尽有。想要体验但又不希望花大钱&#xff1f;那你就找对地方了&#xff01;通过灵活的租赁方案…

【开源免费】基于SpringBoot+Vue.JS校园社团信息管理系统(JAVA毕业设计)

本文项目编号 T 107 &#xff0c;文末自助获取源码 \color{red}{T107&#xff0c;文末自助获取源码} T107&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

【鸿蒙NEXT】鸿蒙里面类似iOS的Keychain——关键资产(@ohos.security.asset)实现设备唯一标识

前言 在iOS开发中Keychain 是一个非常安全的存储系统&#xff0c;用于保存敏感信息&#xff0c;如密码、证书、密钥等。与 NSUserDefaults 或文件系统不同&#xff0c;Keychain 提供了更高的安全性&#xff0c;因为它对数据进行了加密&#xff0c;并且只有经过授权的应用程序才…

使用npm包的工程如何引入mapboxgl-enhance/maplibre-gl-enhance扩展包

作者&#xff1a;刘大 前言 在使用iClient for MapboxGL/MapLibreGL项目开发中&#xff0c;往往会对接非EPSG:3857坐标系的地图&#xff0c;由于默认不支持&#xff0c;因此需引入mapboxgl-enhance/maplibre-gl-enhance扩展包。 在使用Vue等其他框架&#xff0c;通过npm包下载…

应急指挥系统总体架构方案

引言 应急指挥系统总体架构方案旨在构建一个高效、智能的应急管理体系&#xff0c;以应对自然灾害、事故灾难等突发事件&#xff0c;保障人民生命财产安全。 背景与挑战 近年来&#xff0c;安全生产形势严峻&#xff0c;自然灾害事故频发&#xff0c;对应急指挥系统的要求越…

如何用CSS3创建圆角矩形并居中显示?

在网页设计中&#xff0c;圆角矩形因其美观和现代感而被广泛使用&#xff0c;居中显示元素也是一个常见的需求。今天&#xff0c;我们将学习如何使用CSS3的border-radius属性来创建圆角矩形&#xff0c;并将其居中显示在页面上。 如果你正在学习CSS&#xff0c;那么这个实例将非…

UE5通过蓝图节点控制材质参数

通过蓝图节点控制材质的参数 蓝图节点 在材质上设置标量值 和 在材质上设置向量参数值 Set Scalar Parameter Value on Materials Set Vector Parameter Value on Materials 这两个蓝图节点都可以在蓝图中&#xff0c;控制材质的参数值和向量值

canvas+fabric实现时间刻度尺(二)

前言 我们前面实现了时间刻度尺&#xff0c;鼠标移动显示时间&#xff0c;接下来我们实现鼠标点击某个时间进行弹框。 效果 实现 1.监听鼠标按下事件 2.编写弹框页面 3.时间转换 <template><div><canvas id"rulerCanvas" width"1200"…

手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电

手机实时提取SIM卡打电话的信令声音 --双卡手机来电如何获取哪一个卡的来电 一、前言 前面的篇章《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》中&#xff0c;我们论述了局域网SIP坐席通过手机外呼出去时&#xff0c;手机中主副卡的呼叫调度策略。 但…

离线语音识别+青云客语音机器人(幼儿园级别教程)

1、使用步骤 确保已安装以下库&#xff1a; pip install vosk sounddevice requests pyttsx3 2、下载 Vosk 模型&#xff1a; 下载适合的中文模型&#xff0c;如 vosk-model-small-cn-0.22。 下载地址&#xff1a; https://alphacephei.com/vosk/models 将模型解压后放置在…

Streaming Dense Video Captioning

原文出处 CVPR 原文链接 [2404.01297] Streaming Dense Video Captioninghttps://arxiv.org/abs/2404.01297 原文笔记 What 1、提出了一种基于聚类传入token的新记忆模块&#xff0c;该模块可以处理任意长的视频&#xff0c;并且可以在不访问视频所有帧的情况下处理视频(…

TCP 连接:三次握手与四次挥手

TCP 协议&#xff0c;全称为“传输控制协议”。 1. TCP 协议段格式 给出几个定义 &#xff1a; 16位源端口号 &#xff1a;用于标识发送端的应用程序。 16位目的端口号 &#xff1a;用于标识接收端的目标应用程序。 32位序号 &#xff1a;用于标识发送的每一个字节流中的第一…

IDEA+Docker一键部署项目SpringBoot项目

文章目录 1. 部署项目的传统方式2. 前置工作3. SSH配置4. 连接Docker守护进程5. 创建简单的SpringBoot应用程序6. 编写Dockerfile文件7. 配置远程部署 7.1 创建配置7.2 绑定端口7.3 添加执行前要运行的任务 8. 部署项目9. 开放防火墙的 11020 端口10. 访问项目11. 可能遇到的问…

redis开发与运维-redis0401-补充-redis流水线与Jedis执行流水线

文章目录 【README】【1】redis流水线Pipeline【1.1】redis流水线概念【1.2】redis流水线性能测试【1.2.1】使用流水线与未使用流水线的性能对比【1.2.2】使用流水线与redis原生批量命令的性能对比【1.2.3】流水线缺点 【1.3】Jedis客户端执行流水线【1.3.1】Jedis客户端执行流…