Cacti的安装与插件开发(三)
cacti模板开发与应用实战
我觉得掌握一个软件,最起码要能随心所欲的应用它才算了解了这个应用,今天总结用cacti监控路由的CPU和MEM使用率。
实战:使用cacti监控H3C Router的CPU和MEM内存使用率
1.首先H3C Router要支持snmp功能,且该功能已经开启,另外已经配置好community,即前提是可以在监控机上通过snmp协议获取路由器的信息。
2.根据H3C公布的MIB库,得出CPU和MEM的内存mib节点分别是.1.3.6.1.4.1.25506.2.6.1.1.1.1.6.3和.1.3.6.1.4.1.25506.2.6.1.1.1.1.8.3,这样就简单了,我们只需要写一个脚本来获取路由器的CPU和MEM,然后将这两个值作为数据源,通过cacti不间断的按照我们规定的时间策略来取得rrd数据库时间槽上的数据值,通过图像展现出来即可。
3.脚本开发
# vi getcpu_mem.sh
#!/bin/bash
#
# $1 is community
# $2 is Hostname or IP
CPU=`snmpget -v 2c -c $1 $2 .1.3.6.1.4.1.25506.2.6.1.1.1.1.6.3|cut -d ":" -f4 |grep -o "[1-9]\+"`
MEM=`snmpget -v 2c -c $1 $2 .1.3.6.1.4.1.25506.2.6.1.1.1.1.8.3|cut -d ":" -f4 |grep -o "[1-9]\+"`
echo -n "CPU:$CPU MEM:$MEM"
手动执行没问题后将其拷贝到<path_cacti>/scripts下面。
4.添加cacti数据输入方法(Data Input Methods)
给数据输入方法取个名字,最好做到见名识义,Input Type则选择Scripts/Command,Input Fields则输入bash <path_cacti>/scripts/getcpu_mem.sh <snmp_community> <hostname>,即让脚步正常执行。如下图:
5.点击create之后会提示输入Input Fields和Output Fields。其实Input Fields即使脚本的输入变量,Output Fields则是输出变量(也可以认为是数据源)。其中
Field [Input]:就是我们在脚本中定义的两个输入变量,也是上步执行脚本中定义的。
Friendly Name:这个是取个别名,容易识别即可。
Regular Expression Match和Allow Empty Input:不用填,因为勾选之后就表示我们可以不使用参数,这样我们的脚本是没办法完成数据探测的。
Special Type Code:这个就比较好用了,描述了cacti中定义过的值,比如此处我们的输入参数是snmp_community,我可以在此处输入真正的参数值,也可以使用cacti定义过的特殊变量,即snmp_community。填写完成后点击create即可,如下图:
按照同样的方式添加另外一个输入参数——hostname。
注意:此处的hostname一定不要有“<>”,使用hostname会直接引用该数据输入方法所关联的主机IP,当然也可以在此处直接输入路由器的IP地址。
现在可以添加Out Fields了,这其实就是我们在脚本中定义的输出字段,注意一定要保证字符以及顺序完全一致,否则是取不到数据或者取错数据的。我们在脚本中是先定义输出CPU,然后输出MEM的。下图是添加MEM的图片,CPU是要先添加好的。
添加完成后,记得保存,应该是这样的。
6.添加数据模板(Data Templates)
这一页就非常重要了,几乎每个选项都是跟我们操作息息相关的。如下图:
Data Templates [edit: H3C Router CPU and MEM Usage]
Name:也是见名识义的原则。
Data Source
数据源名称:|host_description|-H3C CPU&MEM Usage,其中|host_description|是cacti定义的宏,可以去除主机信息
Data Input Method:选择我们刚才创建的数据输入方法。
Step:步长,一般就是选择5分钟,即300秒。
Data Source Item [CPU]
Internal Data Source Name:数据源名称,一个字符都不能差,顺序与脚本输出数据源此项一致。CPU
Minimum Value ('U' for No Minimum):能接受的最小值,设为0即可。、
Maximum Value ('U' for No Maximum):能接受的最大值,设为100,如果遇到不知道的情况,则设为U。
Data Source Type:数据源类型,选择GAUGE,即大小浮动,选择存储原始数据。
Heartbeat:心跳包,即在这个时间间隔内获取到的数据都认为是有效的,超过之后则认为是UNKNOW,一般是步长的两倍。
Output Field:选择我们上一步定义的输出参数CPU-H3C CPU Usage。
添加完成后点击该段右上角的NEW,来添加新的数据源。按照此种方法,添加另外一个数据源MEM,完成之后记得保存。
Custom Data [data input: H3C Router CPU and MEM Usage]下的
“H3C Router IP和SNMP_Community”如果不填,则直接从关联的主机上继承。
7.添加图片模板
Graph Template下的
Title (--title):是指图像的标题信息
Vertical Label (--vertical-label):指图像的y轴信息
一般只需要修改这两点,修改好之后,点击create,就可以添加数据展示曲线了。
点击Graph Template Items [edit: H3C Router CPU&MEM Usage] 右侧的Add,来添加图像曲线信息。如下:
注意:Graph Item Inputs下面的Data Source [CPU]和Data Source [MEM]是自动生成的。
8.在图像管理里面将图像模板和主机关联起来
选择主机+模板,点击Add添加,
选择刚刚关联好的模板,将其放在默认树上即可。
9.现在点开graph就可以看到图像了,第一次出图一般都要10分钟左右,所以要等一会。如果还是没有出图,可以手动使用rrdtool命令来探测一下,如果还是不行,就要一点点找原因了。