Zabbix监控自动化
监控在运维工作中所占的比例为 30%左右,监控做得好,会省很多事,让工作能有序地进行。理想的监控应该是自动化的,只需要配置规则,即可自动完成所有的事情,比如主机的自动添加和注册、模板的自动添加、分组的自动添加、出现故障后能自动处理和自动发送告警信息等。Zabbix 就是具有以上自动化功能的一款监控软件,那么它是如何实现监控自动化的功能呢?
一、网络自动发现
Zabbix 的网络自动发现是一个非常强大的功能,利用该功能可以完成以下工作。
- 加快部署速度
- 简化管理
- 在快速变化的环境中避免过度管理
网络自动发现基于以下信息:
- IP 地址范围
- 可用的外部服务(FTP,SSH,WEB,POP3,IMAP,TCP等)
- 来自 Zabbix agent 的信息(仅支持未加密模式)
- 来自 SNMP agent 的信息
在进行网络自动发现的过程中,涉及到的主要工作流程有 Discovery(发现)和 Action(动作),虽然网络自动发现能够帮助运维人员实现自动化的管理任务,但是网络自动发现无法实现网络拓扑的自动发现。
整个网络发现的流程可以分成4个阶段:
- 网络发现:网络发现模块每次检测到服务和主机(IP)都会生成一个发现事件。
- 执行动作:所有动作都是基于发现事件的,基于事件的网络发现动作,可以根据设备类型、IP 地址、状态、运行时间等进行配置。
- 创建主机:我们可以在执行动作过程中选择添加主机操作,包括添加主机至主机组、将主机链接到模板等。
- 移除主机:从 Zabbix2.4.0开始,如果已发现的实体不在自动发现规则的 IP 范围内,那么由网络发现规则创建的主机将会被自动删除。
1.客户机配置 Zabbix Agent
[root@server01 ~]# vim /etc/zabbix/zabbixagentd.conf
Server=192.168.10.108
ServerActive=192.168.10.108
Hostname=server01
[root@server01 ~l# systemctl restart zabbix-agent
2.创建并网络发现规则
数据采集一>自动发现,点击创建发现规则后,按照下图填写自动发现规则
注意:自动发现规则的每次扫描都会产生事件,如果配置了1000个 IP,那么每次都会产生1000 个事件,需要注意数据库的资源消耗,生产环境中不宜扫描太频繁。该页面共有 9项设置,含义如下。
(1)名称:网络发现规则的名称
(2)有 agent 代理程序自动发现:此处有两个选择,如果选择No proxy,那么这条规则将会由 Zabbix server 发起;如果选择某个 Zabbix proxy,那么此条规则将由指定的这台 Zabbixproxy 执行。
(3)IP范围:网络探测的扫描范围。可以书写的格式有四种
- 单个IP 地址:192.168.10.102
- IP 地址范围:192.168.10.1-255
- IP 子网掩码范围:192.168.10.0/24
- 列表:192.168.10.101、192.168.10.102、192.168.4.0/24
(4)更新间隔:定义Zabbix执行规则的频率。
(5)检查:自动发现的网络扫描方式,参数设置如下
(6)设备唯一性准则:设备唯一标识,自动发现的清单将会以前面配置的某一项作为唯一性标识,防止重复发现。
(7)主机名称
(8)可见的名称
(9)已启用
3.创建自动发现动作
告警一>动作一>发现动作,点击“创建动作”按钮,填写动作和操作
(1)填写动作参数
此选项中需要设置动作名称和动作条件。
在动作选项卡中,主要与前面创建的网络发现规则做关联。在条件中添加自动发现规则,选择创建好的发现规则即可。设置的参数如下:
(2)设置发现动作的操作
在操作选项卡中添加发现后的动作,这里主要的动作有添加主机、添加到主机群组、链接到模板。其中,链接的模板用 Linux by zabbix agent,如果需要其它模板,可自行添加。
4.验证
(1)查看自动发现状态
点击“监测”选项,再点击“自动发现"界面,可以看到已经发现的设备。
(2)查看监控到的主机
点击“数据采集”选项,再点击“主机"界面。可以看到 Zabbix 已经按照模板对发现的主机执行监控
备注 1:
如果在自动发现规则中设置的可见名称为“Zabbix客户端“system.uname"””,最终在主机名称中看到的是:
Linux server01 3.10.0-1160.e17.x86 64 1 SMPMon Oct 19 16 18 59 UTC 2020 x86 64其中,senver01 是用hostname 命令为该主机设置的主机名。
备注 2:
如果希望主机名称用 hostname 命令设置的的主机名(不是 IP地址)
修改自动发现规则如下:
注意:
在此处如果将可见名称设置为“主机名称”,在主机名称中,会显示为ip地址的形式。
二、添加自动注册
自动发现是实现自动添加 agent 端的一种办法,大大减轻了运维人员的劳动量,但是,如果我们不知道 agent 端的地址等信息,自动发现就无法实现了,因为要设置一个 IP 地址范围,网络自动发现需要扫描这个 IP 地址段。
自动注册是指 Agent 主动且自动的向 Server 发起注册请求,与自动发现的功能一样,但是自动注册适用于特定的场景,如果某个条件未知(如 agent 的 ip 地址段,操作系统版本等,自动发现需要知道这些信息),此时就无法适用自动发现了;但是zabbixserver 的地址是已知的,所以可以让 agent 主动发起请求,实现主机自动添加到 zabbix 中。
Zabbix 的自动注册对于 agent 是主动模式,Zabbix agent 会主动上报自己的信息,发给zabbix server.
但是在 agent2 的版本中,对应的是 agent2 的被动模式,缺点是可能因为配置文件配置错误或者网络不通等原因导致Zabbix agent2 可能找不到 Zabbix server。
1.删除前面创建的自动发现
删除“告警”-->“动作”中刚才创建的发现动作
删除“数据采集”-->“自动发现”中刚才创建的自动发现规则
删除“数据采集”-->“主机”中自动发现的主机
2.客户端修改 Agent
[root@server1 ~]# vim /etc/zabbix/zabbix agentd.conf
Server=192.168.10.108
ServerActive=192.168.10.108
Hostname=server01
备注:
自动注册属于agent 端的主动模式的功能,所以要设置ServerActive 参数
可选参数:
HostnameItem=system.hostname ##获取主机名的key,当Hostname 参数设置时,此参
数无效
HostMetadata=Linux Linux host ##主机元数据标识
HostMetadataItem=system.uname ##获取主机内核名称的key,当HostMetadata 设置时,此参数无效
3.在 Web 管理界面创建自动注册动作
告警-->动作-->自动注册动作,创建动作。
然后点击创建动作,填写名称、触发条件和操作
4.设置自动注册操作
在操作选项卡中添加自动注册的动作,设置的内容和自动发现里面设置的基本一致,这里主要的动作有添加主机、添加到主机群组、链接到模板。其中,链接的模板用 Linux by Zabbix agent如果需要其它模板,可自行添加。
5.验证
数据采集-->主机
三、主被动模式
1.主被动模式介绍
Agent 程序有两种工作模式:主动模式和被动模式。
我们知道获取数据的方式有两种,一种是 get,一种是 push;在 zabbix 中描述主动监控和被动监控都是站在 agent 的一方来描述的;我们把 agent 主动将数据发送给 zabbix server 这
种方式采集数据,叫做主动监控;把 zabbix server 向 zabbix agent 获取数据的方式叫做被动监控,这种方式只有 zabbix server 周期性的请求 zabbix agent,zabbix agent 才会响应对应的数据给 zabbix server ,如果 zabbix server 不请求,则 zabbix agent 不会发送数据给 zabbix server ;而主动监控不管 zabbix server 请不请求 agent,agent 它都会以指定时间频率向 server 推送数据;默认 zabbix 是使用的被动监控,这也意味着 zabbix server 要不停的去请求各 zabbix agent 去采集数据,否则就没有数据。
Zabbix 主被动模式示意图如下图所示:
在被动模式下,zabbix-agent 监听 10050 端口,等待 zabbix-server 服务器的 10051 端口的监控信息收集请求;
在主动模式下,zabbix-agent 收集监控信息并主动将数据传给 zabbix-server 所在服务器的 10051 端口。此时 agent 端不再监听 10050 端口。
zabbix-agent 默认工作在被动模式下。
2.被动模式的缺点
在被动模式下是存在一些问题的,当服务端监控的主机达到一定数量之后,由 Server 端去收集数据(被动模式),Zabbix会出现严重的性能问题,主要表现如下:
- 当被监控端到达一个量级的时候,web操作很卡,容易出现502
- 图层断裂
- 开启的进程太多,即使减少 item 数量,以后加入一定量的机器也会有问题
所以下面主要往两个优化方向考虑:
- 添加 Proxy 节点或者 Node 模式做分布式监控
- 调整 Agentd 为主动模式
3.主动模式的设置
(1)删除前面创建的自动注册
删除“告警”-->“动作”中刚才创建的自动注册动作
删除“数据采集”-->“主机”中自动注册的主机
(2)在被监控端调整 Agent 为主动模式
[root@server01 ~]# vim /etc/zabbix/zabbix agentd.conf
#Server=192.168.10.108 #主动模式需要注释掉此行
StartAgents=0 ##为server 端的连接开启的进程数,8 代表关闭被动模式
ServerActive=192.168.10.108 #主动模式的 serverip 地址
Hostname=server01 #客户端的 hostname,不配置则使用主机名
[root@server01 ~]# systemctl restart zabbix-agent
査看 zabbix agent 进程,此时已经没有了 agent 进程
[root@server01 ~]# netstat -anptgrep zabbix
备注:
在主动模式下,agent 不再监听 10050 的端口。
(3)添加主机
模板选择带有 active 的(本案例使用的模板为 Linux by Zabbix agent active)
可以在监控中看到监控数据,选择监测-->主机-->图形
注意:刚添加的数据可能看的不明显,等几分钟就可以看到。
(4)查看主机添加结果
“数据采集”-->“主机”,查看监控到则主机列表
备注:
在主动模式下,“ZBX”不会显示为绿色。
(5)查看检测到的数据
“检测”-->“主机”,找到主机,査看“最新数据”和“图形”
四、Zabbix邮件告警
在日常的 IT 运维过程中,我们时常要关注各个设备和系统的运行情况,但是,我们不希望一直盯着触发器或者事件列表,这样我们就没有空闲时间去处理其他工作。那么能不能让我们摆脱这种束缚,无论我们在什么地方,在发生比较严重的事情的时候能够自动的接收到通知。并且,当发生问题时,我们希望所有相关人员都能收到通知。
也就是说,当配置的监控超过触发器设定的阀值则触发某种动作,而这个动作可以是发送告警信息的动作。那么 zabbix 在监控到异常之后,就能够自动的触发一个告警信息发给我们,或发送给整个运维团队。
自定义的监控项默认不会自动报警,首页也不会提示错误,需要配置触发器与报警动作才可以自动报警。触发器本质就是一个条件判断,对于不同的监控数据来说,我们要给他设置不同的触发器,比如监控内存,当内存小于 500M,就满足判断条件,触发报警,并可以执行报警动作。
1.实现报警所需的条件
(1)告警媒介
要想让 zabbix 把告警信息发送出去,就要有一个接收信息的媒介,目前我们常见的告警媒介有邮箱、钉钉、企业微信等。
(2)触发器(trigger):
触发器实际是一个条件判断表达式,如判断内存不足 300M,用户超过 30 个等;当触发条件发生后,会导致一个触发事件,触发事件会执行某个动作。
(3)动作(action):
触发器的条件被触发后的行为;可以是发送邮件、也可以是重启某个服务等。
2.配置告警媒介
(1)设置告警媒介参数
“告警”-->“媒介”-->选择 Email
注意:在设置认证时,密码的位置要使用邮箱的授权码,而不是密码,设置完后点击更新,注意
要启用 Emai1 媒介。
(2)启用此媒介并测试邮件发送
3.设置用户报警媒介
“用户”-->“用户”-->选 Admin,添加用户的报警媒介
4.设置动作
(1)添加动作
“告警”-->“动作”-->“触发器动作”-->创建动作
按照下图两个步骤修改,然后点添加。
条件使用“触发器”,并选择对应的主机(或主机组),勾选对应的触发器。
(2)设置操作
5.测试
关闭server01主机,查看邮箱接收到的报警邮件
相关文章:

Zabbix监控自动化
监控在运维工作中所占的比例为 30%左右,监控做得好,会省很多事,让工作能有序地进行。理想的监控应该是自动化的,只需要配置规则,即可自动完成所有的事情,比如主机的自动添加和注册、模板的自动添加、分组的…...

pytorch pyro 贝叶斯神经网络 bnn beyesean neure network svi 定制SVI目标和培训循环,变更推理
定制SVI目标和培训循环 Pyro支持各种基于优化的贝叶斯推理方法,包括Trace_ELBO作为SVI(随机变分推理)的基本实现。参见文件(documents的简写)有关各种SVI实现和SVI教程的更多信息I, 二,以及罗马数字3了解SVI的背景。 在本教程中…...

Openeuler22 部署 RackTables0.22.0
目录 0、前言 一、部署lamp环境,lamp环境测试 1、部署Apache,apache环境测试 2、部署php、mysql,php环境测试 二、放文件 三、配置mysql 四、安装racktables 第一步、点击proceed继续 第二步、点击proceed 第三步、根据提示进行操作…...

从传统到智能:高标准农田灌区信息化助力农业现代化
从传统农业的粗放式管理,到如今智能化、精准化的现代农业转型,高标准农田灌区信息化建设无疑是推动这一历史进程的关键力量。它不仅标志着农业生产方式的根本性变革,还深刻影响着农业资源的高效利用与可持续发展策略,为实现农业现…...

堆排序-建堆,增删替换
我们 之前写过根据 堆排序的优先级队列,但是如果我们想要建立一个堆怎么办呢? 如何实现上浮 下潜 具体看这篇文章 堆排序-优先级队列-CSDN博客 建堆 我们有两种方法建立一个堆 1.我们基于add方法建立一个堆,一次次的add,然后对…...

使用AI写WebSocket知识是一种怎么样的体验?
一、WebSocket基础知识 1. WebSocket概念 1.1 为什么会出现WebSocket 一般的Http请求我们只有主动去请求接口,才能获取到服务器的数据。例如前后端分离的开发场景,自嘲为切图仔的前端大佬找你要一个配置信息的接口,我们后端开发三下两下开…...

若依系统(Security)增加微信小程序登录(自定义登录)
若依系统(分离版后端)自带的账号验证是基于 UsernamePasswordAuthenticationToken authenticationToken new UsernamePasswordAuthenticationToken(username, password); 验证,然后在系统中controller或service类中 SecurityUtils 工具类中直接可获取用户或用户…...

道可云人工智能元宇宙每日资讯|2024互联网岳麓峰会在长沙召开
道可云元宇宙每日简报(2024年9月10日)讯,今日元宇宙新鲜事有: 2024互联网岳麓峰会在长沙召开 9月9日,2024互联网岳麓峰会在长沙召开,湖南省副省长曹志强在峰会表示,今年上半年湖南省人工智能产…...

MySQL JDBC URL各参数详解
jdbc:mysql://localhost:3306/test?userroot&password123456&useUnicodetrue&characterEncodinggbk &autoReconnecttrue&failOverReadOnlyfalse&serverTimezoneUTC&drivercom.mysql.cj.jdbc.Driver 参数名称参数说明缺省值user指定用于连接数据库…...

celery control.shutdown
Celery 提供了 control 模块,允许你发送控制命令给正在运行的 worker。其中 shutdown 命令可以用来关闭一个或多个 worker。下面是如何使用 control.shutdown 来关闭 worker 的详细说明。 使用 control.shutdown 1. 导入必要的模块 首先,你需要导入 C…...

数据库设计与软件工程阶段的对应关系
数据库设计的很多阶段确实可以与软件工程的各阶段对应起来,这体现了数据库设计作为软件工程中一个核心组成部分的紧密关联性。 1. 需求分析阶段 数据库设计:需求分析是数据库设计的初始阶段,主要任务是收集和分析用户的需求,包括…...

基于ASP+ACCESS的教师信息管理系统
摘要 随着我国社会主义市场经济的发展和改革开放的不断深入,计算机的应用已遍及国民经济的各个领域,计算机来到我们的工作和生活中,改变着我们和周围的一切。在以前,学校用手工处理教师档案以及工资发放等繁多的工作和数据时&…...

【智能体】浅谈大模型之AI Agent
随着ChatGPT推出插件和函数调用功能,构建以LLM(大语言模型)为核心控制器的AI Agent愈发成为一个拥有无限可能的概念。 AI Agent是一种超越简单文本生成的人工智能系统。它使用大型语言模型(LLM)作为其核心计算引擎&am…...

大疆 嵌入式 笔记 面试题目汇总大全[嵌入式找工作必看] 比较有难度适合进阶收藏学习
24届大疆车载嵌入式系统安全面试经验 投递岗位:(大疆车载)嵌入式系统安全 投递时间:大疆大概在7月-8月月初开秋招岗位。8月月中开始笔试,8月月末开始面试。(理论上9月,10月开奖。)…...

线程池以及详解使用@Async注解异步处理方法
目录 一.什么是线程池: 二.使用线程池的好处: 三.线程池的使用场景: 四.使用线程池来提高Springboot项目的并发处理能力: 1.在application.yml配置文件中配置: 2.定义配置类来接受配置文件内的属性值:…...

css鼠标移动过去变成手的图标
在css中定义 cursor:pointer;直接在html中指定 <div class"mt-2 mt-md-2 mt-lg-1 fs-md-1 fs-lg-2 " style"cursor:pointer;"></div>...

uniapp 懒加载、预加载、缓存机制深度解析
uniapp 懒加载、预加载、缓存机制深度解析 文章目录 uniapp 懒加载、预加载、缓存机制深度解析一、为什么要使用uniapp的懒加载、预加载和缓存机制二、如何使用uniapp的懒加载、预加载和缓存机制1. 懒加载2. 预加载3. 缓存机制 四、扩展与高级技巧1. 结合懒加载和预加载优化页面…...

《OpenCV计算机视觉》—— 图像形态学(腐蚀、膨胀等)
文章目录 一、图像形态学基本概念二、基本运算1.简单介绍2.代码实现 三、高级运算1.简单介绍2.代码实现 一、图像形态学基本概念 图像形态学是图像处理科学的一个独立分支,它基于集合论和数学形态学的理论,专门用于分析和处理图像中的形状和结构。图像形…...

【Rust光年纪】海洋学研究的利器:Rust语言海洋学计算库详解
探索Rust语言下的海洋学计算库:功能对比与选择指南 前言 随着科学技术的不断发展,海洋学领域对于计算和数据处理的需求也日益增长。在Rust语言中,出现了一系列专注于海洋学计算和数据处理的库,它们为海洋学工作者提供了强大的工…...

Word文档的读入【2】
现在,乔老师已经了解了Word文档的基本结构。 下面,我们通过观察一份答题卡来思考一下每条信息的具体位置。这样,在后面几天的学习和操作中,我们就能更快、更准确地读取到答题卡中的信息。 这份答题卡是由一个表格和一些段落组成。…...

报名开启 | 游戏开发缺队友?首期繁星招聘会来袭!
**点击蓝链领取游戏开发教程 ** EE GAMES 创作者社区是专注于链接每一位游戏创作者,提供社区交流、团队匹配、经验共享、成果展示、知识整合、最新活动资讯等全方位服务的游戏领域垂类社区。 这里不仅仅是一个游戏创作的互助平台,更是每一位游戏创作者…...

无法加载源https://api.nuget.org/v3/index.json的服务索引
我是用的visual studio2022 17.11.2版本,在运行.net c#项目的时候显示“无法加载源https://api.nuget.org/v3/index.json的服务索引”,从网上找了一堆方法全部没用,最后用这个方法解决了。亲测有效家人们 关闭VS,删除C:\Users\xx…...

C#--CM+Fody+HCWPF开发组合
CM:Caliburn.Micro(简称CM)一经推出便备受推崇,作为一款MVVM开发模式的经典框架,越来越多的受到wpf开发者的青睐.我们看一下官方的描述:Caliburn是一个为Xaml平台设计的小型但功能强大的框架。Micro实现了各种UI模式,用…...

力扣474-一和零(Java详细题解)
题目链接:474. 一和零 - 力扣(LeetCode) 前情提要: 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完01背包,所以现在的题解都是以01背包问题为基础再来写的。 如果大家不懂01背包的话&#…...

【话题】量子计算:前沿技术与应用前景深度解析
引言 在当今信息时代,计算能力已成为推动科技进步和社会发展的重要驱动力。随着摩尔定律逐渐接近其物理极限,传统计算机硬件的性能提升面临前所未有的挑战。在此背景下,量子计算作为一种革命性的计算范式,凭借其独特的量子力学属性…...

第11章 32位x86处理器编程架构
第11章 32位x86处理器编程架构 IA-32(INTEL Architecture, 32-bit):INTEL 32位处理器架构简称IA-3,以8086处理器为基础发展起来的。该章重点介绍了IA-32处理器的工作方式和相关技术。 IA-32架构的基本执行环境 寄存器的扩展 32位处理器通用寄存器&am…...

加密软件是什么?有哪些用处呢?
一、加密软件是什么? 加密软件用于对数据进行加密和解密的工具或程序。其主要功能是通过使用加密算法将原始数据转换为密文,以保护数据的机密性和安全性,防止未经授权的访问和泄露。加密软件提供用户友好的界面和操作方式,使用户…...

浅谈C#之任务调度TaskScheduler
一、基本介绍 TaskScheduler 是一个抽象类,用于控制任务的执行方式,特别是它们如何被安排到线程池中的线程上执行。 TaskScheduler 负责将 Task 对象排队并决定何时、以何种方式执行这些任务。 二、TaskScheduler的作用 调度任务:将任务分配…...

SQL server 日常运维命令
一、基础命令 查看当前数据库的版本 SELECT VERSION;查看服务器部分特殊信息 select SERVERPROPERTY(Nedition) as Edition --数据版本,如企业版、开发版等,SERVERPROPERTY(Ncollation) as Collation --数据库字符集,SERVERPROPERTY(Nservername) as Serve…...

基于协同过滤算法+SpringBoot+Vue+MySQL的商品推荐系统
系统展示 用户前台界面 管理员后台界面 系统背景 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及…...