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主机,查看邮箱接收到的报警邮件

相关推荐
大树8810 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠10 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质10 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工11 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智12 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_12 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉13 小时前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
dayuOK630713 小时前
写作卡壳怎么办?我的“5分钟启动法”
人工智能·职场和发展·自动化·新媒体运营·媒体
AC赳赳老秦13 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj14 小时前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes