1 网络发现
概述
Zabbix提供了高校灵活的网络自动发现功能。
通过正确设置网络发现,您可以:
- 加快Zabbix的部署速度
- 简化管理
- 在快速变化的环境中使用Zabbix中避免过渡管理
Zabbix网络发现基于以下信息:
- IP范围
- 外部服务的可用性(FTP、SSH、WEB、POP3、IMAP、TCP等)
- 从Zabbix代理接收的信息(仅支持未加密模式)
- 从SNMP代理接收的信息
它不提供以下功能:
- 网络拓扑的发现
网络发现基本上包括两个阶段:”发现”和”动作”。
发现
Zabbix周期性地扫描网络发现规则中定义的IP范围。每个规则的检查频率可以单独配置。
每个规则都有一组定义的服务检查,用于执行IP范围内的检查。
发现规则由发现管理器处理。发现管理器为每个规则创建一个作业,其中包含任务列表(网络检查)。网络检查由可用的发现工作进程并行执行(该数量可在前端针对每个规则进行配置)。仅当IP和端口相同时,检查才会按顺序调度,因为某些设备不接受同一端口的并行连接。
网络检查的队列大小限制为2000000或大约4GB的内存。如果队列变满,则将跳过发现规则,并在日志中打印警告消息。您可以使用zabbix[discovery_queue]
内部项来监视队列中的发现检查数量。
发现检查独立于其他检查进行处理。如果某些检查未找到服务(或失败),仍将处理其他检查。
如果在执行期间更改了发现规则,则当前的发现执行将被中止。
网络发现模块执行的每个服务和主机(IP)检查会生成一个发现事件。
事件 | 服务检查结果 |
---|---|
发现服务 | 服务从停止(down)状态到已启动(up)状态,或服务首次被发现。 |
服务已启动(up) | 服务保持已启动(up)状态。 |
服务丢失(lost) | 服务从已启动(up)状态到停止(down)状态。 |
服务停止(down) | 服务保持停止(down)状态。 |
发现主机 | 主机从全部服务停止(down)状态到至少一个服务是已启动(up)状态,或发现一个未注册的主机的服务。 |
主机已启动(up) | 主机至少有一个服务保持已启动(up)状态。 |
主机丢失(lost) | 主机从至少有一个服务已启动(up)状态到所有服务停止(down)状态。 |
主机停止(down) | 主机的所有服务保持停止(down)状态。 |
动作
发现事件可以作为相关动作的基础,例如:
- 发送通知
- 添加/移除主机
- 启用/禁用主机
- 将主机添加到组中
- 从组中移除主机
- 给主机添加标签
- 从主机移除标签
- 将模板链接到主机/从主机解除模板链接
- 执行远程脚本
这些动作可以根据设备类型、IP、状态、运行时间/停机时间等进行配置。有关使用网络发现事件配置动作的详细信息,请参阅动作动作和条件页面。
由于网络发现动作是基于事件的,它们将在发现的主机上线和下线时触发。强烈建议在配置动作时添加一个动作条件发现状态:上线,以避免在服务丢失/服务下线事件发生时触发像添加主机这样的动作。否则,如果手动移除了一个发现的主机,它仍将在下一个发现周期期间生成服务丢失/服务下线事件,并在系统中重新创建。
如果任何可链接的模板具有与主机或其他可链接模板上已存在的唯一实体(例如项键)相同的唯一实体,则将无法将模板链接到发现的主机。
主机创建
如果选择了添加主机操作,则会添加一个主机。即使缺少添加主机操作,如果选择了对主机执行操作的操作,也会添加主机。这些操作包括:
- 启用主机
- 禁用主机
- 将主机添加到主机组
- 将模板链接到主机
创建的主机将被添加到发现的主机组中(默认情况下,在管理 → 常规 → 其他 可配置)。 如果您希望将主机添加到另一个组中,请添加一个从主机组中移除操作(指定发现的主机),并添加一个添加到主机组操作(指定另一个主机组),因为主机必须属于某个主机组。
命名主机
当添加主机时,主机名是反向DNS解析的结果,如果解析失败,则主机名设置为IP地址。如果Zabbix server执行网络发现,则解析就在Zabbix server上执行,如果Zabbix proxy执行网络发现,则解析在Zabbix proxy上执行。 如果在proxy上解析失败,不会再到Zabbix server上做解析。如果同名主机已经存在,新发现的主机会在名字后面添加 _2后缀,后续新发现的同名主机的后缀数字依次增加。
可以使用监控项的主机名覆盖DNS/IP解析的主机名,比如:
- 可以使用安装在服务器上的Zabbix agent,通过agent的监控项来发现多台主机并自动给这些主机分配合适的主机名,主机名取决于监控项返回的字符串值
- 可以使用SNMP agent监控项发现多台网络设备并自动分配合适的主机名,主机名取决于监控项返回的字符串值
如果已经使用了监控项的返回值作为主机名,则接下来的网络发现不会更新主机名。如果不使用监控项的返回值作为主机名,则使用默认值(DNS名称)。
如果新发现的主机IP地址已经存在,那么不会创建该主机。然而如果发现动作中包含添加模板、添加到主机组等操作,则会在现有的主机上执行相应操作。
删除主机
如果发现的主机不再属于发现规则定义的IP地址范围内,则该主机自动从 监控 → 网络发现 中删除。主机会立刻被删除。
添加主机时创建接口
当主机因网络发现而被添加时,主机接口将根据以下规则创建:
- 根据检测到的服务创建接口,例如,如果SNMP检查成功,则会创建一个SNMP接口。
- 如果主机同时响应Zabbix代理和SNMP请求,则会创建两种类型的接口。
- 如果唯一性标准是Zabbix代理或SNMP返回的数据,则找到的第一个接口将被创建为默认接口。其他IP地址将作为附加接口添加。操作条件(例如主机IP)不影响添加接口。请注意,这仅在所有接口都由同一发现规则发现时有效。如果不同的发现规则发现同一主机的不同接口,则会添加额外的主机。
- 如果主机仅响应代理检查,则仅创建带有代理接口的主机。如果后来开始响应SNMP,则会添加额外的SNMP接口。
- 如果最初创建了3个单独的主机(通过“IP”唯一性标准发现),然后修改发现规则,使得主机A、B和C具有相同的唯一性标准结果,则B和C将作为A的附加接口创建。个体主机B和C仍然存在。在监控 → 发现中,添加的接口将显示在“发现设备”列中,以黑色字体缩进显示,但“监控主机”列只会显示首先创建的主机A。对于被视为附加接口的IP,不会测量“正常运行时间/停机时间”(Uptime/Downtime)。
更改proxy设置
通过不同的proxy发现的主机始终被视为不同的主机。即便这种操作可以对不同的子网执行自动发现,但是为一个已纳入监控的子网替换proxy也很复杂,因为proxy的变更会同时应用到所有已发现的主机上。
比如下面在发现规则中替换proxy的步骤:
- 禁用规则
- 同步proxy配置
- 替换规则中的proxy
- 替换此规则发现的所有主机的proxy
- 启用规则