已经讲过,MRTG实际上是一个画图工具。它可以接受一些数值参数,并根据这些值构建一个二维图形以供监控使用。在 mrtg 这个程序中,其实他总共需要要求四个数据(前两个用来作图,后两个提供相关信息,基本上,绘图只会用到前两个数据),因此,你可以随时制作 MRTG 的图表,只要你能提供两个数字(x轴和y轴)给 mrtg 即可制图!下面,我就是要用脚本收集信息,然后提供数据给MRTG使用。
一、前提
正如上面提到的,只要提供数据即可。所以,snmp服务并不是必须的。但snmp协议是硬件信息发送的标准协议,只要打开相应的支持,其也可以提供CPU等资源信息的。而我下面描述的内容,仅是为了说明MRTG的用法,并不一定是最好的方式。
这里假设你已经按照使用MRTG画图进行监控,实现简单的网络流量监控,才开始下面的配置。
二、编写脚本
以监控CPU负载为例,首先准备好对应的目录:
# mkdir /opt/mrtg
然后编写脚本,内容为:
引用
#!/bin/bash
cpuusr=`/usr/bin/sar -u 1 3 |grep Average |awk '{print $3}'`
cpusys=`/usr/bin/sar -u 1 3 |grep Average |awk '{print $5}'`
UPtime=`/usr/bin/uptime | awk '{print $3 " " $4 " " $5}'`
echo $cpuusr
echo $cpusys
echo $UPtime
hostname
cpuusr=`/usr/bin/sar -u 1 3 |grep Average |awk '{print $3}'`
cpusys=`/usr/bin/sar -u 1 3 |grep Average |awk '{print $5}'`
UPtime=`/usr/bin/uptime | awk '{print $3 " " $4 " " $5}'`
echo $cpuusr
echo $cpusys
echo $UPtime
hostname
给与执行权限,并运行:
# chmod +x cpu.sh
# ./cpu.sh
# ./cpu.sh
结果是:
引用
0.33
2.32
2 days, 10:23,
mail.zoosoft.net
2.32
2 days, 10:23,
mail.zoosoft.net
可以看到,我们可以从脚本中得到4个值,其中前面两个是MRTG的x轴和y轴,后面两个是参考信息,分别是运行时间和主机名。
三、修改MRTG配置
修改您的MRTG配置文件/etc/mrtg/mailmrtg.cfg,在最后增加:
引用
Target[cpu]: `/opt/mrtg/cpu.sh`
MaxBytes[cpu]: 100
Title[cpu]: CPU 负载图
#Options[cpu]: gauge,nopercent
Options[cpu]: growright,gauge,nopercent
YLegend[cpu]: CPU loading (%)
ShortLegend[cpu]:%
LegendO[cpu]: & CPU 使用者负载
LegendI[cpu]: & CPU 纯系统负载
PageTop[cpu]: <H1>CPU — 主机负载率</H1>
<TABLE>
<TR><TD>System:</TD> <TD>RedFlag DC Server 5.0 SP2 in Linux Kernel 2.6.9-42.7</TD></TR>
</TABLE>
MaxBytes[cpu]: 100
Title[cpu]: CPU 负载图
#Options[cpu]: gauge,nopercent
Options[cpu]: growright,gauge,nopercent
YLegend[cpu]: CPU loading (%)
ShortLegend[cpu]:%
LegendO[cpu]: & CPU 使用者负载
LegendI[cpu]: & CPU 纯系统负载
PageTop[cpu]: <H1>CPU — 主机负载率</H1>
<TABLE>
<TR><TD>System:</TD> <TD>RedFlag DC Server 5.0 SP2 in Linux Kernel 2.6.9-42.7</TD></TR>
</TABLE>
配置文件含义如下:
引用
[ID]:其中定义的是装置名称,用于分组、区别,同一个装置需要使用相同的ID标识,生成的图片以此区分
Target:有两种定义方法
从snmp获取信息:2: public@192.168.1.2 <–2表示从snmp获得的设备号标识,后面是community认证信息和服务器地址
从脚本获取信息:指定要执行的脚本路径,使用“`”号分割
Xsize:生成图表的横向宽度(最大600)
Ysize:生成图表的纵向高度(最大200)
Title:标题
kMG: Change the default multiplier prefixes
Ytics:纵向划分为几个块(格子)
MaxBytes:图表纵向数值的最大上限
PageTop:页面上面的提示
kilo:一般是写1024,如果需要的话,是1000在计算机里的单位
LegendI:从SHELL返回的数据中的第一个
LegendO:从SHELL返回的数据中的第二个
Options: 一些可用参数
growright:将数据随时间变化的顺序以右而左绘图;
bits:数据单位为 bits;
nopercent:在图下方的说明文字中,不显示百分比;
gauge:图表的上限固定。
常见:
Options[192.168.228.153_2]: growright, bits (用在网络流量中)
Options[192.168.228.153_3]: growright, nopercent, gauge (用在 CPU 负载中)
Target:有两种定义方法
从snmp获取信息:2: public@192.168.1.2 <–2表示从snmp获得的设备号标识,后面是community认证信息和服务器地址
从脚本获取信息:指定要执行的脚本路径,使用“`”号分割
Xsize:生成图表的横向宽度(最大600)
Ysize:生成图表的纵向高度(最大200)
Title:标题
kMG: Change the default multiplier prefixes
Ytics:纵向划分为几个块(格子)
MaxBytes:图表纵向数值的最大上限
PageTop:页面上面的提示
kilo:一般是写1024,如果需要的话,是1000在计算机里的单位
LegendI:从SHELL返回的数据中的第一个
LegendO:从SHELL返回的数据中的第二个
Options: 一些可用参数
growright:将数据随时间变化的顺序以右而左绘图;
bits:数据单位为 bits;
nopercent:在图下方的说明文字中,不显示百分比;
gauge:图表的上限固定。
常见:
Options[192.168.228.153_2]: growright, bits (用在网络流量中)
Options[192.168.228.153_3]: growright, nopercent, gauge (用在 CPU 负载中)
详细可见man mrtg-reference。
四、应用配置
重新生成新的index.html文件:
# indexmaker –output=/var/www/html/mrtg/index.html –title=PrintServer /etc/mrtg/mailmrtg.cfg
生成数据:
# /usr/bin/mrtg /etc/mrtg/mailmrtg.cfg –lock-file /var/lock/mrtg/mrtg_l –confcache-file /var/lib/mrtg/mrtg.ok