zabbix应用之discovery批量添加主机并实现自定义主机名

简介:

  利用zabbix的discovery功能可以实现自动批量添加主机的功能。

    下面以自动监控172.16.4.240-250网段的Linux主机为例,步骤如下:

一、客户端安装agent

    为网段内的Linux主机安装好zabbix agent,zabbix_agentd.conf正确配置server的IP和端口,启动agent服务。

    如果你的操作系统为RHEL或者CentOS推荐使用yum安装方式。

    参考官方资料:https://www.zabbix.com/documentation/2.2/manual/installation/install_from_packages

    以CentOS6系统安装2.2版本的zabbix-agent为例:

1
2
3
4
5
6
7
8
9
shell # rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
shell # yum install zabbix-agent -y
shell # server=xx.xx.xx.xx
shell # sed -i "/^Server=/c\Server=$server" /etc/zabbix/zabbix_agentd.conf
shell # sed -i "/^ServerActive=/c\ServerActive=$server:10051" /etc/zabbix/zabbix_agentd.conf
shell # sed -i "/^Hostname=/c\#Hostname=Zabbix server" /etc/zabbix/zabbix_agentd.conf
shell # iptables -I INPUT -s $server -p tcp --dport 10050 -j ACCEPT
shell # service iptables save
shell # chkconfig zabbix-agent on

二、创建Discovery规则

    选择【Configuration】->【Discovery】,创建发现规则。

wKiom1QFZUCjIhpuAALq-t4ct54520.jpg

    Name:        为发现规则起个名字

    IP range:    客户端所属的IP网段

    Delay:       发现周期,单位秒

    Checks:      选择“Zabbix agent”检测类型、端口10050、Key填写“system.uname

    查看自动发现结果,下图结果显示了有三台主机正确安装了zabbix agent。

wKioL1QFVaPCgYStAAKZaGWn218261.jpg

三、创建Action规则

    选择【Configuration】->【Actions】,在右边“Event source”选择“Discovery”,然后创建Action规则如下图所示:

wKiom1QFVivCwFl_AAKYGIZO4EY409.jpg

Conditions

过滤条件

Discovery rule = discovery agent

选择创建好的Discovery规则

Received value like Linux

限制客户端类型为Linux系统

Discovery status = Up  

客户端状态为UP

Operations

为符合条件的结果执行操作,

包括创建主机、分配主机组、

链接模板、激活主机

Add host
Add to host groups: Linux servers
Link to templates: Template OS Linux
Enable host

四、查看最后的结果

    稍等一段时间,到主机列表里可以看到三个客户端已经自动创建好了,监控状态也是正常的。

wKiom1QFWYXRxgEWAAO8OQtbdTs331.jpg

五、实现自定义主机名

    添加的客户端主机的Host name是以IP地址命名的,不够人性化。我们从底层C代码探究一下为什么是这样,该怎么解决:

1
2
                 /* for host uniqueness purposes */
                 host = zbx_strdup(host,  '\0'  != *row[3] ? row[3] : row[2]);

    在zabbix-2.2.5\src\zabbix_server\operations.c源文件的add_discovered_host函数里,发现主机名host是从数据库dservices表的dns字段和ip字段取得的,如果dns不为空的话,host就是dns,否则就是ip。上面row[3]是dservices.dns,row[2]是dservices.ip。

    我们再找找dservices.dns是从哪里来的,怎么让它有值呢,最后找到了zbx_gethost_by_ip函数,在zabbix-2.2.5\src\libs\zbxcomms\comms.c源文件里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void     zbx_gethost_by_ip( const  char  *ip,  char  *host,  size_t  hostlen)
{
     struct  in_addr    addr;
     struct  hostent  *hst;
 
     assert (ip);
 
     if  (0 == inet_aton(ip, &addr))
     {
         host[0] =  '\0' ;
         return ;
     }
 
     if  (NULL == (hst = gethostbyaddr(( char  *)&addr,  sizeof (addr), AF_INET)))
     {
         host[0] =  '\0' ;
         return ;
     }
 
     zbx_strlcpy(host, hst->h_name, hostlen);
}

    我们发现host的值(dservices.dns)是通过gethostbyaddr获取的。gethostbyaddr是通过IP地址来获取主机的名称(域名),所以我们要为客户端主机的主机名解析到IP地址。可以搭建DNS服务器,也可以直接在zabbix server端的/etc/hosts文件里添加客户端主机名和IP。

    继续以上面的实验为例,在/etc/hosts添加客户端的主机名和IP:

wKiom1QFYgHziBHGAAElE0xNSpE353.jpg

    然后删除刚才发现的三个主机,让zabbix server再重新创建一遍,结果如下:

wKioL1QFY26CxjBHAAOdlkIHsd0786.jpg

    我们发现主机名不再是单纯的IP地址了。



本文转自 张斌_青岛 51CTO博客,原文链接:http://blog.51cto.com/qicheng0211/1547852

相关文章
|
10月前
|
JSON 监控 前端开发
python对接API二次开发高级实战案例解析:Zabbix API封装类实现获取认证密钥、所有主机组、所有主机、所有监控项和历史数据
python对接API二次开发高级实战案例解析:Zabbix API封装类实现获取认证密钥、所有主机组、所有主机、所有监控项和历史数据
342 0
|
7月前
|
监控
zabbix如何添加自定义监控项
zabbix如何添加自定义监控项
301 0
|
15天前
|
监控 Java
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
106 0
|
15天前
|
监控 关系型数据库 应用服务中间件
zabbix自定义监控、钉钉、邮箱报警
zabbix自定义监控、钉钉、邮箱报警,实验准备,安装,添加监控对象,添加自定义监控项,监控mariadb,监控NGINX,钉钉报警设置,邮件报警
160 0
|
7月前
|
监控 网络协议 Unix
zabbix通过agent客户端监控主机
zabbix通过agent客户端监控主机
|
8月前
|
监控
通过Zabbix Web界面查看主机的监控方式
通过Zabbix Web界面查看主机的监控方式
198 1
|
9月前
|
运维 监控
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
121 0
|
9月前
|
监控 安全
zabbix测试发邮件报错–连接到Zabbix主机 “localhost“ 失败
zabbix测试发邮件报错–连接到Zabbix主机 “localhost“ 失败
165 0
|
10月前
|
监控 Unix Go
zabbix:监控docker应用配置
zabbix:监控docker应用配置
464 0
zabbix:监控docker应用配置
|
域名解析 数据采集 监控
【Zabbix】Zabbix 分布式监控—创建Proxy主机
【Zabbix】Zabbix 分布式监控—创建Proxy主机
100 0