1 配置网络发现规则
概述
要配置由 Zabbix 使用的网络发现规则以发现 主机 和服务:
- 转至 数据采集 → 发现
- 点击 创建发现规则(或点击现有规则名称以编辑该规则)
- 编辑发现规则属性
规则属性

所有必填输入字段都用红色星号标记。
| Parameter | Description |
|---|---|
| Name | 规则的唯一名称。例如,“Local network”。 |
| Discovery by | 发现由以下方式执行: Server - 由 Zabbix 服务器执行 Proxy - 由 Zabbix proxy 执行(在 proxy 名称字段中选择) |
| IP range | 用于发现的 IP 地址范围。它可以采用以下格式: 单个 IP:192.168.1.33 IP 地址范围:192.168.1-10.1-255。该范围受覆盖地址总数限制(少于 64K)。 IP 掩码:192.168.4.0/24 支持的 IP 掩码: /16 - /30 适用于 IPv4 地址 /112 - /128 适用于 IPv6 地址 列表:192.168.1.1-255, 192.168.2.1-100, 192.168.2.200, 192.168.4.0/24 此字段支持空格、制表符和多行。 |
| Update interval | 此参数定义 Zabbix 执行该规则的频率。 该间隔从上一次发现实例执行结束后开始计算,因此不会重叠。 支持时间后缀,例如 30s、1m、2h、1d。 支持用户宏。 注意:如果使用了用户宏且其值发生更改(例如 1w → 1h),下一次检查将按照之前的值执行(按示例值会在更远的未来执行)。 |
| Maximum concurrent checks per type | 为每种服务检查设置发现线程(worker)的最大数量,以并行处理发现检查: One - 一个线程 Unlimited - 不限制线程数量(但不超过 StartDiscoverers 参数中的数量) Custom - 设置自定义线程数(0-999) 请注意,由于 libsnmp 实现的特性,所有使用 SNMPv3 异步服务检查的发现规则都由一个 worker 处理,也就是说,增加 worker 数量不会提高发现速度。 |
| Checks | Zabbix 将使用此检查列表进行发现。点击 可在弹出窗口中配置新的检查。支持的检查:SSH、LDAP、SMTP、FTP、HTTP、HTTPS、POP、NNTP、IMAP、TCP、Telnet、Zabbix agent、SNMPv1 agent、SNMPv2 agent、SNMPv3 agent、ICMP ping。 基于协议的发现使用 net.tcp.service[] 功能测试每个主机,但 SNMP 例外,它会查询 SNMP OID。Zabbix agent 通过以未加密模式查询监控项进行测试。更多详情请参见agent items。 “Ports” 参数可以是以下之一: 单个端口:22 端口范围:22-45 列表:22-45,55,60-70 自 Zabbix 7.0 起,除 LDAP 检查外,所有服务检查都以异步方式执行。 自 Zabbix 7.0 起,HTTP/HTTPS 检查通过 libcurl 完成。如果 Zabbix 服务器/proxy 编译时未包含 libcurl,则 HTTP 检查将像以前的版本一样工作(即作为 TCP 检查),但 HTTPS 检查将无法工作。 |
| Device uniqueness criteria | 唯一性条件可以是: IP address - 不处理多个单 IP 设备。如果已存在具有相同 IP 的设备,则会被视为已发现,不会添加新的主机。 <discovery check> - Zabbix agent 或 SNMP agent 检查。 请注意,发现过程中使用的唯一性条件与系统在执行动作时用于主机识别的条件并不相同。发现过程中的唯一性条件用于定义两个或多个已发现设备是否相同(或不同),而在 Zabbix 中用于主机识别的条件只有 IP 地址(请参见Host creation)。 |
| Host name | 使用以下方式设置新建主机的技术主机名: DNS name - DNS 名称(默认) IP address - IP 地址 <discovery check> - 接收到的发现检查字符串值(例如 Zabbix agent、SNMP agent 检查) 另请参见:Host naming。 |
| Visible name | 使用以下方式设置新建主机的可见主机名: Host name - 技术主机名(默认) DNS name - DNS 名称 IP address - IP 地址 <discovery check> - 接收到的发现检查字符串值(例如 Zabbix agent、SNMP agent 检查) 另请参见:Host naming。 |
| Enabled | 勾选后,该规则处于活动状态,并将由 Zabbix 服务器执行。 未勾选时,该规则不活动,不会执行。 |
超出文件描述符限制
当存在大量并发检查时,可能会耗尽用于 file 的描述符限制,具体取决于 服务器进程类型与线程。
用于检测所需的 file 描述符数量等于发现工作者数量乘以 1000。 默认情况下,有 5 个 启动发现进程,而系统的软限制大约为 1024。
如果接近此限制,Zabbix 将减少每个工作者每种类型的默认并发检查数量,并向日志文件写入警告。 但是,如果用户为 每种类型的并发检查最大数量 设置的值高于 Zabbix 计算出的值,则 Zabbix 将为一个工作者使用用户定义的值。
实际应用场景
在这个示例中,我们希望为具有IP范围192.168.1.1-192.168.1.254的本地网络设置网络发现。
在我们的场景中,我们希望:
- 发现那些运行着Zabbix agent的主机
- 每10分钟执行一次run发现
- 如果主机的正常运行时间超过1小时,则将一个主机添加到监控中
- 如果主机的停机时间超过24小时,则移除主机
- 将Linux 主机添加到“Linux服务器”组
- 将Windows 主机添加到“Windows服务器”组
- 对Linux 主机使用模板Linux
- 对Windows 主机使用模板Windows
步骤1
为我们的IP范围定义一个网络发现规则。

Zabbix 将尝试通过连接到 Zabbix agents 并获取 system.uname 键的值,在 192.168.1.1-192.168.1.254 的IP范围内发现 主机。从 agent 接收到的值可用于命名 主机,并可根据不同的操作系统应用不同的操作。例如,将Windows服务器链接到模板 Windows,Linux服务器链接到模板 Linux。
该规则将每 10 分钟执行一次。
添加此规则后,Zabbix 将自动开始进行发现,并生成基于发现的事件以供后续处理。
步骤 2
定义一个自动发现 action,用于将发现的 Linux 服务器添加到相应的主机组/模板。

如果满足以下条件,此动作将被激活:
- "Zabbix agent" 服务为 "up"
- system.uname 的值(我们在规则定义中使用的 Zabbix agent 键)包含 "Linux"
- 系统运行时间大于等于 1 小时(3600 秒)

此动作将执行以下 execute 操作:
- 将发现的 主机 添加到 "Linux servers" 主机组(如果尚未添加,则同时添加 主机)
- 将 主机 链接到 Linux 模板。Zabbix 将自动开始使用来自 "Linux" 模板的 监控项、监控项和触发器监控 主机。
步骤3
为将发现的 Windows 服务器添加到相应的组/模板中,定义一个发现动作。


步骤4
为删除丢失的服务器定义发现动作。


如果 "Zabbix agent" 服务“关闭”超过 24 小时(86400 秒),则服务器将被删除。
可在弹出窗口中配置新的检查。