网络发现是zabbix最具特色的功能之一,它能能够根据用户事先定义的规则自动添加监控主机或服务等,Zabbix的网络发现功能可以基于:
网络发现通常包含两个阶段:discovery和actions
Discovery中的事件:
Service Up
Service Down
Host Up
Host Down
Service Discovered
Service Lost
Host Discovered
Host Lost
Action,网络发现中的事件可以触发action,从而自动执行指定的操作,如: Sending notifications
Adding/removing hosts
Enabling/disabling hosts
Adding hosts to group
Removing hosts from a group
Linking hosts to/unlinking from a template
Executing remote scripts
ZABBIX服务端IP:10.211.55.10 OS:CentOS release 7.6 (Final) 客户端IP:10.211.55.11 OS:CentOS release 7.6 (Final)
配置Zabbix的网络发现规则来发现主机和服务:
ZABBIX 官网示例如下
例如我们设置IP段为10.211.55.1-10.211.50.254的网络发现规则。
在我们的例子中,我们需要:
首先给我们的IP段定义网络发现规则。
ZABBIX通过连接ZABBIX agents并获取system.uname键值来发现IP段为10.211.55.1-10.211.50.254中的主机。根据不同键值来对应不同的操作系统的不同操作。
根据不同键值来对应不同的操作系统的不同操作。例如将Windows服务器链接到Template OS Windows,将Linux服务器链接到Template OS Linux。规则将每10分钟(600秒)执行一次。当规则添加后,Zabbix将自动执行发现规则并生成基于发现的事件做后续处理。
自动发现Linux 主机
定义动作(action) 将所发现的Linux服务器添加到相应的组/模板
如果发生以下情况,动作(action)将被激活:
动作(action)将执行以下操作:
自动发现Windows主机
定义动作(action) 将所发现的Windows服务器添加到相应的组/模板
定义动作(action) 将所发现的Windows服务器添加到相应的组/模板
定义动作删除失联主机
如果“Zabbix agent”服务'down'超过24小时(86400秒),服务器将被删除
Zabbix支持active agent的自动注册(auto-resisitration)功能,通常用于此前故障的agent重新上线的场景,也可基于active agent的自动注册机制添加被动检测,这会通过active agent注册时提供的”ListenIP”和”ListenPort”进行,Server端在收到自动注册请求后以接收到的IP和Port为接口属性。
两者区别:网络发现是zabbix server主动将在线的主机添加到host列表中去,而自动注册是 Active agent主动联系zabbix server,最后由zabbix server将这些agent加到host里。
Zabbix Active agent可以实现自动注册,进而服务器对其进行监控。通过这种方式,无需在服务器上进行手动配置便可直接启动对新host的监控。当以前未知的active agent要求检查时,会发生自动注册。服务器在添加新的自动注册主机时,使用接收到的IP地址和端口配置agent。如果没有接收到IP地址值,则使用传入连接的IP地址。如果没有接收到端口值,则使用10050。
zabbix agent 指定服务器地址
请确保在配置文件中 指定了Zabbix server- zabbix_agentd.conf
Server=zabbix server or proxy address
ServerActive=zabbix or proxy server address
如果你没有在zabbix_agentd.conf中特别定义Hostname, 则服务器将使用agent的系统主机名命名主机。主机名可以通过运行'hostname'命令获取。修改配置文件后需要重启agent。
当服务器从agent收到自动注册请求时,它会调用一个动作n. 必须要为agent自动注册配置一个事件源为“自动注册”的动作。
在Zabbix前端页面,点击配置 → 动作,选择自动注册 为事件源,然后单击创建动作:
在动作选项卡,定义动作名称可选指定条件。如果要使用“主机元数据”参数
在“操作”选项卡中,需要添加关联操作,如“添加主机”,“添加到主机组”(例如,发现的主机),“链接到模板”等。如果自动注册主机只能支持主动监视(例如由于防火墙的原因,Zabbix服务器不允许访问的主机),则可能需要创建一个特定的模板,如Template_Linux-active来做关联。
当agent程序向服务器发送自动注册请求时,会发送其主机名。在某些情况下、Zabbix Server单单通过主机名无法区分主机。这时可以选择主机元数据将其他信息从agent发送到服务器。
主机元数据在agent配置文件-zabbix_agentd.conf中配置。在配置文件中指定主机元数据有两种方式:
HostMetadata
HostMetadataItem
每当active agent发送刷新主动检查请求到服务器时,都会进行自动注册尝试。请求的延迟在agent的RefreshActiveChecks参数中指定。第一个请求在agent重新启动后立即发送。
网络中有Windows和Linux主机通过配置主机元数据来区分Linux和Windows主机。执行动作将Linux 和Windows 主机分别 加入到不同群组 并分别关联“Template OS Linux”和“Template OS Windows” 模板自动注册上线。
ZABBIX 配置
创建2个动作,
第一个动作:
名称:Linux主机自动注册
条件:主机元数据,如Linux
动作:链接到模板:Template OS Linux
第二个动作:
名称:Windows主机自动注册
条件:主机元数据,如Windows
操作:链接到模板:Template OS Windows
在这种情况下,您可以跳过“添加主机”的操作。链接到模板需要首先添加主机,服务器会自动执行“添加主机”的操作。
ZABBIX Agent配置
Server=zabbix server or proxy address
ServerActive=zabbix or proxy server address
#Hostname=ZABBIXProxy1
HostnameItem=system.hostname
HostMetadata=Linux
UnsafeUserParameters=1
说明:system.hostname是ZABBIX内置的一个自动获取主机名的方法,为了方便配置,建议打开此参数而关闭Hostname参数。
注意:HostnameItem的优化级低于Hostname,当两个参数都启用且配置的情况下,ZABBIX获取的主机名,将以Hostname为准
在客户机上安装开启ZABBIX-AGENT
在ZABBIX的WEB界面看到:
已经成功自动发现和注册了。看下,是不是成功出图了
有数据,有图形
现在客户端的zabbix-agent关了,看下情况
查看主机和数据都已经自动下线了