参考这篇文章 http://www.mamicode.com/info-detail-187799.html
还有马哥的linux视频。
cacti使用思路:
cacti自定义监控脚本进行监控的具体流程如下:
自定义数据收集方法,在Collection Methods下有2项,Data Queries(xml方法)和Data Input Methods (scripts, command方法)
数据收集了如何保存呢?数据模板Data Templates。数据模板定义了:怎么通过数据收集方法获取数据,获取的数据如何保存,以及保存在什么地方。(也就是调用rrdtool create , rrdtool update)
把数据模板应用到特定的device上,就会创建数据源。
有了数据源,那么就可以绘图Graph了。图形模板或者自定义,应用到相应的数据源上。(rrdtool graph)
实例说明:创建一个监控tcp 连接ESTABLISHED,SYN,TIMEWAIT 数目的绘图
一、创建采集数据脚本
poller.php 是cacti的轮询器,用来收集数据,所以创建crond任务让他每5分钟执行一次。cacti/scripts 目录下放的是cacti自定义Data Input Methods的脚本文件。
我们在cacti/scripts 下创建一个 tcp_conns.sh 的脚本,记得chmod +x ,内容如下:
#!/bin/bash # # $1:hostname or IP # $2:snmp community SNMPNETSTAT=/usr/bin/snmpnetstat TEMPFILE=`mktemp /tmp/$1_tcp_conns.XXXXXX` $SNMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1 > $TEMPFILE ESTABLISHED=`grep -i "established" $TEMPFILE | wc -l` TIMEWAIT=`grep -i "TIMEWAIT" $TEMPFILE | wc -l` SYNRECEIVED=`grep -i "SYNRECEIVED" $TEMPFILE | wc -l` echo -n "ESTABLISHED_NUM:$ESTABLISHED TIMEWAIT:$TIMEWAIT SYN_received:$SYNRECEIVED"
二、在cacti上添加数据方法
1、创建自定义方法。
Collection Methods ---> Data Input Methods ---> 右上角add,填入数据后点击create。
Name项:填入自己定义的名字
Input Type:选择用什么方式获取数据,因为我们是script方式,所以选择 Script/command
Input String:脚本怎样运行,后面的2个参数,<hostname> <snmp-community> 是需要传递给脚本的变量,接着下面可以定义传递的数据。
2、定义需要传递给自定义脚本的变量以及自定义方法所产生的数据
a、添加传递给自定义脚本的变量。
点击Input Fields 右边的Add开始添加,点击create完成,因为我们有2个需要传递的变量hostname和snmp community ,所以完成一个后还需要再add一个,第二个过程略。
Field[Input] 第一项:就是刚刚自定义的2个需要获取数据的变量的第一个
Friendly Name:便于识别的名字,任意填写。
Special Type Code:具体说明如下:
我们看到,cacti已经定义了许多Speial Type Code。它们类似于宏,我们能够继承它并能够取得相应device相关的信息。我们知道图形和数据收集方法都必须关联到特定的device上,在定义device时,就会指定其hostname等相关信息。如果我们没有提供输入的参数,就让它自动去继承device的那些宏。如果使用hostname,那么此脚本应用到哪个设备上,就会获得那个设备的hostname。如果snmp_community,那么就会自动引用我们在添加设备时,指定的那个community。
比如,我在定义device时,填入的信息如下,那么,此时的Special Type Code: hostname==127.0.0.1, snmp_community==public
b、定义Output Fields,脚本输出的数据。
我们的脚本tcp_conns.sh 正常运行会输出3个数据,注意格式,中间只有一个空格:
ESTABLISHED_NUM:2 TIMEWAIT:0 SYN_received:0
此时需要一个一个根据输出的名字来定义,如下图:
Field[Output]内填入脚本产生的数据名
c、定义好传递的数据与产生的数据如下:
二、定义数据模板,Data Templates
1、创建数据模版,Data Templates ——>右上角 Add开始创建模版,模版完成点Save
创建好了如下图,选择Output Field时,记得Internal Data Source Name对应上:
三、把数据模板应用到指定device,应用后会自动创建rrd文件。
PS:创建device的过程,略。
1、 Data Sources ———>> Add ———— >> Create
selected Data Template :选择刚刚定义的数据模板
host:选择要应用到那台主机。
2、 可以点开创建好的DS进行修改,如下图:
四、添加Graph Templates 图形模版
1、创建图形模版,Graph Templates ——>> add ————>> Name ,title 自己定义,点击create后
2、创建绘图的Item
a、点击Graph Template Items 右侧的Add,添加条目:
可以看到此时的Data Source 里面会多出我们刚刚定义的数据源,选择就可以。 选择好后如下图说明:
五、把图形模版关联到相关device
1、点击Graph Management 右边的Add,选择刚刚定义的Graph Template到Host 上。
2、选择Graph Templates Data里的DS,刚刚都定义好了,如下图。
最后记得添加到Graph Trees上,终于完成了!