linux监控cacti配置教程(5)

这一节讲解cacti自定义脚本监控. 
目的:通过隧道监控奥联的网卡流量。
问题:奥联SNMP协议不支持隧道。
思路:
1、既然隧道不支持SNMP,那就用登录的方式,然后用命令获取数据,最后再输出.
2、自定义输入源,数据模板,图像模板,添加主机,添加到图像.

开始:
1、创建自动登录ssh 或自动telnet登录,用命令获取相关数据,输出有用的数据

vi /usr/share/cacti/scripts/branch-apn.sh 

#!/bin/bash 

ip="$1" 

username="$2" 

password="$3"
#这里定义脚本后面跟的三个参数
  

command1="cat /proc/net/dev"
command2="ifconfig | grep Link"
#定义登录后执行的命令

tmpfile=/tmp/$ip.tmp
#定义临时文件

rm -fr $tmpfile &>/dev/null

#选删除临时文件

(sleep 2;echo "$username";sleep 2 ;echo "$password" ;sleep 2 ;echo "$command2";sleep 2;echo "$command1" ;sleep 2;echo "$command1"; sleep 2; echo "exit") | telnet $ip &>> $tmpfile

#执行登录命令,将将结果保存到临时文件
ethif=`grep "Link " $tmpfile | awk '{print $1}' | grep eth0`
#定义变量,用来判断是eth0还是ixp0,因为这个项目要监控两款APN,它们的网卡标识不同。这里进行一个判断。

if [ $ethif ];then

eth=eth0

else

eth=ixp0

fi
#得出eth的值。

RXpre=`grep $eth $tmpfile | grep -v grep |sed -n 2p| awk '{print $1}'| awk -F: '{print $2}'`

TXpre=`grep $eth $tmpfile | grep -v grep |sed -n 2p| awk '{print $9}'`
#获取一秒前的进出字节数

RXnext=`grep $eth $tmpfile | grep -v grep |sed -n 3p| awk '{print $1}'| awk -F: '{print $2}'`

TXnext=`grep $eth $tmpfile | grep -v grep |sed -n 3p| awk '{print $9}'`

#获取一秒后的理出字节数
RX=$((${RXnext}-${RXpre}))

TX=$((${TXnext}-${TXpre}))

#两个数相减得到流量值
printf INT:$RX

printf " "OUT:$TX
#输出相要的数据

rm -fr $tmpfile
#删除临时文件.

脚本的原理是获取当前网卡的总字节,一秒后再次获取一次网卡的总字节,两次相减得到这一秒钟的流量。 

2、自定义输入源(见图)

点吉create出现下面的画面.

下一步就是创建数据模板(见图):


点击create后出现下图:


到这里已经完成一半了,下一步是定义图像模板(见图):

定义好后的内容为下图:

到这里已经完成的图像模板的定义.下面就是添加主机,添加监控项,添加到图像了.

添加主机:Console -> Devices --Add
添加监控项:Console -> Devices--Create Graphs for this Host--选择创建的图像模板
添加图像:Console -> Graph Trees --选择或新建组--Add--host--选择主机--create

喝杯咖啡回来,正常应该出图出数据了.

如有问题可按以下方式解决:
Console -> Utilities -> View Cacti Log File 看cacti日志;
是否生成rrd文件;
rrdtool fetch rrd文件 AVERAGE是否有数据;
手动运行脚本是否有数据输出;


下一节讲解批量导入主机.

你可能感兴趣的:(shell,监控,cacti,的,自定义脚本监控)