1 配置网络发现规则

概述

要配置一个供 Zabbix 用于发现主机和服务的网络发现规则:

  • 前往 数据采集 → 发现
  • 点击 创建发现规则(或点击规则名称以编辑现有规则)
  • 编辑发现规则属性

规则属性

所有必填输入字段都以红色星号标记。

参数 描述
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 掩码:
IPv4 地址为 /16 - /30
IPv6 地址为 /112 - /128
列表: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 name 使用以下方式设置所创建主机的技术主机名:
DNS name - DNS 名称(默认)
IP address - IP 地址
<discovery check> - 发现检查返回的字符串值(例如 Zabbix agent、SNMP agent 检查)
另请参见:主机命名
Visible name 使用以下方式设置所创建主机的可见主机名:
Host name - 技术主机名(默认)
DNS name - DNS 名称
IP address - IP 地址
<discovery check> - 发现检查返回的字符串值(例如 Zabbix agent、SNMP agent 检查)
另请参见:主机命名
Enabled 勾选该复选框后,规则处于活动状态,并将由 Zabbix 服务器执行。
如果未勾选,则规则不处于活动状态,也不会被执行。
超出文件描述符限制

在大量并发检查的情况下,discovery manager 的文件描述符限制可能会被耗尽。

检测所需的文件描述符数量等于 discovery worker 的数量 * 1000。 默认情况下,有 5 个 discovery workers,而系统的软限制大约为 1024。

如果接近此限制,Zabbix 将减少每个 worker 每种类型的默认并发检查数量,并在日志文件中写入警告。 但是,如果用户为 Maximum concurrent checks per type 设置的值高于 Zabbix 计算出的值,Zabbix 将对一个 worker 使用用户定义的值。

一个真实场景

在这个例子中,会演示如何给本地IP地址范围192.168.1.1-192.168.1.254设置网络发现规则。

需要在这个场景中实现:

  • 发现运行了Zabbix agent的主机
  • 每十分钟执行一次发现
  • 如果主机运行时长大于一小时,添加该主机到监控中
  • 如果主机停机时长大于二十四小时,则删除主机
  • 添加Linux主机到"Linux服务器"组中
  • 添加Windows主机到"Windows服务器"组中
  • 给Linux主机使用 Linux 模板
  • 给Windows主机使用 Windows 模板
步骤 1

为我们的 IP 范围定义网络发现规则。

Zabbix 将尝试在 IP 范围 192.168.1.1 到 192.168.1.254 中发现主机,通过连接到 Zabbix agent并获取 system.uname 键的值来完成。从agent收到的值可用于命名主机,并根据不同的操作系统应用不同的操作。例如,将 Windows 服务器关联到模板 Windows,将 Linux 服务器关联到模板 Linux

该规则将每 10 分钟执行一次。

添加此规则后,Zabbix 将自动启动发现并生成基于发现的事件,以供进一步处理。

第二步

定义一个网络发现 动作 ,用于 添加发现的Linux服务器到对应的组并链接到对应模板。

同时满足下列条件才会使动作生效:

  • "Zabbix agent" 服务是已启动(up)状态的
  • system.uname(规则里定义的Zabbix agent的键)的值包含 "Linux"
  • 运行时长(uptime)大于1小时(3600秒)

动作会执行下列操作:

  • 添加发现的主机到 "Linux服务器" 组(如果之前主机不存在,则同时创建主机)
  • 链接主机到 Linux 模板。主机会自动纳入监控,监控使用 "Linux" 模板中的监控项和触发器
第三步

定义网络发现动作,添加发现的Windows服务器到对应组并链接到对应模板。

第四步

定义网络发现动作,删除丢失的(lost)主机。

如果 "Zabbix agent" 服务停止(down)时间超过24小时(86400秒),则会删除对应主机。