自学Zabbix9.1 Network Discovery 网络发现原理

时间:2022-04-17 06:40:29

点击返回:自学Zabbix之路

点击返回:自学Zabbix4.0之路

点击返回:自学zabbix集锦

自学Zabbix9.1 Network Discovery 网络发现原理

1. 网络发现简介

网络发现有什么用?网络发现怎么配置?
网络发现功能让我们能更快速的部署zabbix、简化zabbix管理、并且在经常变动的环境里面也不需要花太多的精力,毕竟网络发现也能随时变化。但是此功能是无法发现网络拓扑的
基于网络的discovery指的是基于IP的discovery,即是给定zabbix一个IP范围,对其中的每一个IP进行探测,如果IP上存在某些服务,则会触发一些action。
有两个步骤:

  • 发现  就是discovery
  • 添加监控 就是action

2. zabbix网络发现基于如下信息

  • ip范围
  • 可用的外部服务(FTP, SSH, WEB, POP3, IMAP, TCP, etc)
  • 来自zabbix agent的信息
  • 来自snmp agent的信息

自学Zabbix9.1 Network Discovery 网络发现原理

2.1 Discovery发现

zabbix定期扫描网络发现规则中的ip范围,每个规则中都定义了一组需要检测的服务,在这些ip范围内一一扫描

网络发现模块每次检测到service和host(ip)都会生成一个discovery事件,如下是事件

时间 条件
Service Up zabbix检测到可用的service
Service Down zabbix无法检测到service
Host Up 某个ip上至少有一个service是up状态
Host Down 所有service都无响应
Service Discovered 一个service首次被发现或者在维护后从新归队
Service Lost service在up之后又丢失了
Host Discovered 一个host首次被发现或者在维护后从新归队
Host Lost 一个host在up之后又丢失了

自学Zabbix9.1 Network Discovery 网络发现原理

自学Zabbix9.1 Network Discovery 网络发现原理

自学Zabbix9.1 Network Discovery 网络发现原理

2.2  Actions动作

zabbix所有action都是基于发现事件,例如:

  • 发送通知
  • 添加/移除主机
  • 启用/禁用主机
  • 添加主机到组
  • 从组中移除主机
  • 主机link模板/unlink模板
  • 执行远程脚本命令

自学Zabbix9.1 Network Discovery 网络发现原理

2.2.1 创建主机

discovery发现主机事件产生之后,接下来需要执行discovery action,在action中选择添加主机操作、并且将主机加入某个组以及link某个模板等等。

那么主机名怎么定义呢?

首先监控端(server/proxy)通过ip泛解析主机名(如果失败了,不会重新尝试),如果解析成功了,那么zabbix将会使用这个主机名,否则直接使用ip地址。

如果主机名相同怎么办?

比如都叫carlos-server,那么第一台主机名会定义为carlos-server,第二台为carlos-server_2,第三台为carlos-server_3,以此类推。action配置里的条件包含设备类型、IP、状态、uptime/downtime等等。

2.2.2 添加主机接口

主机接口规则如下:

  • 服务检测 - 例如,成功检测到一个SNMP服务,那么创建snmp接口
  • 如果主机同时UIzabbix agent和snmp请求作出响应,那么会同时创建这两种接口
  • 如果使用agent或者snmp作为唯一性指标,先通过哪个接口发现主机,那么哪个接口就作为默认接口,其他的作为附加接口。
  • 如果一开始只响应zabbix agent的检测,那么他只会创建agent接口。如果后面响应了snmp检测,那么他又会增加snmp接口
  • 如果有三*立的主机A\B\C,一开始使用IP地址来作为唯一标识。可以看到discovery有三条记录。此时我们修改发现规则,让他们有相同的唯一标识。例如自定义一个keysystem.dis,这个key统一输出值"carlos",这样A的接口成了默认的,B和C都变成了附加到A主机上。我们可以发现一个很明显的变化。在discovery接口中依旧有3条记录,但是"discovered device"这列显示的A主机的接口,”monitored host“这列显示的都是A主机的名称,”Uptime/downtime“这列只有A主机有值,B和C都为空。从这里我们能看到唯一标识是多重要,如果唯一标识不是唯一,那么有的主机会被认为是同一台。