思路分析:自动发现其实是服务器的发现规则在起作用,发现规则负责探测到主机,探测到后触发动作action,action启动添加主机,添加主机模板event,如果服务器探测到主机下线,那么发现规则触发另一个动作,实现移除主机,所以这里我打算添加两个action

1 在三台centos主机上安装agent

ip分别为90.90.90.5,90.90.90.6,90.90.90.7

安装命令大致如下

#tar xf zabbix-2.4.6.tar.gz 

#cd zabbix-2.4.6

#./configure  --prefix=/usr/local  --sysconfdir=/etc/zabbix --enable-agent

2 添加discovery rule,不要enable,这里时间改一下,我忘了

zabbix------discovery定义自动发现_zabbix discovery

3 添加上线action,注意右上角选择discovery,在conditions填Discovery rule = i_find_you,Discovery status = Discovered,在operation下填添加主机,link模板template,我添加的是test NIC info,加到一个组里面,我添加的是Discovered hosts,然后选择enable the host

zabbix------discovery定义自动发现_zabbix discovery_02

zabbix------discovery定义自动发现_zabbix discovery_03

点击Update,应用该action


4 添加停机action

zabbix------discovery定义自动发现_zabbix discovery_04

这里我选择的condition是下线时间超过一分钟便于测试,且发现状态为Lost,我们就做如下Operation

zabbix------discovery定义自动发现_zabbix discovery_05

5 启动刚刚的discovery rule

然后好几分钟都不行,我去server日志看了下,没有fping居然

源码安装完然后说permission denied,是否root,添加以下SUID就好了,总之你只要su -l zabbix后使用/usr/sbin/fping -s www.baidu.com成功就说明没问题了

zabbix------discovery定义自动发现_zabbix discovery_06


6 去主机部分查看下

zabbix------discovery定义自动发现_zabbix discovery_07添加成功,并且模板link成功,今天才发现前几天的perl有问题,忽略了几个情况,正则部分修改下就行了

#!/usr/bin/perl -w

my $nic = $ARGV[0];

my $type = $ARGV[1];

my $line = `ifconfig $nic|grep bytes`;

my @info = $line =~ /:(\d+\.?\d+)\s+/g;

if ("\U$type" eq "RX"){

        print $info[0];}

elsif ("\U$type" eq "TX"){

        print $info[1];}

else {

        print 0;}

等会再在博客更改下,至于其他的功能大家自己摸索吧

7 把主机的状态调节为关掉,这里我不好关机,我对5做了

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all禁止ping回流

zabbix------discovery定义自动发现_zabbix discovery_08



现在头有点晕,其实具体的情况再说吧,毕竟监控我还不是很了解。

最近又有机会弄zabbix的自动发现了说下几点心得

1  zabbix自动发现针对ip,而工作在active模式下的主机可以通过configuration--discovery--选择auto registration,根据HostMetadata传过来的值指定

2  如何更好地自动发现,自动注册已经很好(主机名为可见名)

通过host文件(参考网络)或dns解析就可以了

3 自动发现有时候是有快慢的,建议ip范围更加精确一点