思路分析:自动发现其实是服务器的发现规则在起作用,发现规则负责探测到主机,探测到后触发动作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,这里时间改一下,我忘了
3 添加上线action,注意右上角选择discovery,在conditions填Discovery rule = i_find_you,Discovery status = Discovered,在operation下填添加主机,link模板template,我添加的是test NIC info,加到一个组里面,我添加的是Discovered hosts,然后选择enable the host
点击Update,应用该action
4 添加停机action
这里我选择的condition是下线时间超过一分钟便于测试,且发现状态为Lost,我们就做如下Operation
5 启动刚刚的discovery rule
然后好几分钟都不行,我去server日志看了下,没有fping居然
源码安装完然后说permission denied,是否root,添加以下SUID就好了,总之你只要su -l zabbix后使用/usr/sbin/fping -s www.baidu.com成功就说明没问题了
6 去主机部分查看下
添加成功,并且模板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的自动发现了说下几点心得
1 zabbix自动发现针对ip,而工作在active模式下的主机可以通过configuration--discovery--选择auto registration,根据HostMetadata传过来的值指定
2 如何更好地自动发现,自动注册已经很好(主机名为可见名)
通过host文件(参考网络)或dns解析就可以了
3 自动发现有时候是有快慢的,建议ip范围更加精确一点