mrtg 的配置和使用(从网上搜集的资料,自己整理过的)
预备条件:
mrtg在安装前需要有以下包:gcc,Perl,gd,libpng,zlib
可以使用rpm –qa|grep ** 来查看服务器中是否有这些文件
安装步骤:
1. 安装mrtg
./configure –prefix-/usr/local/mrtg (安装到自定义的目录上,本例子是安装到/usr/local/mrtg的目录下)
make ---编译
make install ---安装
2. 配置snmp的conf 文件
vi /etc/snmp/snmp.conf
将
#view systemview included mib2
改为
view all included .1
将
access notConfigGroup “” any noauth exact systemview none none
改为
access notConfigGroup “” any noauth exact all none none ----以只读方式查看
保存,重启snmpd服务
其实配制一个snmpd.conf文件不算太难,
(1)首选是定义一个共同体名(community),这里是public,及可以访问这个public的用户名(sec name),这里是notConfigUser。Public相当于用户notConfigUser的密码:)
# sec.name source community
com2sec notConfigUser default public
(2)定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notConfigUsr这个用户加到这个组中。
groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
(3)定义一个可操作的范围(view)名, 这里是all,范围是 .1
# name incl/excl subtree mask(optional)
view all included .1
(4)定义notConfigUser这个组在all这个view范围内可做的操作,这时定义了notConfigUser组的成员可对.1这个范围做只读操作。
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact all none none
3. 建立mrtg的工作目录。将生成的web页放到该目录下。最好直接建立在apache默认的目录下。也可以单独建立,如:mkdir /var/www/html/mrtg,但需要在apache配置文件中设定指向路径。如:
<VirtualHost 10.217.10.89:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
这样,就可以在ie栏上直接输入ip/mrtg/,就可以访问了
4. 生成配置文件
/usr/local/mrtg/bin/cfgmaker –output /etc/mrtg.cfg public@10.217.10.89(监控的服务器ip)
5. 修改配置文件
vi /ect/mrtg.cfg
将
#for UNIX
#WorkDir: /home/http/mrtg
改为
#for UNIX
WorkDir: /var/www/html/mrtg ----刚才建立的工作目录
加入
Language:gb2312 --指定页面显示语言为中文
保存并关闭
6. 执行mrtg
/usr/local/mrtg/bin/mrtg /etc/mrtg.cfg
此时会报告错误,不用理会,连续执行3次后错误应该会消失,如还继续保错,则应为配置文件出错
7. 在ie窗口中打开对应的url 即可看到了
8. 可以使用crontab –e 编写自动更新时间
*/5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg
每5分钟运行一次
这样就配置好了,默认的mrtg只监控网络流量。不过,我们可以通过编写脚本来实现对cpu、mem 等东西的监控。下面介绍一下如何添加脚本。以mem为例
配置步骤:
1. 编写脚本(perl shell 都可以)
vi mfree.sh
#!/bin/sh
/usr/bin/free -m | grep Mem |awk '{print $4}'
/usr/bin/free -m | grep Mem |awk '{print $2}'
2. 修改snmp配置文件
添加:
exec .1.3.6.1.4.1.2021.53 mfree /bin/sh /root/mfree.sh
其中.1.3.6.1.4.1.2021.53中的53是自定义的,只要不与其他的重复即可
mfree 是文件名字,后面是他的存放的路径
3. 修改mrtg.cfg的配置文件
添加:
Target[wy1_mem]:`snmpwalk -v 1 192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\" '{print $2}'` --------------192.168.13.103,为要监控的服务器ip
Xsize[wy1_mem]: 300
Ysize[wy1_mem]: 100
Ytics[wy1_mem]: 7
MaxBytes[wy1_mem]: 1006
Title[wy1_mem]:Memory State of WY1 IP 192.168.13.103 Server
PageTop[wy1_mem]:<H1>Memory State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend[wy1_mem]: MB
kmg[wy1_mem]: MB
kilo[wy1_mem]:1024
YLegend[wy1_mem]: Memory Usage
Legend1[wy1_mem]: 可用内存
Legend2[wy1_mem]: 总内存量
Legend3[wy1_mem]: 可用内存
Legend4[wy1_mem]: 总内存量
LegendI[wy1_mem]: 可用内存
LegendO[wy1_mem]: 总内存量
Options[wy1_mem]: growright,gauge,nopercent
各个标签的含义:
Target指的是mrtg从那里取画曲线的值,此处可以从snmp和脚本取值,如从脚本取值需注意,需要前后用`来指定脚本路径
[]指这个配置段的名称,这里为wy1_mem,届时会在mrtg的workdir里建立同名的目录
Maxbytes指mrtg取值后能表现的最大值
YLegend指再图标中纵向的名称
ShortLegend指在图标中数值后面所跟的单位
LegendI 传递过去的第一个值,即snmpwalk -v 1 192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\" '{print $2}' 返回的第一个值
LegendO 传递过去的第二个值
Title 网页title
Pagetop 网页显示名称
注:有的不支持中文,换成英文即可。
4. 重新启动snmpd和mrtg即可
贴上几个有用的脚本:
CPU数据的抓取脚本
[root@wy1 root]# cat cpustat.sh
#!/bin/sh
idle=`sar -u 1 3 | grep Average | awk '{print $6}'`
used=`echo "101 - $idle" | bc -l -s`
echo $used
echo $idle
DiskIO数据的抓取脚本
[root@wy1 root]# cat iostat.sh (显示硬盘IO,k/s)
#!/bin/sh
used1=`sar -d 1 3 | tail -1 | awk '{print $4}'`
used2=`echo "$used1 / 2" | bc -l`
echo $used2
echo $used2