针对复杂多变的网络环境,zabbix提供了Network Discovery功能,该功能可以加速zabbix部署,让管理维护更为简单,大大减轻对于经常发生变动的部署环境的运维压力。Network Discovery功能不提供网络拓扑结构的发现。
Network Discovery功能主要依赖于以下信息:
IP范围
服务的可用性(FTP,SSH,WEB,POP3,IMAP,TCP等等)
Zabbix agent收集到的信息(仅支持非加密模式)
SNMP agent收集到的信息
我们首先配置一个DiscoveryRule(Configuration->Discovery->Creatediscovery rule):
创建一个Rule:
针对上面的项目详细说明一下:
参数 |
说明 |
Name |
Rule的名称 |
Discovery by proxy |
可以选择由谁来进行discover,No proxy选项表示zabbix server自己会进行discover,如果选择某个proxy,那么就由proxy来做discover |
IP range |
定义了dicovery的IP范围,支持下面几种范围定义: 单独的IP:例如192.168.1.1 IP地址范围:例如192.168.0.1-254,范围内的IP地址数量不能超过64K个 子网掩码(CIDR):例如192.168.0.0/24(对于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
注:从zabbix 3.0.0起,IP范围这里支持空格,列表以及多行定义了。 |
Delay (in sec) |
定义了执行这条Rule的时间间隔,会等到前一次执行完全结束后才会开始计算下一次执行时间,所以同一个Rule的多次Discovery不会重叠 |
Checks |
定义了检查的内容,端口(Port)可以用下面的方式定义: 单独的端口:例如22 端口范围:例如1-1024 列表:例如22,80,40000-60000 |
Device uniqueness criteria |
定义了Discovery会依据什么标准来区分主机,例如:如果选IP address,那么当Discovery发现一个新的主机的IP已经存在的时候,就不会认为这是一台新的主机 |
Enabled |
是否立即启用这条Rule |
每次Discovery check会产生以下几种Event:
Service Discovered:当服务从Down状态变为Up或者首次被发现
Service Up:服务连续处于Up的状态
Service Lost:服务从Up状态变为Down的状态
Service Down:服务连续处于Down的状态
Host Discovered:主机从Down状态(全部服务都Down了)变为Up状态(至少一个服务是Up的)
Host Up:主机持续处于Up状态
Host Lost:主机从Up状态变为Down状态
Host Down:主机持续处于Down状态
注意:在zabbix 2.4.0之后,如果一台通过Network Discovery发现的主机的IP范围不再在Rule的范围内,会立即被移除。
我们接着通过一个实例来说明如何配置一个简单的自动发现主机并应用模板监控。
首先创建一个针对Windows主机的DiscoveryRule:
接着我们创建一个基于Network Discovery的Action:
添加Action触发条件:
定义发现Windows主机后,将主机加入WindowsHosts主机组,然后将Template OS Windows这个Template应用于这台主机:
保存后,我们在这个网段创建一台Windows主机,并安装好ZabbixAgent(安装好Agent的原因并不是用于Discovery,因为我们探测只使用TCP 3389端口来探测,安装Agent的原因是我们应用的模板中可能有需要agent获取数据的监控项)。
等不到一分钟左右(我们Discovery的间隔是60s),就能够看到这台主机了(172.16.0.5):
查看主机172.16.0.5也已经应用了我们设定的模板进行监控了: