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为例:

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】,创建发现规则。

Name:        为发现规则起个名字

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

Delay:       发现周期,单位秒

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

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

三、创建Action规则

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


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

四、查看最后的结果

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

五、实现自定义主机名

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

                /* 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源文件里。

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的值是通过gethostbyaddr获取的。gethostbyaddr是通过IP地址来获取主机的名称(域名),所以我们要为客户端主机的主机名解析到IP地址。可以搭建DNS服务器,也可以直接在zabbix server端的/etc/hosts文件里添加客户端主机名和IP。

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

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

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

时间: 2024-12-11 16:27:29

zabbix应用之discovery批量添加主机并实现自定义主机名的相关文章

zabbix调用api接口批量添加主机

zabbix调用api接口批量添加主机,这里用的是python 2.7(需安装xlrd模块处理表格). (1)到官网下载xlrd模块:https://pypi.python.org/pypi/xlrd (2)解压压缩包:tar xvf xlrd-1.0.0.tar.gz(3)进入到解压的文件夹运行python setup.py install命令安装 1.整理一个excel表格(test.xlsx),格式如下: 2.addhost.py脚本,添加主机名.显示名称.dns主机名.群组.模板字段(网

如何在Windows Server 2008R2上面批量添加AD用户及自定义OU批量添加用户

首先这里我们需要找HR要到员工的信息表,越详细越好 注:密码不能太过于简单,一定要符合密码的复杂性的要求,不然会提示报错信息 然后把修改号的表保存到C盘的根目录下面 下面添加这些信息for /f "skip=1 eol=; tokens=1-10 delims=, " %a in (c:\aduserdata.csv) do dsadd user cn=%a,cn=users,dc=abc123,dc=com -display a% -upn %[email protected] -s

Zabbix(一):server,agent端 安装配置及主机,监控项,触发器,动作,媒介配置步骤

Zabbix(一):server端配置.agent端配置及创建主机组.主机.Application.Item.Trigger步骤详解 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题.  Zabbix的逻辑组件: - 主机(host):被监控的网络设备,通常可以使用IP或DNS名称来指定: - 主机组(hostgroup):主机的逻

通过zabbix自带api进行主机的批量添加操作

通过zabbix自带api进行批量添加主机 我们需要监控一台服务器的时候,当客户端装好zabbix-agent端并正确配置以后,需要在zabbix-server的web gui界面进行添加zabbix-agent操作,填写host_name,访问名,ip地址,端口还有模板等信息 这样操作比较方便,但当我们需要添加的主机一次性有上百台甚至前台的时候这种方式效率就比较低了,一般有如下解决方式:1.通过自动发现,自动注册主机2.通过zabbix_api的方式进行批量操作 今天我们使用第二种方式进行操作

zabbix批量添加主机

zabbix通过excel批量添加主机 本次批量添加针对监控**网络设备**,监控介质通过snmp方式. 不需要再一次一次添加每个网络设备. 只需要编写excel表格,即可一键添加监控. 安装excel python模块xlrd yum -y install epel-release yum -y install python-pip pip install --upgrade pip pip install xlrd 准备excel表格 表格列的信息依次为: 主机名,主机显示名,IP,主机所属

zabbix利用api批量添加item,并且批量配置添加graph

关于zabbix的API见,zabbixAPI 1item批量添加 我是根据我这边的具体情况来做的,本来想在模板里面添加item,但是看了看API不支持,只是支持在host里面添加,所以我先在一个host里面添加,然后在将item全部移动到模板里. 具体步骤就不说了,直接上代码: 为了快速完成,代码写的有点乱,也没怎么处理异常,算是第一版吧,有时间在优化  1 #!/usr/bin/env python 2 #-*- coding: utf-8 -*- 3 4 import json 5 imp

Zabbix-server自动发现,批量添加主机,并链接模板

zabbix可以手动添加agent客户端,当主机数量比较多时,这时手工重复工作会大大增加.zabbix的自动发现功能可以帮我们解决这个问题. 准备条件: 1. 被监控主机都装上zabbix-agent, [[email protected] ~]# netstat -tunlp|grep 10050 tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 4697/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 4697/zabbix

zabbix学习(三)添加主机和Templates模版

进入ZABBIX监控的页面 添加主机: 点击配置-主机-创建主机 填写主机名称 填写可见的名称(就是在zabbix监控中显示的名称) 给主机添加到一个组里面(可用现有组,也可以在下面添加新的主机组) 填写IP地址(地址为被监控主机IP) 填写端口号(用10050默认即可) 下面没画的各个选项不用修改 保存 给主机添加模版: 这里我们使用zabbix默认自带的模版进行简单添加 点击模版-添加 选中需要的模版-选择 保存 到这里一个简单的添加监控主机和模版的工作已经完成了. zabbix学习(三)添

cacti批量添加研究

利用cacti提供的api接口可以进行添加查询监控 这些api脚本放在cacti的cli目录下面: /web/cacti02/cli 编写脚本循环调用下面这些api脚本,就可以达到批量添加的效果,省去大量的人力和时间 add_data_query.php add_device.php add_graphs.php add_graph_template.php add_perms.php add_tree.php 下面我们来实践添加一次cacti监控的过程: 1.添加设备 /usr/local/p