目录
1、引语
2、使用自定义数据收集方法完成设备监控
2.1、创建数据收集脚本
2.2、定义Data Input Methods
2.3、定义Data Templates
2.4、定义Data Sources
2.5、定义Graph Templates
2.6、设置Graph Management
3、总结
1、引语
在上一博文中大致介绍了cacti的数据收集方法和模板的使用,还以一个例子介绍了怎样导入一个主机模板,并让此模板应用到一个指定的Devices上。此次博文在上一次博文的基础上介绍以自定义脚本的方法收集数据、自定义数据模板、自定义数据源、自定义图形模板,最后把这些应用到一个Devices上,实现绘图。
当然,如果在cacti的论坛上能够找到现成的模板,那当然好,直接导入到cacti就可以使用,但当你的需求没有相应现成模板时,你就需要自己开发脚本来满足的业务需求,用shell脚本来获取主机的监控数据是比较常见的方法,而在shell中一般又是利用snmp的相应命令来获取远程主机的状态数据的。下边就以一个实际例子来说明这一过程,需求是监控一远程主机上tcp连接中处于"established"状态的数量,实验环境还是基于上一博客的环境(http://zhaochj.blog.51cto.com/368705/1669081)
这里还是简单的说一下,nod1主机部署了cacti监控系统,nod2是被监控主机,安装了snmp服务,允许nod1利用snmp的相关命令来获取到状态数据。
首先来验证一下在nod1上是否能够获取到nod2上的状态数据,如下:
[root@nod1 cacti]# snmpnetstat -v 2c -c public -Can -Cp tcp 192.168.0.202 Active Internet (tcp) Connections (including servers) Proto Local Address Remote Address (state) tcp *.22 *.* LISTEN tcp *.80 *.* LISTEN tcp *.8139 *.* LISTEN tcp 127.0.0.1.25 *.* LISTEN tcp 127.0.0.1.199 *.* LISTEN tcp 127.0.0.1.6010 *.* LISTEN tcp 127.0.0.1.6011 *.* LISTEN tcp 127.0.0.1.6012 *.* LISTEN tcp 192.168.0.202.22 192.168.0.102.51522 ESTABLISHED tcp 192.168.0.202.22 192.168.0.102.51545 ESTABLISHED tcp 192.168.0.202.22 192.168.0.102.51546 ESTABLISHED
上边的命令执行成功了。接下来我们就可以把snmpnetstat这个命令封装在一个shell脚本上去获取到nod2的数据,在写脚本前有一点需要说明,cacti利用脚本获取的数据的输出是有一定格式的,格式必须是“<fieldname_1>:<value_1> <fieldname_2>:<value_2> ... <fieldname_n>:<value_n>”,如果脚本收集数据的输出格式不是这样的,那cacti无法识别。这一部份的内部可以参考官方文档“http://docs.cacti.net/manual:088:3a_advanced_topics.1_data_input_methods#data_input_methods”
2、使用自定义数据收集方法完成设备监控
2.1、创建数据收集脚本
接下来就编写数据收集脚本,脚本内容如下:
[root@nod1 cacti]# vim tcpcon.sh #!/bin/bash # #$1: hostname or ip #$2: snmp community SNMPNETSTAT=/usr/bin/snmpnetstat ESTABLISHED=`$SNMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1 | grep -i 'established' | wc -l` echo "established:$ESTABLISHED" [root@nod1 cacti]# bash tcpcon.sh 192.168.0.202 public #测试一下脚本是否能正常运行 established:3
把脚本复制到cacti专门存放脚本的路径:
[root@nod1 cacti]# cp tcpcon.sh /web/vhosts/cacti/scripts/ [root@nod1 cacti]# ls /web/vhosts/cacti/scripts/ #此目录就是脚本的存放目录,看看此目录下还有perl脚本,php脚本 3com_cable_modem.pl ping.pl ss_host_cpu.php unix_users.pl diskfree.pl query_host_cpu.php ss_host_disk.php weatherbug.pl diskfree.sh query_host_partitions.php ss_sql.php webhits.pl linux_memory.pl query_unix_partitions.pl tcpcon.sh loadavg_multi.pl sql.php unix_processes.pl loadavg.pl ss_fping.php unix_tcp_connections.pl
2.2、定义Data Input Methods
接下来打开cacti的控制台,点击“Data Input Methods”,再点击右上角的“Add”,如下图:
点击“Add”按键后,为Data Input Methods定义几个属性,如下图:
点击右下角的“Create”按钮,会要求设定此脚本所需要输入和输出的字段,输入字段表示脚本需要接收的参数是怎样定义的,
输出字段表示此脚本获取到数据后输出的数据是什么,即是“fieldname:value”这样的格式的输出数据,如下图:
点击上图中“Input Fields”中的“Add”,为输入字段设置数值,如下图:
点击上图中右下角的“Create”就完成第一个参数的引用配置,点击“Create”后界面返回到如下界面:
再点击“Add”按钮,再去增加“<community>”这个参数的一些定义,如下图:
再点击一下右下角的“Create”,就完成了脚本中两个参数的一些设置,如下图:
“Input Fields”设置完成后,还得设置脚本的输出的一些设置,点击上图中的“Add”后,如下图设置:
点击右下角的“Create”后,那数据输入方法算是定义完成,最终效果如下图:
当然不要忘记点击右下角的“Save”按钮。
2.3、定义Data Templates
数据输入方法设置好后,接下来需要设置的就是Data Templates,数据模板主要是定义cacti使用rrdtool工具来处理脚本收集数据时所要设置的一些参数,如下图:点击右下角的“Create”后,出现下图:
点击右下角的“Save”即可完成数据模板的创建。
2.4、定义Data Sources
数据源的定义就是把数据模板与Devices关联起来的操作,并且指定脚本把数据收集后再经过数据模板中定义的各种参数对数据做聚合后的数据的保存位置。点击控制台的“Data Sources”,再点击右上角的“Add”后,出现下图:再点击右下角的“Create”后,出现下图:
再点击“Save”保存即可。
2.5、定义Graph Templates
数据源是有了,cacti已经知道该用一个脚本去收集数据,并通过相应的聚合函数处理后放到一个指定的rrd文件中,但还不知道用这些数据怎样绘图,所以接下定义一个图形模板。在控制台点击“Graph Tempaltes”,再点击右上角的“Add”后,如下图:其他的都保持默认即可,但只是最后一项需要设备,如下图:
最后点击“Create”后,图形的框架结构已形成了,可以展开想象,在现在为止,我们就创建了一张高为120,宽为500的图片,但图片中所要绘制图形的具体属性还没有定义,比如所需要绘制的是线条图,还是区域图,线条的走势是代表每300的平均值还是最大值等,这些都还没有定义,所以把图形框架创建好后,还得点击右上角的“Add”去定义,如下图:
再点击“Create”后就把所要绘制哪种图形的相应属性也定义好了,点击"Create"后返回如下页面:
最后点击页面的最正文右下角的“Save”保存即可。最后的工作就是把图形模板运用到Devices上。
2.6、设置Graph Management
Graph Management的设置就是具体把我们定义的图形模板运用到具体的设备上。在控制台点击“Graph Management”,再点击右上角的“Add”后,如下图:点击“Create”后,如下图:
再点击“Save”键保存即可。
现在就可以去看一下nod2这设备上所画的图中是否有我们自己定义的,点击主页面上的“graphs”,找到我们监控的设备就可以查看相应的图片,如下图:
现在只是还没有值而已,等一段时间后,就会在图上产生一条红色线条。如果在图形下边要显示出最大值、当前值等信息,就像类似下边图形一样:
我们只需要回到图形模板,再点击右上角的“Add”,如下图:
再按照下边的设置:
如果要显示最大值,也像上边操作一样增加即可,最后增加好后如下图:
最后不要忘记点击右下角的“Save”,保存我们做的修改,接下来再去查看一相图形,如下图:
3、总结
通过这次自定义数据收集方法来监控tcp连接中处理established状态的数量后,你会对cacti有不一样的认识,而且我还建议你去参考系统自带图形模板,看看别人是怎样定义的,特别是一个图上绘制多种线条时,只要你突破了此关,那cacti会成为你工作中的好伙伴。