分享

MRTG 配置完整手册 - semar - 网易博客

 jijo 2008-07-03

2007年11月16日 星期五 11:02

 

最近有不少朋友在问MRTG的问题,我前一段时间也搞了一些,今天花了一天的时间一边重新做一遍,一边写文档.现在文档写完了,把它拿出来共享给大家. 由于水平有限,里面如果有什么错误的话,就帮忙指出.

请相信如果照着这个来做,你的MRTG很快就会搞定.^_^.

主要功能:

用一个网页来监视系统的CPU,NIC,MEM,SWAP,DISK usage, DISK I/O.情况.

里面的script有部分是自已写的,也有部分是下载的.像磁盘空间那个script是下载的,但是觉得功能不是很好用,由于有现成的也就没有再写,如果哪位有更好的script望请共享.

1. 安装.

(1)需要的RPM

RHEL 3.0/4.0的安装CD带有MRTG的RPM安装包. 为了使用MRTG的一些脚本,需要安装其他的一些安装包.

Sysstat.rpm 系统状况监视安装包.(cpu.sh)

Procps.rpm 内存,Swap 使用情况工具等(cpu.sh,mem.sh,swap.sh)

Coreutils.rpm (df.pl,disk.sh)

gd-1.8.4-4

gd-devel-1.8.4-4

perl-5.6.0-17

perl-CGI

mod_perl-1.24_01-3

libpng-1.0.12-2

libpng-devel-1.0.12-2

gcc-2.96-98

gcc-g77-2.96-98

gcc-c++-2.96-98

zlib-1.1.3-24

zlib-devel-1.1.3-24

httpd(apache)

net-snmp

mrtg

检查装有没有上面rpm包.

(2)安装MRTG

   Rpm –ivh mrtg -2.9.29-4.ent.i386.rpm

2. 配置SNMP 让他可以配合MRTG工作

编辑/etc/snmp/snmpd.conf

把下面的#号去掉

#view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc #在89行

把下面的语句#在62行

access notConfigGroup "" any noauth exact systemview none none  

改为:

access notConfigGroup "" any noauth exact mib2 none none

改完重启一下snmp

Service snmpd restat

3. 配置MRTG

(1) mkdir /var/www/html/mrtg

(2) mkdir /opt/mrtg

(3) 从下面的贴子复制以下几个script 到/opt/mrtg

Cpu.sh , mem.sh , swap.sh, diskperf.sh, disk.pl

     (4) cp /var/www/mrtg/* /var/www/html/mrtg

(5) /usr/bin/cfgmaker –output=/var/www/html/mrtg/mrtg.cfg public@10.102.17.100 用来配置一个mrtg配置文件.

(6) 编辑MRTG的配置文件 vi /var/www/html/mrtg/mrtg.cfg

    (1)把WorkDir: /var/www/html/mrtg 加入到配置文件的前面.

(2)把Options[_]: growright, bits 前面的#删掉.

(3)把要监测的几个ITEM加入到配置文件里面去.

   1) CPU

    ################CPU######################

Target[cpu]: `/opt/mrtg/cpu.sh`

MaxBytes[cpu]: 12500000

Title[cpu]: CPU -- XMNLINUXTEST02

Options[cpu]: gauge,nopercent,growright

YLegend[cpu]: CPU loading (%)

ShortLegend[cpu]:%

LegendO[cpu]: & CPU USER;

LegendI[cpu]: & CPU SYSTEM;

PageTop[cpu]: <H1>;CPU   -- XMNLINUXTEST02</H1>;

2)NIC 用配置文件自动配好的.

3)MEM   这个图最大设为2G,如果服务器有更大的内存,可以修改Maxbytes.

###############     MEM   2G   #################

Target[managemem]:`/opt/mrtg/mem.sh`

Unscaled[managemem]: dwym

MaxBytes[managemem]: 2048000

Title[managemem]:Memory

ShortLegend[managemem]: &

kmg[managemem]:kB,MB

kilo[managemem]:1024

YLegend[managemem]: Memory Usage

Legend1[managemem]: Total Memory

Legend2[managemem]: Used Memory

LegendI[managemem]: Total Memory

LegendO[managemem]: Used Memory

Options[managemem]: growright,gauge,nopercent

PageTop[managemem]:<H1>;Memory -------XMNLINUXTEST2</H1>;

4)Swap    也是设为2G,根据实际情况改MaxBytes.

################### Swap   2G#######################

Target[swap]:`/opt/mrtg/swap.sh`

Unscaled[swap]: dwym

MaxBytes[swap]: 2048000

Title[swap]:Memory State of Server

ShortLegend[swap]: &

kmg[swap]:kB,MB

kilo[swap]:1024

YLegend[swap]: Swap Usage

Legend1[swap]: Total Swap

Legend2[swap]: Used Swap

LegendI[swap]: Total Swap

LegendO[swap]: Used Swap

Options[swap]: growright,gauge,nopercent

PageTop[swap]:<H1>;Swap-------XMNLINUXTEST02</H1>;

5)设置磁盘使用量   最大为480G,可以根据实际情况修改MaxBytes

################## Disk Space   480G   #########################

Target[disk]: `/opt/mrtg/df.pl`

Title[disk]: Disk Space ----XMNLINUXTEST02

Unscaled[disk]: dwym

MaxBytes[disk]: 465247550

kmg[disk]: KB,MB,GB

LegendI[disk]: Total Disk Space

LegendO[disk]: Used Disk Space

Legend1[disk]: Total Disk Space

Legend2[disk]: Used Disk Space

YLegend[disk]:   Megabytes

ShortLegend[disk]: &

Options[disk]: growright,gauge,nopercent

PageTop[disk]: <H1>;Disk Space --------XMNLINUXTEST02</H1>;

6)磁盘I/O的检测,如果需要的检,更多的分区,修改并复制这个部分,并修改diskperf.sh

################## Disk I/O 100K/sec   /DEV/SDA   ##########

# If you want monitor more disk, please copy below create

# now monitor job, and copy & modify the diskperf.sh to setting disk.

Target[diskIO]: `/opt/mrtg/diskperf.sh`

Title[diskIO]: Disk HDA I/O Utilization Report

Unscaled[diskIO]: dwym

MaxBytes[diskIO]: 100

PageTop[diskIO]: <H1>;Disk I/O Utilization Report</H1>;

kmg[diskIO]: KB,MB,GB

LegendI[diskIO]: Disk I/O KBread/sec

LegendO[diskIO]: Disk I/O KBwrite/sec

Legend1[diskIO]: Disk I/O KBread/sec

Legend2[diskIO]: Disk I/O KBwrite/sec

YLegend[diskIO]:   Megabytes

ShortLegend[diskIO]: &

Options[diskIO]: growright,gauge,nopercent

4. 编译配置文件

先在/etc/profile 加入两个参数

LC_ALL=C

LANGUAGE=on

# env LANG=C /usr/bin/mrtg /var/www/html/mrtg/mrtg.cfg  

前面两次会出错,多运行几次就没有问题.

5. 生成html文件.

/usr/bin/indexmaker –output=/var/www/html/mrtg/index.html –title=主机名 /var/www/html/mrtg/mrtg.cfg

6. 配置apache 的设置.

#vi /etc/httpd/conf.d/mrtg.cfg

把Alias /mrtg /var/www/mrtg 改为Alias /mrtg /var/www/html/mrtg

把Allow from localhost   改为Allow from all

#service httpd restart ,重启apache.

7. 配置,自运行脚本,每五分钟自动运行一次.

在root 下启动 crontab –e 添加计划

      */5 * * * *   env LANG=C /usr/bin/mrtg /var/www/html/mrtg/mrtg.cfg

8.   确认service http&crontab的运进级别.

可以用下面两个命令查看这个服务的进行状况,

#chkconfig –list |grep httpd

#chkconfig –list |grep crontab

     或用设定运行级别

chkconfig --level 35 httpd on

chkconfig --level 35 crontab on5. 常见问题

(1)问:实际内存或硬盘跟的图里面的值相差太多,要吗线超出图表,要吗,在图表的下面. 如何更改图表的比例? 如内存实际上只有512M,但表里面内存显示最大为2G.

答:修改/var/www/html/mrtg/mrtg.cfg 找到相关的部分, 修改MaxBytes[managemem]: 2048000 中的2048000为512000

(2)问:我有几个硬盘,如果要监测其他的硬盘IO?

   答:首先复制一份diskperf.sh 成diskperf2.sh ,再修改diskperf2.sh里面把hd=xxx改为你要监测的硬盘,再修改/var/www/html/mrtg/mrtg.cfg 复制sda的那一部门,并修改相关的部分.

如Target[diskIO]:`/opt/mrtg/diskperf.sh` 改成Target[diskIO]: `/opt/mrtg/diskperf2.sh`

    这一部份的[diskIO]改为disk2IO

(3)问:修改了配置文件/var/www/html/mrtg/mrtg.cfg 后,网页没有生效

   答:修改完配置文件应该要重新用下面命令生成新的网页.

/usr/bin/indexmaker –output=/var/www/html/mrtg/index.html –title=主机名 /var/www/html/mrtg/mrtg.cfg

         (4)问:如何看我的MRTG图.

           答:用http://你的IP/mrtg/ 就可以看到了.

     

附:1: mrtg.cfg 里面几个参数的意思.

Target:是要执行的脚本

Xsize:生成图表的横向宽度(最大600)

Ysize:生成图表的纵向高度(最大200)

Title:标题

kMG: Change the default multiplier prefixes

Ytics:纵向划分为几个块(格子)

MaxBytes:图表纵向数值的最大上限

PageTop:页面上面的提示

kilo:一般是写1024,如果需要的话,是1000在计算机里的单位

LegendI:从SHELL返回的数据中的第一个

LegendO:从SHELL返回的数据中的第二个

Options: growright,表示图表向右延展

附2:各个script

(1)

cat /opt/mrtg/cpu.sh

#!/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

(2)

Disk usage

cat /opt/mrtg/df.pl

#!/usr/bin/perl

# output(df -kl) looks like this:

# Filesystem            1k-blocks       Used Available Use% Mounted on

# /dev/md0               95645100   30401312   64272080   33% /

# /dev/hde1                 14119       1159      12231    9% /boot

#

# In which case, this script returns :

# 95659219

# 30402503

# when run.

foreach $filesystem (`df -kl | grep -v "Filesystem"`)

{

   @df = split(//s+/,$filesystem);

   $total += $df[1];

   $usage += $df[2];

}

print "$total/n";

print "$usage/n";

hostname

(3) DISK IO    # cat /opt/mrtg/diskperf.sh

#!/bin/bash

# This script will monitor the KBread/sec &KBwriten/sec of Disk.

# Creater: CCC IT loren   ext:2288    2005/8/3

# As sda ,sdb,sdc,sdd,hda.

# disk=sda

hd=sda

disk=/dev/$hd

KBread_sec=`iostat -x $disk|grep $hd |awk '{print $8}'`

KBwrite_sec=`iostat -x $disk|grep $hd |awk '{print $9}'`

echo "$KBread_sec"

echo "$KBwrite_sec"

hostname

(4)MEMORY

cat /opt/mrtg/mem.sh

#!/bin/bash

# This script to monitor the mem usage.

totalmem=`/usr/bin/free |grep Mem |awk '{print $2}'`

usedmem=`/usr/bin/free |grep Mem |awk '{print $3}'`

echo "$totalmem"

echo "$usedmem"

(5)SWAP

cat /opt/mrtg/swap.sh

#!/bin/bash

# This script to monitor the swap usage.

totalswap=`/usr/bin/free |grep Swap |awk '{print $2}'`

usedswap=`/usr/bin/free |grep Swap |awk '{print $3}'`

echo "$totalswap"

echo "$usedswap"

 
 
 
最近读者

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多