cacti批量添加linux虚拟机监控

背景:

测试环境前段时间应用服务器的IP段更换后,cacti中一直用的旧IP都没人管过,同事反馈能不能批量把各网新IP段的机器添加上去。批量就涉及脚本作业,但对于catci之前没接触过的,只能现学现解决问题了。

自动化的基础是先手工确认一套可行的流程,所以我这次其实走了弯路。

网上一搜一大把关于批量添加机器的文章,但。。真的是一言难尽呐,唯一帮我的就是:哦,原来php文件可以直接执行的哟,跟其它语言写的脚本命令一样。

首先,我为了图方便,在cacti这台服务器的环境变量中增加了php指令,不用每次都要带全路径敲出来。
 

[root@test740_5 cli]# vim ~/.bashrc
export PATH=/data/src/bak/bin/:$PAT
[root@test740_5 cli]# source ~/.bashrc 

其实,cacti监控clent机器,完全是靠snmp服务来通信的,所以首先需要查看添加的机器是否开启了snmp服务:

[root@test740_5 cli]# snmpwalk -v 2c -c public 192.168.xx.xx

 如果结果出来这一堆数据,就证明要监控的客户机上的snmp服务已开启

第1步:添加device

进入cacti管理平台,用amdin管理员帐户 登录(你的密码别问我),点击console下的Devices,会显示所有的已创建的配置列表

点击右上角的“Add”,增加一个新的device

 其实,这里的【Host Template】也是可以查到的,主机模板ID,我们选择的是[3]

用命令:php add_device.php --list-host-templates

[root@test740_5 cli]# php add_device.php --list-host-templates
Valid Host Templates: (id, name)
0	None
1	Generic SNMP-enabled Host
3	ucd/net SNMP Host
4	Karlnet Wireless Bridge
5	Cisco Router
6	Netware 4/5 Server
7	Windows 2000/XP Host
8	Local Linux Machine

第2步,创建图形模板Create Graphs for this Host

我们添加的就3项,

最后一步,添加Graph Trees

 我添加的是虚拟机,到你想要添加的节点下点Add

我选择的是节点下的host,并不是header.选择相应信息

 添加成功:退出重新登陆,查看节点tree下是否有刚添加的机器,右侧监控图表预计需要5-10分钟才会有数据出来

其实集合成命令也就是3步而已:

php add_device.php  --description=$host_name --ip=$ip --template=3  --version=2  --community=public

php add_graphs.php --host-id="$host_id" --graph-type=cg --graph-template-id=$template-id
php add_graphs.php --host-id="$host_id" --graph-type=cg --graph-template-id=$template-id
php add_graphs.php --host-id="$host_id" --graph-type=cg --graph-template-id=$template-id


 php add_tree.php --host-id="$host_id" --type=node --node-type=host --tree-id=2 --parent-node=192

$host_name:我的ips.txt中定义的名称,也就是tree上挂的名称

$ip:就是添加的device的ip了

--template=3 : 上面有讲到,就是添加机器的时候选择的模板3    ucd/net SNMP Host

--version=2  :SNMP Version的版本号,管理后台,一般会默认,

--community=public  :snmp的共享方式,这里与客户机的snmp配置有关,如果客户机没有此配置,则cacti无法监控到此客户机,而且也会报错的,报错原因和解决方案后面有讲。

$host_id:添加机器成功后,会自动生成host_id,Success - new device-id: (183) 183就是host_id

[root@test740_5 cli]# php add_device.php --description="53.149" --ip="192.168.53.149" --avail=snmp --version=2 --community="public" --template="8"
Adding 53.149 (192.168.53.149) as "Local Linux Machine" using SNMP v2 with community "public"
Success - new device-id: (183)

添加机器如果报错:Timeout: No Response from 192.168.53.xx.xx.需要检查被监控机器192.168.53.xx.xx.上的snmp服务是否开启,我们使用命令检查:snmpwalk -v 2c -c public $ip

有开启服务,但仍然有问题,需要检查配置项:

$template-id:就是需要添加的监控图形模板

用命令查找一共有哪些图形模板: php add_graphs.php --list-graph-templates

[root@test740_5 cli]# php add_graphs.php --list-graph-templates
Known Graph Templates:(id, name)
2	Interface - Traffic (bits/sec)
3	ucd/net - Available Disk Space
4	ucd/net - CPU Usage
5	Karlnet - Wireless Levels
6	Karlnet - Wireless Transmissions
7	Unix - Ping Latency
8	Unix - Processes
9	Unix - Load Average
10	Unix - Logged in Users
12	Linux - Memory Usage
13	ucd/net - Memory Usage
14	Netware - File System Cache
15	Netware - CPU Utilization
16	Netware - File System Activity
17	Netware - Logged In Users
18	Cisco - CPU Usage
19	Netware - Volume Information
20	Netware - Directory Information
21	Unix - Available Disk Space
22	Interface - Errors/Discards
23	Interface - Unicast Packets
24	Interface - Non-Unicast Packets
25	Interface - Traffic (bytes/sec)
26	Host MIB - Available Disk Space
27	Host MIB - CPU Utilization
28	Host MIB - Logged in Users
29	Host MIB - Processes
30	Netware - Open Files
31	Interface - Traffic (bits/sec, 95th Percentile)
32	Interface - Traffic (bits/sec, Total Bandwidth)
33	Interface - Traffic (bytes/sec, Total Bandwidth)
34	SNMP - Generic OID Template
38	SNMP - Get TCP Connection Status
39	load  Average

 --type=node --node-type=host :添加是虚拟机节点,并不是主机

--tree-id=2:树型的id,可以查询,我添加的是虚拟机

--parent-node=192:其实我最开始并不知道带这个参数,总是试不成功,后来我看了帮助,发现它有这个--parent-node参数

又查了tree-id=2下的所有nodes:

成功!

写成批量脚本就是:我的--parent-node=192用的固定的,当然也可以在ips.txt第3列中加上这个--parent-node-id

#!/bin/bash

##cacti批量脚本位置
device=/opt/lampp/htdocs/cacti-0.8.7g/cli/add_device.php
graphs=/opt/lampp/htdocs/cacti-0.8.7g/cli/add_graphs.php
tree=/opt/lampp/htdocs/cacti-0.8.7g/cli/add_tree.php

##需要添加的host ip在ip.txt中
ips=/opt/lampp/htdocs/cacti-0.8.7g/cli/ips.txt

##开始循环遍历
cat $ips |while read host_ip;
do
    echo $host_ip
    host_name=$(echo $host_ip |awk '{print $1}')
    echo "host_name==="$host_name
    host_ip=$(echo $host_ip |awk '{print $2}')
    echo "host_ip==="$host_ip
    parent_node=$(echo $host_ip |awk '{print $3}')
    echo "parent_node============="$parent_node
##这个是添加device 其中--tempate是应用的主机模板,可以通过add_device.php --list-host-templates来查看,后面的是snmp的
    php $device  --description=$host_name --ip=$host_ip --template=3  --version=2  --community=public

##添加host后获取Host的ip
    host_id=`php $graphs --list-hosts | grep $host_ip | awk -F " " '{print $1}'`

##开始绘图,可以通过add_graphs.php --list-templates来查看有哪些图形模板,可以从手动添加监控绘图里面查看绘图的模板,然后来湖区其模板id
    php $graphs --host-id="$host_id" --graph-type=cg --graph-template-id=4
    php $graphs --host-id="$host_id" --graph-type=cg --graph-template-id=39
    php $graphs --host-id="$host_id" --graph-type=cg --graph-template-id=13


##绘制流量图形,后面是接口,需要注意template id是否正确
    #检查snmp服务是否启动:snmpwalk -v 2c -c public $host_ip 

##加入到tree中,可以用过add_tree.php --list-tree查看已有tree
    php $tree --host-id="$host_id" --type=node --node-type=host --tree-id=2 --parent-node=192
done

讲真,因为之前完全不懂这个,中间也遇到很多细节问题,问题大多与具体环境有关,我花了5小时搞定了所有原理性的东西,再加调试成功!

猜你喜欢

转载自blog.csdn.net/sincool1003/article/details/81537113