前文讲述了,如何通过snmp的方式取获取并创建自己的Cacti图形,但如果某些数据是无法通过snmp取得的,可以通过脚本的方式来获取,所以只有你想不到,没有你做不到的。
比如你那一天对腾讯的在线人数感兴趣,你可以监视这个页面http://im.qq.com/中下图部分:
监控部的同事估计也是通过这个方式来了解腾讯的在线人数曲线的。
继续正题,比如我要监控squid打开一个特定的页面的速度,虽然前文已经讲述了,你可以通过squid自身提供的信息来绘制,但毕竟这是squid提供的,可能没有考虑到网络等因素,所以你需要模拟一个最终用户打开页面的情况,这就要需要自己写一个特殊的脚本:
1.进入到 /cacti/scripts的目录
创建一个文件,如time_get_page.sh
#!/bin/bash
begin_time=`date +%s%N`
curl -s -H ‘Host: bbs.iammecn.com’ $1 >/tmp/tmp
end_time=`date +%s%N`let time1="$end_time"-"$begin_time"
let time1="time1/1000000"begin_time=`date +%s%N`
curl -s -H ‘Host: www.iammecn.com’ $1 >/tmp/tmp
end_time=`date +%s%N`let time2="$end_time"-"$begin_time"
let time2="time2/1000000"printf misstime:$time1
printf " "hittime:$time2
运行这个脚本的结果,后面加上你要监控的机器的IP后,运行结果如下:
misstime:2913 hittime:2492
获得两个值,我是选取了两个不同的页面,一个是需要不缓存的,一个是需要缓存的,所以分别代表了miss和hit的时间。
2. 登陆cacti,然后在Data Input Methods,添加一个新的数据来源
名字随便起了,然后选择”scripts/command” ,路径那里填写:
sh <path_cacti>/scripts/time_get_page.sh <ip>
Input Fields里添加一个IP,“Special Type Code”里填写hostname
Hostname就是指在你的Devices里指定的主机名了,从来获取你的主机名
Output Fields 里再输出两个值
就是上面脚本里输出的两个值,分别是httime,misstime
3. Data Templates ,创建数据模板
“Data Input Method”就选刚才创建的那个数据来源
下面再添加两个TAB
主要是选对”Output Field”这个值的来源
4.然后再创建“Graph Templates”
同样是创建一个新模板,下面的名字你随便起,如下图:
重点来了,接下来是如何创建图形了,如下图:
ADD一个图形,如下图:
Data Source 选择你刚才创建的数据模板中一个,如我选择了MissTime
颜色随便选择了,只要看着习惯就行。
Graph Item Type 就是你绘制的图形类型,比如是一根线还是面积图?我这里选择的是LINE1,绘制出来的图形如下图所示。
Consolidation Function一般来说选择Aveage,这样会让你的图平滑
“CDEF Function”就除以1024, 我这里是跟据我自己的情况来弄的,因为我上面那个脚本是取了纳秒级的数据,如果不加以处理就会很大,不处理,以秒级的话,区间也太小了,对于某些细微的网络状态可能觉察不出来。
Text Format 就是你的图形说明了,一般来说横坐标是时间,纵坐标就是你的数值了,你可以在纵坐标上放尽可能多的数据,只要不影响你的眼睛。
接下来再打印一些文字,主要就是来说明这个图形的,显示最大,最小,平均值等
如下图:
下图就是取当前值:
类型选择“GPRINT”,并选择“LAST”,最后选择Insert Hard Return,这样是为了换行。
5. 到这里基本上已经完成了图形模板制作的全过程了,你可以在Devices里把所要加的图形附加到设备上,然后和正常的制作一般图片一样了。
以下是我一天时间获取的图形:
你可以清楚地了解到主机的运行和网络状况了。
