Zabbix提供了高校灵活的网络自动发现功能。
通过正确设置网络发现,您可以:
Zabbix网络发现基于以下信息:
它不提供以下功能:
网络发现基本上包括两个阶段:"发现"和"动作"。
####发现
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解析的主机名,比如:
如果已经使用了监控项的返回值作为主机名,则接下来的网络发现不会更新主机名。如果不使用监控项的返回值作为主机名,则使用默认值(DNS名称)。
如果新发现的主机IP地址已经存在,那么不会创建该主机。然而如果发现动作中包含添加模板、添加到主机组等操作,则会在现有的主机上执行相应操作。
如果发现的主机不再属于发现规则定义的IP地址范围内,则该主机自动从 监控 → 网络发现 中删除。主机会立刻被删除。
当主机因网络发现而被添加时,主机接口将根据以下规则创建:
通过不同的proxy发现的主机始终被视为不同的主机。即便这种操作可以对不同的子网执行自动发现,但是为一个已纳入监控的子网替换proxy也很复杂,因为proxy的变更会同时应用到所有已发现的主机上。
比如下面在发现规则中替换proxy的步骤: