zabbix自动发现和自动注册


熟练通过Zabbix监控平台监控单台客户端之后,企业中有成千上万台服务器,如果手工添加会非常耗时间,造成大量的人力成本的浪费,有没有什么好的自动化添加客户端的方法呢?

Zabbix自动发现就是为了解决批量监控而设计的功能之一,什么是自动发现呢,简单来说就是Zabbix Server端可以基于设定的规则,自动批量的去发现局域网若干服务器,并自动把服务器添加至Zabbix监控平台,省去人工手动频繁的添加,节省大量的人力成本。(自动发现规则由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备,实现自动刚发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(item)、自动创建图像等功能。)

 

自动发现的原理


网络发现由两个步骤组成: 发现和动作(action)

zabbix周期性地扫描在网络发现规则中定义的IP段,根据每一个规则配置自身的检查频率,每一个规则都定义了一个对指定IP段的服务检查集合.

动作是对发现的主机进程相关的设置过程, 常用的动作有添加,或删除主机,启用或停用主机,添加主机到某一个组中,发现通知等等.

 

自动发现discover进程


说明:用于设置自动发现主机的线程数量,若单台代理所管理机器超过500台,可以考虑加大此数值(仅适用于直接AGENT场景)
# StartDiscoverers=1
### Option: StartHTTPPollers
# Number of pre-forked instances of HTTP pollers.
#
# Mandatory: no
# Range: 0-1000
# Default:
[root@localhost ~]# systemctl restart zabbix-server   --如果发现没有探测到主机就要看看有没有探测进程
[root@localhost ~]# ps -ef | grep discove --重启zabbix-server服务之后查看是否存在discover进程,可以看到默认情况下只开启一个探测进程
zabbixs+ 21298 21287 0 20:16 ? 00:00:00 /usr/sbin/zabbix_server: discoverer #1 [processed 1 rules in 0.563187 sec, idle 60 sec]

 

[root@localhost ~]# vim /etc/zabbix_server.conf   --默认情况下发现进程只有一个,如果需要发现的主机可以将参数调大,使用多个进程去发现主机,这样探测速度快

StartDiscoverers=2
[root@localhost ~]# ps -ef | grep discoverer
zabbixs+ 21442 21431 0 20:21 ? 00:00:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000338 sec, idle 43 sec]
zabbixs+ 21443 21431 0 20:21 ? 00:00:00 /usr/sbin/zabbix_server: discoverer #2 [processed 0 rules in 0.000497 sec, idle 60 sec]

 

自动发现


Zabbix最大的特点之一就是可以批量自动主机并监控,利用发现(Discovery)模块,实现自动发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(Items)、自动创建监控图像,操作步骤如下:Configuration----->discovery------->Create discovery rule

 

创建发现的规则:

填写server端所扫描的主机ip地址所在范围,例如服务器所在的范围为192.168.179.99-104

修改适合的时间延迟(延迟太短如果主机太多会导致有的主机扫描不到,这里为60S)

Name:    规则名称;

Discovery by proxy : 通过代理探索;

IP range : zabbix_server 探索区域的IP范围;

Delay :     搜索一次的时间间隔;

Checks : 检测方式,如用ping方式去发现主机,zabbix_server需安装fping,此处使用SSH方式发现;

#使用yum安装的zabbix默认已经帮我们安装好
[root@localhost ~]# fping 192.168.179.101
192.168.179.101 is alive

Device uniqueness criteria: 以IP地址作为被发现主机的标识。

Zabbix 自动发现和自动注册实现批量添加主机_zabbix

[root@localhost ~]# netstat -tpln | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 717/sshd
tcp6 0 0 :::22 :::* LISTEN 717/sshd

探测到了会如下显示:(可以看到有些主机是没有被探测到的,如101,102,SSH不通)

Zabbix 自动发现和自动注册实现批量添加主机_服务器_02

 

如果你这里需要自动发现被监控端已经部署了agent的机器使用下面的方法(这样相当于ssh的方法探测的范围更加小)

#被监控端129.168.179.101
[root@localhost ~]# yum install zabbix40-agent.x86_64 -y
[root@localhost ~]# vim /etc/zabbix_agentd.conf
Server=192.168.179.102
[root@localhost ~]# systemctl restart zabbix-agent
[root@localhost ~]# zabbix_get -s 192.168.179.101 -k system.uname
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64

Zabbix 自动发现和自动注册实现批量添加主机_客户端_03

Zabbix 自动发现和自动注册实现批量添加主机_客户端_04

 

 

创建发现的动作

Zabbix发现规则创建完毕,客户端Agent安装完后,被发现的IP主机不会自动添加至Zabbix监控列表,需要添加发现动作,添加方法如下:Configuration --> Actions --> Event source(选择Discovery) --> Create action

Zabbix 自动发现和自动注册实现批量添加主机_sed_05

操作:添加相应的操作,如加模板,加主机等

Zabbix 自动发现和自动注册实现批量添加主机_服务器_06

 

 

 查看结果


configuration-->hosts-->配置你的zabbix客户端即按照zabbix agent

Zabbix 自动发现和自动注册实现批量添加主机_zabbix_07

192.168.179.100上面安装zabbix agent 

[root@localhost ~]# yum install zabbix40-agent -y  --被监控的主机安装上agent
[root@localhost ~]# rpm -qc zabbix40-agent
/etc/zabbix/zabbix_agentd.conf
Server=192.168.179.103 --要将数据给到103
#ServerActive=127.0.0.1
Hostname=192.168.179.100 --主机ip

[root@localhost ~]# systemctl start zabbix-agent
[root@localhost ~]# netstat -tpln | grep 100
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 15386/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 15386/zabbix_agentd

再来查看可以看到192.168.179.99成功添加进监控项 

Zabbix 自动发现和自动注册实现批量添加主机_zabbix_08

Zabbix 自动发现和自动注册实现批量添加主机_sed_09