一、自动发现和自动注册介绍
1、为什么要用主机自动发现和自动注册
- 手动添加主机比较麻烦
- 得填写主机IP,应用模板等等
- 主机自动发现和自动注册能够帮我们自动添加主机
2、简介
- 自动发现:由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。
- 自动注册:由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表。对于使用SNMP的就要采用自动发现了。
二、自动发现
1、步骤
Zabbix自动发现实战步骤
- Zabbix添加自动发现
- 创建动作,假如说添加主机、应用模板
自动发现建议
- 使用Zabbix Agent去自动发现,也就是只有部署了Zabbix客户端的才能被发现
- 使用的自动发现Key建议为:system.uname
2、设置
在(配置–>自动发现)中
设置名称为 www_discovery
由之前的proxy程序代理
ip范围10.0.0.1-254
更新间隔这里默认一小时比较久,所以改为60s
检查类型新建一个zabbix客户端的,键值选择system.uname
设备唯一性准则选择IP地址
3、新建一台机器10.0.0.103,安装agent,Hostname=www_003,将sever设置为前面的proxy
修改主机名
hostnamectl set-hostname www_003
这里的hostname需要在proxy和server上能解析到这个主机名的ip,我这里在hosts文件里加上解析,而在生产环境中可以初始化agent配置文件时,将hostname改为主机的名称,一般公司内网dns上都有主机名对应的ip解析,这样server和proxy就能根据主机名解析到ip,从而获取数据了。
vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/zabbix_agentd.log
Hostname=www_003
Server=10.0.0.105
ServerActive=10.0.0.105
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
4、启动agent,过程参照之前的博客Zabbix客户端监控Linux
过一会在(监测–>自动发现)里可以看到有自动发现的机器
在(配置–>主机)里可以看到这台机器
5、为自动发现创建动作
在(配置–>动作)里,事件源选择自动发现,然后创建动作
配置动作的触发条件
名称为 www discovery action
触发条件为自动发现规则为上面创建的,即自动发现规则=www_discovery,也可以设置其他规则,比如服务端口、服务类型、主机ip等
配置动作触发后的操作
添加主机
添加到www主机组
并链接到模板
6、然后在主机中将刚才发现的主机删除,再重启一下agent,过一会可以发现自动加入主机组并且链接了模板
三、自动注册
1、主机自动发现和自动注册区别
- 自动发现zabbix server是主动去扫描网段,寻找agent的,海量的机器中不一定都是一个网段,可能会是N个网段中的N个机器,大量网段的自动发现触发大量的进程,会加速服务器的死亡。
- 自动注册由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表,即agent自动向server注册,你来注册且满足我条件我就给你监控。
自动发现主机名设置比较麻烦
自动发现配置起来比较麻烦,没有自动注册好
自动注册相对来说比自动发现好用
使用自动注册的话,添加主机的时候主机名使用Agent配置的Hostname
2、主机自动注册的流程
- zabbix客户端需要配置ServerActive
- zabbix客户端把自己的元数据提供给zabbix服务器或zabbix分布式proxy
- zabbix服务器添加动作,当收到元数据时候自动添加主机、链接模板等
3、设置agent配置
这里还是使用上面的www_003这台机器,先将上面的自动发现及动作停用,然后在主机里删除这台机器。
修改agent配置文件,比前面的自动发现多了HostMetadataItem=system.uname
这个元数据配置。
vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/zabbix_agentd.log
Hostname=www_003
Server=10.0.0.105
ServerActive=10.0.0.105
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
HostMetadataItem=system.uname
配置说明
ServerActive=Zabbix Server的IP地址
#设置主机名,如果不设置默认使用HostnameItem获取主机名。而默认情况下HostnameItem=system.hostname,这样就可以获取到Agent的主机名了。
Hostname=auto.example.com
#HostMetadata用于定义主机的元数据,在自动注册的时候使用,不能大于255个字符,如果不设置默认从HostMetadataItem获取
HostMetadata=nginx
# HostMetadataItem也是用于定义主机的元数据,在自动注册的时候使用,不能大于255个字符,这里设置的Item指的是Zabbix自带的监控项,注意这个值只用于HostMetadata没有设置的时候才生效。
HostMetadataItem=system.uname
4、配置自动注册动作
- 事件源选择自动注册
- 创建动作
- 动作中指定条件,假如说来自哪个Proxy,元数据包含什么(主机名)
- 验证自动注册
在(配置–>动作)里,事件源选择自动注册,然后创建动作
名称 www register
条件 通过之前的proxy代理的
元数据包含www的,这里主机名为www_003,元数据为键system.uname,所以元数据中会包含主机名
5、触发动作后的操作
添加主机
添加到www主机组
并链接到模板
6、添加动作后过一会查看,可以看到有自动注册的机器
7、注意
添加主机会把Hostname填上
只需要一个Action就好
需要注意每个Agent都要加上HostMetadataItem这个配置