工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表分类:系统监控

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 on

 

5. 常见问题
(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"

Mrtg系统状态监控

Mrtg系统状态监控[CPU 内存 网卡流量 系统进程 硬盘空间 TCP连接数]

----------------------------
1) 安装所需rpm包
----------------------------
net-snmp-perl-5.1.2-11.EL4.6.x86_64.rpm
net-snmp-libs-5.1.2-11.EL4.6.x86_64.rpm
net-snmp-utils-5.1.2-11.EL4.6.x86_64.rpm
net-snmp-devel-5.1.2-11.EL4.6.x86_64.rpm
   !!需要预先安装以下rpm包
   beecrypt-devel-3.1.0-6.x86_64.rpm
   elfutils-devel-0.97-5.x86_64.rpm(在第5张安装光盘上)
net-snmp-5.1.2-11.EL4.6.x86_64.rpm
net-snmp-utils-5.1.2-11.EL4.6.x86_64.rpm
安装mrtg-2.10.15-1.x86_64.rpm

----------------------------
2) 修改/etc/snmp/snmpd.conf
----------------------------
找到这行:
# Make at least  snmpwalk -v 1 59.57.251.56 -c public system fast again
#       name           incl/excl     subtree         mask(optional)
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
在view几行的下面,加上这段文字:
# For Mrtg Add start ####################################
view    all           included   .1.3.6
# For Mrtg Add end   ####################################
找到这行:
####
# Finally, grant the group read-only access to the systemview view.
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  mib2   none   none
把 access  notConfigGroup 里的mib2(也可能是systemview) 更改为all
如果需要监控硬盘容量使用状况,还需要进行以下操作:
用 df -a 看到你要监控的硬盘分卷方式以及容量大小(-am:以M为单位; -ak:以K为单位 -ag:以G为单位)
比如:
#df -am
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/sda2                63993     10284     50459  17% /
/dev/sda1                  981        24       908   3% /boot

然后修改/etc/snmp/snmpd.conf,在刚才修改的view行最下面加入:
disk / 63993
disk /boot 981
然后重启snmp服务
# service snmpd restart

----------------------------
3) 修改mrtg配置文件 mrtg.cfg
----------------------------
使用Redhat AS4u5 自带的mrtg
安装以后的配置文件是/usr/local/apache/htdocs/mrtg

我们预设要监控的服务器以下参数:
连接公网网卡的流量;
主机连续运行时间;
系统负载;
CPU负载;
内存使用量;
系统进程数;
硬盘空间;
打开的TCP连接数。

mrtg.cfg配置如下:

  1. ###################### Configuration Being #########################  
  2. #---------------------------------  
  3. # filename : mrtg.cfg  
  4. # 注意如果文件夹不存在,需要先创建  
  5. #---------------------------------  
  6. ### Global Config Options  
  7. #  to get bits instead of bytes and graphs growing to the right  
  8. #Options[_]: growright, bits  
  9. EnableIPv6: no  
  10. WorkDir: /usr/local/apache/htdocs/mrtg  
  11. Language: Chinese  
  12. HtmlDir: /usr/local/apache/htdocs/mrtg  
  13. ImageDir: /usr/local/apache/htdocs/mrtg  
  14. LogDir: /var/log/mrtg  
  15. ThreshDir: /var/lib/mrtg  
  16. LoadMIBs:/usr/share/snmp/mibs/UCD-SNMP-MIB.txt,/usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt,/usr/share/snmp/mibs/TCP-MIB.txt  
  17. #================================================================================  
  18. #监控eth0网卡(连接公网的)  
  19. #================================================================================  
  20. Target[eth0_lan]: /59.57.251.56:public@59.57.251.56:  
  21. Options[eth0_lan]: growright  
  22. Directory[eth0_lan]: eth0  
  23. MaxBytes[eth0_lan]: 100000000  
  24. Kmg[eth0_lan]: ,k,M,G,T,P  
  25. YLegend[eth0_lan]: Bytes per Second  
  26. ShortLegend[eth0_lan]: B/s  
  27. Legend1[eth0_lan]: 每秒流入量 (单位 Bytes)  
  28. Legend2[eth0_lan]: 每秒流出量 (单位 Bytes)  
  29. LegendI[eth0_lan]: 流入:  
  30. LegendO[eth0_lan]: 流出:  
  31. Title[eth0_lan]: eth0网络流量[流入+流出]  
  32. PageTop[eth0_lan]: <H1>eth0网络流量[流入+流出]</H1> 
  33. <TABLE> 
  34.   <TR><TD>描述 :</TD><TD>LAN网络接口eth0的网络流量(Bytes/s)</TD></TR> 
  35. </TABLE> 
  36. #================================================================================  
  37. #监控主机连续运行时间[运行天数] 实际操作过程中此节未配置,没有多大用途  
  38. #================================================================================  
  39. Target[upday]: `/usr/local/mrtg/bin/mrtg-updays.pl`  
  40. Options[upday]: gauge,nopercent,growright  
  41. Directory[upday]: upday  
  42. MaxBytes[upday]: 1000  
  43. YLegend[upday]: Up Days  
  44. ShortLegend[upday]: 天  
  45. Legend1[upday]: 主机连续运行时间(天)  
  46. Legend2[upday]:  
  47. LegendI[upday]: 运行时间:  
  48. LegendO[upday]:  
  49. Title[upday]: 主机连续运行时间[运行天数]  
  50. PageTop[upday]: <h1>主机连续运行时间[运行天数]</h1> 
  51. <TABLE> 
  52.   <TR><TD>描述:</TD><TD>主机连续运行的时间(天)</TD></TR> 
  53. </TABLE> 
  54. #================================================================================  
  55. #监控系统负载[1分钟+15分钟]  
  56. #================================================================================  
  57. Target[systemload]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.3:public@59.57.251.56:  
  58. Options[systemload]: gauge,nopercent,growright  
  59. Directory[systemload]: load  
  60. MaxBytes[systemload]: 3000  
  61. YLegend[systemload]: System Load  
  62. ShortLegend[systemload]:  
  63. Legend1[systemload]: 最近1分钟系统负载(x100)  
  64. Legend2[systemload]: 最近15分钟系统负载(x100)  
  65. LegendI[systemload]: 1分钟负载:  
  66. LegendO[systemload]: 15分钟负载:  
  67. Title[systemload]: 系统负载(x100)[1分钟+15分钟]  
  68. PageTop[systemload]: <h1>系统负载(x100)[1分钟+15分钟]</h1> 
  69. <TABLE> 
  70.   <TR><TD>描述:</TD><TD>系统负载(x100)[1分钟+15分钟]</TD></TR> 
  71. </TABLE> 
  72. #================================================================================  
  73. #监控CPU负载[用户+闲置]  
  74. #================================================================================  
  75. Target[cpuload]: .1.3.6.1.4.1.2021.11.50.0&1.3.6.1.4.1.2021.11.53.0:public@59.57.251.56:  
  76. Options[cpuload]: nopercent,growright  
  77. Directory[cpuload]: cpu  
  78. MaxBytes[cpuload]: 100  
  79. Unscaled[cpuload]: dwym  
  80. YLegend[cpuload]: CPU Utilization  
  81. ShortLegend[cpuload]: %;  
  82. Legend1[cpuload]: CPU用户负载(%)  
  83. Legend2[cpuload]: CPU闲置(%)  
  84. LegendI[cpuload]: 用户:  
  85. LegendO[cpuload]: 闲置:  
  86. Title[cpuload]: CPU负载[用户+闲置]  
  87. PageTop[cpuload]: <h1>CPU负载[用户+闲置]</h1> 
  88. <TABLE> 
  89.   <TR><TD>描述:</TD><TD>CPU负载[用户+闲置]</TD></TR> 
  90. </TABLE> 
  91. #================================================================================  
  92. #监控内存使用量[Mem+Swap]  
  93. #================================================================================  
  94. Target[memory]: .1.3.6.1.2.1.25.2.3.1.6.2&.1.3.6.1.2.1.25.2.3.1.6.3:public@59.57.251.56:  
  95. Options[memory]: gauge,growright  
  96. Directory[memory]: mem  
  97. MaxBytes1[memory]: 4045336  
  98. MaxBytes2[memory]: 2097152  
  99. Kmg[memory]: k,M,G,T,P  
  100. Kilo[memory]: 1024  
  101. Unscaled[memory]: dwym  
  102. YLegend[memory]: Bytes  
  103. ShortLegend[memory]: B  
  104. Legend1[memory]: 已用Mem (Bytes)  
  105. Legend2[memory]: 已用Swap(Bytes)  
  106. LegendI[memory]: 已用Mem :  
  107. LegendO[memory]: 已用Swap:  
  108. Title[memory]: 内存使用量[Mem+Swap]  
  109. PageTop[memory]: <h1>内存使用量[Mem+Swap]</h1> 
  110. <TABLE> 
  111.   <TR><TD>描述:</TD><TD>Memory和Swap的使用量(Bytes)</TD></TR> 
  112. </TABLE> 
  113. #================================================================================  
  114. #监控系统进程数[进程数]  
  115. #================================================================================  
  116. Target[process]: .1.3.6.1.2.1.25.1.6.0&.1.3.6.1.2.1.25.1.6.0:public@59.57.251.56:  
  117. Options[process]: gauge,nopercent,growright  
  118. Directory[process]: process  
  119. MaxBytes[process]: 1000  
  120. YLegend[process]: Processes  
  121. ShortLegend[process]: 个  
  122. Legend1[process]: 系统进程数(个)  
  123. Legend2[process]:  
  124. LegendI[process]: 进程数:  
  125. LegendO[process]:  
  126. Title[process]: 系统进程数[进程数]  
  127. PageTop[process]: <h1>系统进程数[进程数]</h1> 
  128. <TABLE> 
  129.   <TR><TD>描述:</TD><TD>系统进程数(个)</TD></TR> 
  130. </TABLE> 
  131. #==================================================================================  
  132. # 监控硬盘空间[系统盘+数据盘]  !!参照前面的2) 这里需要与修改后snmpd.conf 的硬盘参数一致  
  133. #==================================================================================  
  134. Target[disk]: .1.3.6.1.4.1.2021.9.1.8.1&.1.3.6.1.4.1.2021.9.1.8.2:public@59.57.251.56:  
  135. Options[disk]: gauge,growright  
  136. Directory[disk]: disk  
  137. MaxBytes1[disk]: 10080520  
  138. MaxBytes2[disk]: 46251780  
  139. Kmg[disk]: k,M,G,T,P  
  140. Kilo[disk]: 1024  
  141. Unscaled[disk]: dwym  
  142. YLegend[disk]: Bytes  
  143. ShortLegend[disk]: B  
  144. Legend1[disk]: 系统盘已用空间  
  145. Legend2[disk]: 数据盘已用空间  
  146. LegendI[disk]: 系统已用:  
  147. LegendO[disk]: 数据已用:  
  148. Title[disk]: 硬盘空间[系统盘+数据盘]  
  149. PageTop[disk]: <h1>硬盘空间[系统盘+数据盘]</h1> 
  150. <TABLE> 
  151.   <TR><TD>描述:</TD><TD>监控硬盘空间</TD></TR> 
  152. </TABLE> 
  153. #================================================================================  
  154. #监控打开的TCP连接数[TCP连接数]  
  155. #================================================================================  
  156. Target[tcpopen]: .1.3.6.1.2.1.6.9.0&.1.3.6.1.2.1.6.9.0:public@59.57.251.56:  
  157. Options[tcpopen]: gauge,nopercent,growright  
  158. Directory[tcpopen]: tcpopen  
  159. MaxBytes[tcpopen]: 1000  
  160. YLegend[tcpopen]: Tcp Connections  
  161. ShortLegend[tcpopen]: 个  
  162. Legend1[tcpopen]: 打开的TCP连接数(个)  
  163. Legend2[tcpopen]:  
  164. LegendI[tcpopen]: TCP连接数:  
  165. LegendO[tcpopen]:  
  166. Title[tcpopen]: TCP连接数[TCP连接数]  
  167. PageTop[tcpopen]: <h1>TCP连接数[TCP连接数]</h1> 
  168. <TABLE> 
  169.   <TR><TD>描述:</TD><TD>打开的TCP连接数(个)</TD></TR> 
  170. </TABLE> 
  171. ###################### Configuration End ######################### 


注意<一>
在上面监控主机连续运行时间的配置中,有提到要使用/usr/local/mrtg/bin/mrtg-updays.pl这个文件。需要手动创建,内容如下:

  1. #!/usr/bin/perl  
  2. $machine = `/bin/hostname`;  
  3. $uptime1 = `/usr/bin/uptime`;  
  4. $uptime2 = $uptime1;  
  5. $uptime1 =~ /up (.*?) day/;  
  6. $upday = int($1);  
  7. $uptime2 =~ /up (.*?) load/;  
  8. $uptime = $1;  
  9. print "$upday\n";  
  10. print "$upday\n";  
  11. print "$uptime\n";  
  12. print $machine."\n"


保存以后修改权限为可执行:

  1. #chmod +x /usr/local/mrtg/bin/mrtg-updays.pl 

注意<二>
关于硬盘参数,一定要注意
snmp.conf与mrtg.cfg中的格式、参数一定要一致,并且完全跟df -a*的命令结果相符。否则会得到输入错误的提示信息。
 
----------------------------
4) 生成工作目录及相关文件
----------------------------
env LANG=C /usr/local/mrtg/bin/mrtg /usr/local/apache/htdocs/mrtg/mrtg.cfg
 
----------------------------
5) 生成监控的页面文件
----------------------------
env LANG=C /usr/local/mrtg/bin/indexmaker --output /usr/local/apache/htdocs/mrtg/index.html --title="System state Monitor" /usr/local/apache/htdocs/mrtg/mrtg.cfg

6) 多服务器环境下的集中管理
mrtg主目录:/usr/local/apache/htdocs/mrtg
如果存在多服务器,建议用创建ip文件夹,方便识别:
实例:
创建一IP文件夹(117.25.130.49),
(1) 生成CFG配置文件
/usr/local/mrtg/bin/cfgmaker public@117.25.130.49 --global 'workdir: /usr/local/apache/htdocs/mrtg/117.25.130.49' --output /usr/local/apache/htdocs/mrtg/117.25.130.49/mrtg.cfg
这样生成的配置文件只是MRTG默认的配置,可以不用操作这一步,直接COPY上面的配置模板,将其中IP更改为要监控的服务器IP

(2) 生成监控页面文件
/usr/local/mrtg/bin/indexmaker --output=/usr/local/apache/htdocs/mrtg/117.25.130.49/index.html --title="System Monitor" /usr/local/apache/htdocs/mrtg/117.25.130.49/mrtg.cfg

(3) 生成工作目录及相关文件
env LANG=C /usr/local/mrtg/bin/mrtg /usr/local/apache/htdocs/mrtg/117.25.130.49/mrtg.cfg

(4) 更改模板文件的字符集,
上面生成的html文件中,默认字符集为iso-8859-1,浏览时可能会出现乱码,可以将其更改为utf-8
# sed -i "s/charset=iso-8859-15/charset=utf-8/" filename
# sed -i "s/charset=iso-8859-1/charset=utf-8/" filename

(5) 定时执行
*/5 * * * * env LANG=C /usr/local/mrtg/bin/mrtg /usr/local/apache/htdocs/mrtg/117.25.130.49/mrtg.cfg

(6) 浏览
http://59.57.251.56/mrtg/117.25.130.49/


(7) 防火墙
iptables -A INPUT -s 59.57.251.56 -p udp --destination-port 161 -j ACCEPT
iptables -A INPUT -s 59.57.251.56 -p udp --destination-port 162 -j ACCEPT

附:NET-SNMP Tutorial -- MRTG

  1. ### Global Config Options  
  2. EnableIPv6: no  
  3. Options[_]: growright, bits  
  4. WorkDir: /usr/local/apache/htdocs/mrtg  
  5. Language: Chinese  
  6. HtmlDir: /usr/local/apache/htdocs/mrtg  
  7. ImageDir: /usr/local/apache/htdocs/mrtg  
  8. LogDir: /var/log/mrtg  
  9. ThreshDir: /var/lib/mrtg  
  10. LoadMIBs:/usr/share/snmp/mibs/UCD-SNMP-MIB.txt,/usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt,/usr/share/snmp/mibs/TCP-MIB.txt  
  11.  
  12. # User vs Idle CPU usage  
  13. Target[kontor.cpu]:ssCpuRawUser.0&ssCpuRawIdle.0:public@59.57.251.56  
  14. RouterUptime[kontor.cpu]: public@59.57.251.56  
  15. MaxBytes[kontor.cpu]: 100  
  16. Title[kontor.cpu]: CPU LOAD  
  17. PageTop[kontor.cpu]: <H1>User CPU Load %</H1> 
  18. Unscaled[kontor.cpu]: ymwd  
  19. ShortLegend[kontor.cpu]: %  
  20. YLegend[kontor.cpu]: CPU Utilization  
  21. Legend1[kontor.cpu]: User CPU in % (Load)  
  22. Legend2[kontor.cpu]: Idle CPU in % (Load)  
  23. Legend3[kontor.cpu]:  
  24. Legend4[kontor.cpu]:  
  25. LegendI[kontor.cpu]:  User  
  26. LegendO[kontor.cpu]:  Idle  
  27. Options[kontor.cpu]: growright,nopercent  
  28.  
  29. # User vs System CPU usage  
  30. Target[kontor.usrsys]:ssCpuRawUser.0&ssCpuRawSystem.0:public@59.57.251.56  
  31. RouterUptime[kontor.usrsys]: public@59.57.251.56  
  32. MaxBytes[kontor.usrsys]: 100  
  33. Title[kontor.usrsys]: CPU LOAD  
  34. PageTop[kontor.usrsys]: <H1>CPU (user and system) Load %</H1> 
  35. Unscaled[kontor.usrsys]: ymwd  
  36. ShortLegend[kontor.usrsys]: %  
  37. YLegend[kontor.usrsys]: CPU Utilization  
  38. Legend1[kontor.usrsys]: User CPU in % (Load)  
  39. Legend2[kontor.usrsys]: System CPU in % (Load)  
  40. Legend3[kontor.usrsys]:  
  41. Legend4[kontor.usrsys]:  
  42. LegendI[kontor.usrsys]:  User  
  43. LegendO[kontor.usrsys]:  System  
  44. Options[kontor.usrsys]: growright,nopercent  
  45.  
  46. ### Active CPU usage  
  47. Target[kontor.cpusum]:ssCpuRawUser.0&ssCpuRawUser.0:public@59.57.251.56 + ssCpuRawSystem.0&ssCpuRawSystem.0:public@59.57.251.56 + ssCpuRawNice.0&ssCpuRawNice.0:public@59.57.251.56  
  48. RouterUptime[kontor.cpusum]: public@59.57.251.56  
  49. MaxBytes[kontor.cpusum]: 100  
  50. Title[kontor.cpusum]: CPU LOAD  
  51. PageTop[kontor.cpusum]: <H1>Active CPU Load %</H1> 
  52. Unscaled[kontor.cpusum]: ymwd  
  53. ShortLegend[kontor.cpusum]: %  
  54. YLegend[kontor.cpusum]: CPU Utilization  
  55. Legend1[kontor.cpusum]: Active CPU in % (Load)  
  56. Legend2[kontor.cpusum]:  
  57. Legend3[kontor.cpusum]:  
  58. Legend4[kontor.cpusum]:  
  59. LegendI[kontor.cpusum]:  Active  
  60. LegendO[kontor.cpusum]:  
  61. Options[kontor.cpusum]: growright,nopercent  
  62.  
  63. ###Monitoring DISK space  
  64. ###Monitoring from dskTable  
  65.  
  66. Target[kontor.root]:dskPercent.1&dskPercent.2:public@59.57.251.56  
  67. RouterUptime[kontor.root]: public@59.57.251.56  
  68. MaxBytes[kontor.root]: 100  
  69. Title[kontor.root]: DISK USAGE  
  70. PageTop[kontor.root]: <H1>DISK / and /usr Usage %</H1> 
  71. Unscaled[kontor.root]: ymwd  
  72. ShortLegend[kontor.root]: %  
  73. YLegend[kontor.root]: DISK Utilization  
  74. Legend1[kontor.root]: Root disk  
  75. Legend2[kontor.root]: /usr disk  
  76. Legend3[kontor.root]:  
  77. Legend4[kontor.root]:  
  78. LegendI[kontor.root]:  Root disk  
  79. LegendO[kontor.root]:  /usr disk  
  80. Options[kontor.root]: growright,gauge,nopercent  
  81.  
  82. ###Monitoring from hrStorageTable  
  83.  
  84. Target[kontor.hrroot]:hrStorageSize.1&hrStorageUsed.1:public@59.57.251.56  
  85. RouterUptime[kontor.hrroot]: public@59.57.251.56  
  86. MaxBytes[kontor.hrroot]: 300000  
  87. Title[kontor.hrroot]: DISK / USAGE  
  88. PageTop[kontor.hrroot]: <H1>DISK / Usage</H1> 
  89. ShortLegend[kontor.hrroot]: B  
  90. kMG[kontor.hrroot]: k,M,G,T,P  
  91. kilo[kontor.hrroot]: 1024  
  92. YLegend[kontor.hrroot]: DISK / Utilization  
  93. Legend1[kontor.hrroot]: Root disk size  
  94. Legend2[kontor.hrroot]: Root disk usage  
  95. Legend3[kontor.hrroot]:  
  96. Legend4[kontor.hrroot]:  
  97. LegendI[kontor.hrroot]:  Root disk size  
  98. LegendO[kontor.hrroot]:  Root disk usage  
  99. Options[kontor.hrroot]: growright,gauge,nopercent  
  100. Two further examples that have been offered:   
  101.  
  102. ### Monitoring TCP connections  
  103.  
  104. Target[tcpopen]:   
  105. .1.3.6.1.2.1.6.9.0&.1.3.6.1.2.1.6.9.0:public@localhost   
  106. Options[tcpopen]: nopercent,growright,gauge,noinfo   
  107. Title[tcpopen]: Open TCP connections   
  108. PageTop[tcpopen]: Open TCP connections  
  109. MaxBytes[tcpopen]: 1000000   
  110. YLegend[tcpopen]: # conns   
  111. ShortLegend[tcpopen]: connections   
  112. LegendI[tcpopen]:  Connections:   
  113. LegendO[tcpopen]:   
  114. Legend1[tcpopen]: Open TCP connections   
  115.  
  116.  
  117. ### Monitoring Free Memory  
  118. Target[freemem]: .1.3.6.1.4.1.2021.4.11.0&.1.3.6.1.4.1.2021.4.11.0:public@localhost   
  119. Options[freemem]: nopercent,growright,gauge,noinfo   
  120. Title[freemem]: Free Memory   
  121. PageTop[freemem]: Free Memory  
  122. MaxBytes[freemem]: 1000000   
  123. kMG[freemem]: k,M,G,T,P,X   
  124. YLegend[freemem]: bytes   
  125. ShortLegend[freemem]: bytes   
  126. LegendI[freemem]:  Free Memory:   
  127. LegendO[freemem]:   
  128. Legend1[freemem]: Free memory, not including swap, in bytes 

MRTG的高级应用

1/ 简介
在多数情况下,使用MRTG的基本配置来监测系统的网络流量是不够的。你还可能想看一看CPU、磁盘和内存使用的曲线。这一章解释如何在SNMP的MIB文件中找到你要查看的值,如何利用这些信息配置MRTG。

本章中所有的实例使用SNMP的只读COMMUNITY串为“craz33guy”,并且net-snmp-utils的RPM包已经安装。(参考22章,“监测系统性能”)。

2/ 查找和查看Linux的MIBs的内容
MIBs以数据方式居留在内存当中,并通过SNMP进程不断更新。MIB的配置文本文档位于硬盘中,并当每次SNMP重启时加载到内存中。

你能够很容易地使用命令“locate”和过滤器让输出过滤为仅包含“snmp”来找到Fedora的MIBs。就像下面这样例子一样,MIBs的位置在/usr/share/snmp/mibs/目录中:

[root@bigboy tmp]# locate mib | grep snmp/usr/share/doc/net-snmp-5.0.6/README.mib2c/usr/share/snmp/mibs/usr/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt......[root@bigboy tmp]#由于MIB的配置文件是用文本文件方式存储的,所以我们可以使用“grep”命令来搜索关键词。下面这个例子查找追踪TCP连接的MIBs,RFC1213和TCP MIBs就是返回的结果。

[root@silent mibs]# grep -i tcp /usr/share/snmp/mibs/*.txt | grep connections...RFC1213-MIB.txt: "The limit on the total number of TCP connectionsRFC1213-MIB.txt: "The number of times TCP connections have made a...TCP-MIB.txt:     "The number of times TCP connections have made a......[root@silent mibs]#我们可以使用编辑器vi来查看MIBs。不要改变它们,因为这样会导致SNMP失败。MIBs非常复杂,但庆幸的是关键区域则是可以注释的(commented ?)。

MIB里的每一个值都被称为一个对象,且经常与它的目标ID或OID对应。在RFC1213-MIB.txt中,我们可以看到查询对象“tcpActiveOpens ”会返回一个服务器的激活的TCP连接数。字段“SYNTAX(语法)”表明这是一个计数值。

MIBs经常追踪两种类型的值:
计数值被用于随着时间不断增加的项,例如流经NIC的数据包的数目或自启动以来CPU工作的时间。
整数值是随时都在变化的值,这个在追踪内存被使用的统计情况是非常有用。

tcpActiveOpens OBJECT-TYPESYNTAX  CounterACCESS  read-onlySTATUS  mandatoryDESCRIPTION"The number of times TCP connections have made adirect transition to the SYN-SENT state from theCLOSED state."::= { tcp 5 }tcpMaxConn OBJECT-TYPESYNTAX  INTEGERACCESS  read-onlySTATUS  mandatoryDESCRIPTION"The limit on the total number of TCP connectionsthe entity can support.  In entities where themaximum number of connections is dynamic, thisobject should contain the value -1."::= { tcp 4 }你会后面发现SNMP和MRTG之间用语的差异。理解它们在使用MRTG追踪MIB的值时是非常重要的。

3/ 测试你的MIB的值
一旦你确定一个感兴趣的Linux系统的MIB值,你就可以使用“snmpwalk”来收集它。多数情况下,MIB的文本别名只是对OID的分支有效,而 不是以额外的“.0”或“.1”结尾的OID的数据叶子。“snmpget”命令在使用分支时将会报错,说这个MIB变量找不到。

在下面这个例子中,我们对别名为”ssCpuRawUser”的OID感兴趣,但是“snmpget”却不能取到值。根据“snmpwalk”显示 的数据我们用“ssCpuRawUser.0”代替。现在“snmpget”就成功执行了,得到了“counter32”类型的数据,且值为 “396271”。

[root@bigboy tmp]# snmpget -v1 -c craz33guy localhost ssCpuRawUserError in packetReason: (noSuchName) There is no such variable name in this MIB.Failed object: UCD-SNMP-MIB::ssCpuRawUser[root@bigboy tmp]#[root@bigboy tmp]# snmpwalk -v1 -c craz33guy localhost ssCpuRawUserUCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 396241[root@bigboy tmp]# snmpget -v1 -c craz33guy localhost ssCpuRawUser.0UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 396271[root@bigboy tmp]#用“snmpget”可以成功执行的MIB值,我们就可以使用MRTG来获得。

4/ MIB与MRTG名词解释之间的区别
要时刻记住MRTG引用MIB的计数值作为计数器的值。引用MIB整数和规格作为规格。默认情况下,MRTG把所有的值当作计数值。(有点不太顺,原文如 下:Always keep in mind that MRTG refers to MIB counter values as counter values. It refers to MIB integer and gauge values as gauge. By default, MRTG considers all values to be counters. )

MRTG并不用计数值来绘制不断增加的曲线,它只使用与最后一次收集时的数据相比改变的值来绘制曲线。CPU使用情况是典型的被MIBs追踪的计数值;幸运的是,你能够编辑MRTG的配置文档来让它以百分比的形式来绘制曲线(后面有详细说明)。

语法类型,MIB对象名称和它是什么的描述是你在配置MRTG时要知道的最重要的事情。这个将在后面说明。

5/ 监测CPU和内存的MIB(?)
名称为“UCD-SNMP-MIB ”追踪MIB对象的关键性能,包括下图中最常用的几个。

5.1/ 在UCD-SNMP-MIB中重要的对象
##UCD-SNMP-MIB
## 对象变量 MIB类型 MRTG类型 描述
## =========== ======= ======== =========
ssCpuRawUser Counter Counter 系统启动之后未授权用户运行的
程序占用CPU的总量
—————————————————————-
ssCpuRawSystem Counter Counter 系统启动之后授权的系统进程
运行的程序占用的CPU总量
—————————————————————-
ssCpuRawNice Counter Counter 运行在非默认优先权级别的
程序占用的CPU总量
—————————————————————-
ssCpuRawIdle Counter Counter 某一时刻空闲CPU所占百分比。
用100减去这个值会对整个CPU的
使用情况有较好的估计
—————————————————————-

6/ 监测TCP/IP的MIB
名称为“TCP-MIB”追踪数据连接信息,包括了非常有用的对象“tcpActiveOpens”和“tcpCurrEstab”。
6.1/ 在TCP-MIB中重要的对象
## TCP-MIB对象变量 MIB类型 MRTG类型 描述
## =============== ======= ======== =========
tcpActiveOpens Counter Counter 衡量已完成的TCP连接数
—————————————————————-
tcpCurrEstab Gauge Gauge 衡量处于“established”
状态的TCP连接数
—————————————————————-
tcpInErrs Counter Counter 带有验证错误的TCP段的数目
—————————————————————-

7/ 手动配置MRTG文档
MRTG的cfgmaker程序只是为网络接口建立配置文档,同时追踪两个OIDs:网络接口的输入和输出数据统计信息。MRTG的程序使用这些配置文档 来决定记录在它的数据目录中的数据类型。indexmaker程序也使用这些信息来建立总的消息,或者对你监测的OIDs进行一个可浏览的网页摘要。

摘要页只显示每天的统计信息。单击摘要图可以看到它后面的详细页面,有每天、每周、每月和每年的曲线。配置文档中的一些参数参阅详细信息,其它的参阅摘要信息。

如果你想监测其它的OIDs,你要手动建立配置文档,因为cfgmaker除了与NIC有关的OIDs之外的OIDs就不知道了。MRTG和 indexmaker程序会自定义的配置文档当中发现(fed ?)独立的OIDs,如果你编辑正确的话,那它就完成你所期望的功能。

7.1/ 参数格式
MRTG配置参数总是跟着一个用“[]”括起来的曲线名称和一个“:”。格式如下:

Parameter[graph name]: value为了便于编辑,针对某一个特定的曲线的参数通常会成组放在一起。每一个曲线能够追踪两个列在目标参数中的OIDs,它通常被放置在曲线名称列表的最上方。这两个OID值用“&”分隔;第一个是输入OID,第二个是输出OID。

7.2/ legend参数
在详细的Web浏览页,每一个曲线都有一个legend被用来显示OID的统计信息的最大值、平均数和当前值。你可以用“legendI”参数来描述输入曲线(第一个OID曲线),用“legendO”参数来描述输出曲线(第二个OID曲线)。

在每一个曲线legend下文的可用空白都是很少的,这样MRTG还有“legend1”和“legend2”两个参数要放在页面的最底部来提供更多的详细资料。参数“legend1”是“legendI”的扩展,参数“legend2”是“legendO”的扩展。

“Ylegend”是Y轴的legend,它的值就是你想比较的值。在默认的MRTG的配置文档中它可能是位或字节每秒流经接口的数据流。下面是一个默认的MRTG的配置档:

YLegend[graph1]: Bits per secondLegend1[graph1]: Incoming Traffic in Bits per SecondLegend2[graph1]: Outgoing Traffic in Bits per SecondLegendI[graph1]: InLegendO[graph1]: Out要是不想让MRTG在曲线底部显示某项legend,可以让该legend的值为空就可以了:

LegendI[graph1]:在后面你将会知道如何在不同的情形中匹配legend与OIDs。

7.3/ 选项参数
选项参数给MRTG提供了曲线格式的一个信息。选项growright保证屏幕右边的数据是最近的曲线的值。这使曲线更直观更容易读懂。MRTG默认的选项是从左边增长。

选项nopercent防止MRTG在曲线的底部的legends处打印出百分比样式的统计信息。选项gauge警告MRTG的一个事实,那就是曲线的值是“gauge”类型的。如果你监测的值是字节类型的,你可以通过选项bits来使输出转换成“bits”类型的。同样,你可以通过选项perminute将曲线的值从每秒转换成每分钟。下面是两种不同曲线的一些实例:

options[graph1]: growright,nopercent,perminuteoptions[graph2]: gauge,bits如果你将一个选项放在顶端并跟着一个“[_]”就表明这个选项会对这个文件当中所有的曲线都有效,例如:

options[_]: growright摘要页的标题由选项Title标明,详细页的标题由选项PageTop标明。“PageTop”选项的值必须用“< H1 >”括起来。

Title[graph1]: Interface eth0PageTop[graph1]: < H1 >Detailed Statistics For Interface eth0 < H1 >7.4/ 缩放比例参数
参数MaxBytes是MRTG在曲线图中数据的最大值。任何超过这个值的都会超过曲线的边界而看不见。

MRTG还是会尽量调整它的曲线使它的最大值一直接近它的曲线的顶端。这种情况即使你设置了最大值也还是会发生。

当你收集一个值,它有已知的最大值,你可能想让这个值一直呆在竖直legend的顶端,那么你可能要关闭MRTG的自动缩放。如果你收集CPU使用 的百分比,而服务器则达到了最大值的60%,通过缩放,MRTG就会使竖直的数据从0%到60%,这个垂直方向波峰就接近曲线的顶端了。

当缩放关闭时,而且MaxBytes被设置为100,那么曲线的值就会从0%到100%,而波峰则只会60%。下面这个例子将详细页面中的每年、每月、每周和每天视图的缩放去掉了,并且设定了最大值为100。

Unscaled[graph1]: ymwdMaxBytes[graph1]: 1007.5/ 定义MIB目标参数
就像前面所说的那样,MRTG总是比较目标参数定义的两个MIB OID的值。我们要指定两个MIB OID对象,SNMP密码和你要查询设备的IP地址,并用“&”将它们分开。

Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address>在MIB最后的数值,在这里是“.0”,是需要的。下面这个例子返回了LINUX服务器的CPU在用户模式下的综合使用情况。注意输出当中的“.0”是跟在标记的后面的。

[root@silent mibs]# snmpwalk -v 1 -c craz33guy localhost ssCpuRawUserUCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 926739[root@silent mibs]#7.5.1/ 将MIBs映射到曲线的legend

MRTG的legend映射到MIBs的列表在下面:

Legend  Maps To Target MIBLegend1  #1Legend2  #2LegendI  #1LegendO  #2所以,在下面这个例子中,legend1和legendI描述的是mib-object-1.0,而legend2和legendO描述的是mib-object-2.0。

Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address>7.5.2/ 只绘制一个MIB值
如果你只想绘制一个MIB的值,你只需像下面例子中一样重复对目标MIB的定义就可以了,这里只绘制mib-object-1。结果MRTG曲线实际上superimposes输入和输出曲线一个接着一个。

Target[graph1]: mib-object-1.0&mib-object-1.0:<SNMP-password>@<IP-address>7.5.3/ Adding MIB Values Together For a Graph
你可以用“+”将一对MIB对象连接起来。下面这个实例将mib-object-1.0和mib-object-3.0添加到一个曲线中,并将mib-object-2.0和mib-object-4.0添加到另一个曲线中。

Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address> + mib-object-3.0&mib-object-4.0:<SNMP-password>@<IP-address>你还可以使用其它的算术符号,如“-”,“*”和“%”,“(”和“)”也是有效的。在这些符号的左右都必须有空格,要不然你的曲线就会古怪而带有阴影。

7.5.4/ 目标实例:CPU使用情况
在Linux系统中CPU被系统进程、用户进程和一些运行在“nice”模式的进程所占用。下面这个实例将它们都放在一起了。

Target[graph1]:ssCpuRawUser.0&ssCpuRawUser.0:<SNMP-password>@<IP-address> + ssCpuRawSystem.0&ssCpuRawSystem.0:<SNMP-password>@<IP-address> + ssCpuRawNice.0&ssCpuRawNice.0:<SNMP-password>@<IP-address>请确认这些命令在单独的一行中。

7.5.5/ 目标实例:内存使用
下面是一个有关可用内存情况的例子。注意这是一个“gauge”类型的变量。

Target[graph1]: 垃圾广告vailReal.0&memTotalReal.0:<SNMP-password>@<IP-address>options[graph1]: nopercent,growright,gauge接下来,是一个可用内存百分比的例子。注意在数学运算符与下一个目标对象之间有强制的空白。

Target[graph1]: ( 垃圾广告vailReal.0& 垃圾广告vailReal.0:<SNMP-password>@<IP-address> ) * 100 / ( memTotalReal.0&memTotalReal.0:<SNMP-password>@<IP-address> )options[graph1]: nopercent,growright,gauge7.5.6/ 目标实例:新建连接
HTTP流量是由通常是非常短的Web浏览的连接产生的。MIB对象tcpPassiveOpens追踪新建连接,并适合这种类型的数据传输。MIB对象tcpActiveOpens监测从服务器发起的新建连接。在小一点的Web站点,你可能要用选项perminute来使曲线更有意义。

Target[graph1]: tcpPassiveOpens.0& tcpPassiveOpens.0:<SNMP-password>@<IP-address>MaxBytes[graph1]: 1000000Options[graph1]: perminute7.5.7/ 目标实例:全部TCP建立连接
其它像FTP和SSH等协议则建立长时间的连接,当人们下载大的文件或者登陆到服务器上时。MIB对象tcpCurrEstab衡量连接状态为established的连接总数,并且它是一个gauge值。

Target[graph1]: tcpCurrEstab.0&tcpCurrEstab.0:<SNMP-password>@<IP-address>MaxBytes[graph1]: 1000000Options[graph1]: gauge7.5.8/ 目标实例:磁盘分区使用
在这个实例中,让我们来监测系统上的/var和/home分区。
1. 使用df -k列出在使用的分区。

[root@bigboy tmp]# df -kFilesystem           1K-blocks      Used Available Use% Mounted on/dev/hda8               505605    128199    351302  27% //dev/hda1               101089     19178     76692  21% /boot/dev/hda5              1035660    122864    860188  13% /home/dev/hda6               505605      8229    471272   2% /tmp/dev/hda3              3921436    890092   2832140  24% /usr/dev/hda2              1510060    171832   1261520  73% /var[root@bigboy tmp]#2. 在snmpd.conf文档中添加两行:

disk  /homedisk  /var3. 重启SNMP来重读值

[root@bigboy tmp]# service snmpd restart4. 使用snmpwalk来查询MIBdskPercent。
对象dskPercent.1对应snmpd.conf中的对一个磁盘(/home),dskPercent.2对应第二个(/var)。

[root@bigboy tmp]# snmpwalk -v 1 -c craz33guy localhost dskPercent.1UCD-SNMP-MIB::dskPercent.1 = INTEGER: 13[root@bigboy tmp]# snmpwalk -v 1 -c craz33guy localhost dskPercent.2UCD-SNMP-MIB::dskPercent.2 = INTEGER: 73[root@bigboy tmp]#对于这些”gauge”MIB对象,你的MRTG目标可能会是这样子的:

Target[graph1]: dskPercent.1& dskPercent.1:<SNMP-password>@<IP-address>options[graph1]: growright,gauge7.5.9/ 定义全局变量
你要让MRTG知道你所使用的MIBs的位置。MRTG默认使用的路径可能无效。要用全局参数LoadMIBs来明确位置。你还要定义HTML文件保存位置;下面的例子明确了Fedora默认情况下MRTG的HTML文件目录。

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt, /usr/share/snmp/mibs/TCP-MIB.txtworkdir: /var/www/mrtg/8/ 服务器高级监测实践
你现在能够将你所知道的联合起来建立一个配置文件来监测这些所有的变量,并且你能把它整合到现存的MRTG配置文件中。

8.1/ 一个完整的配置文档
下面是一个用来查询本地CPU,内存,磁盘和TCP连接信息的配置文件脚本。

## File: /etc/mrtg/server-info.cfg## Configuration file for non bandwidth server statistics### Define global options#LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt,/usr/share/snmp/mibs/TCP-MIB.txtworkdir: /var/www/mrtg/## CPU Monitoring# (Scaled so that the sum of all three values doesn't exceed 100)#Target[server.cpu]:ssCpuRawUser.0&ssCpuRawUser.0:craz33guy@localhost + ssCpuRawSystem.0&ssCpuRawSystem.0:craz33guy@localhost + ssCpuRawNice.0&ssCpuRawNice.0:craz33guy@localhostTitle[server.cpu]: Server CPU LoadPageTop[server.cpu]: < H1 >CPU Load - System, User and Nice Processes< /H1 >MaxBytes[server.cpu]: 100ShortLegend[server.cpu]: %YLegend[server.cpu]: CPU UtilizationLegend1[server.cpu]: Current CPU percentage loadLegendI[server.cpu]: UsedLegendO[server.cpu]:Options[server.cpu]: growright,nopercentUnscaled[server.cpu]: ymwd## Memory Monitoring (Total Versus Available Memory)#Target[server.memory]: 垃圾广告vailReal.0&memTotalReal.0:craz33guy@localhostTitle[server.memory]: Free MemoryPageTop[server.memory]: < H1 >Free Memory< /H1 >MaxBytes[server.memory]: 100000000000ShortLegend[server.memory]: BYLegend[server.memory]: BytesLegendI[server.memory]: FreeLegendO[server.memory]: TotalLegend1[server.memory]: Free memory, not including swap, in bytesLegend2[server.memory]: Total memoryOptions[server.memory]: gauge,growright,nopercentkMG[server.memory]: k,M,G,T,P,X## Memory Monitoring (Percentage usage)#Title[server.mempercent]: Percentage Free MemoryPageTop[server.mempercent]: < H1 >Percentage Free Memory< /H1 >Target[server.mempercent]: ( 垃圾广告vailReal.0&垃圾广告vailReal.0:craz33guy@localhost ) * 100 / ( memTotalReal.0&memTotalReal.0:craz33guy@localhost )options[server.mempercent]: growright,gauge,transparent,nopercentUnscaled[server.mempercent]: ymwdMaxBytes[server.mempercent]: 100YLegend[server.mempercent]: Memory %ShortLegend[server.mempercent]: PercentLegendI[server.mempercent]: FreeLegendO[server.mempercent]: FreeLegend1[server.mempercent]: Percentage Free MemoryLegend2[server.mempercent]: Percentage Free Memory## New TCP Connection Monitoring (per minute)#Target[server.newconns]: tcpPassiveOpens.0&tcpActiveOpens.0:craz33guy@localhostTitle[server.newconns]: Newly Created TCP ConnectionsPageTop[server.newconns]: < H1 >New TCP Connections< /H1 >MaxBytes[server.newconns]: 10000000000ShortLegend[server.newconns]: c/sYLegend[server.newconns]: Conns / MinLegendI[server.newconns]: InLegendO[server.newconns]: OutLegend1[server.newconns]: New inbound connectionsLegend2[server.newconns]: New outbound connectionsOptions[server.newconns]: growright,nopercent,perminute## Established TCP Connections#Target[server.estabcons]: tcpCurrEstab.0&tcpCurrEstab.0:craz33guy@localhostTitle[server.estabcons]: Currently Established TCP ConnectionsPageTop[server.estabcons]: < H1 >Established TCP Connections< /H1 >MaxBytes[server.estabcons]: 10000000000ShortLegend[server.estabcons]:YLegend[server.estabcons]: ConnectionsLegendI[server.estabcons]: InLegendO[server.estabcons]:Legend1[server.estabcons]: Established connectionsLegend2[server.estabcons]:Options[server.estabcons]: growright,nopercent,gauge## Disk Usage Monitoring#Target[server.disk]: dskPercent.1&dskPercent.2:craz33guy@localhostTitle[server.disk]: Disk Partition UsagePageTop[server.disk]: < H1 >Disk Partition Usage /home and /var< /H1 >MaxBytes[server.disk]: 100ShortLegend[server.disk]: %YLegend[server.disk]: UtilizationLegendI[server.disk]: /homeLegendO[server.disk]: /varOptions[server.disk]: gauge,growright,nopercentUnscaled[server.disk]: ymwd8.2/ 测试配置
下一步就是测试MRTG能否正确加载这个配置文件。

重启SNMP确认snmpd.conf中的磁盘监测命令被激活。运行/usr/bin/mrtg加上配置文件名三次。

[root@bigboy tmp]# service snmpd restart[root@bigboy tmp]# env LANG=C /usr/bin/mrtg /etc/mrtg/server-stats.cfg8.3/ 建立一个新的MRTG索引页,并包含这个文件
使用第22章中讲到的indexmaker命令包括原来的配置文件(/etc/mrtg/mrtg.cfg)再加上你所创建的新的配置文件(/etc/mrtg/server-stats.cfg)。

[root@bigboy tmp]# indexmaker --output=/var/www/mrtg/index.html \/etc/mrtg/mrtg.cfg /etc/mrtg/server-stats.cfg8.4/ 使用新的MRTG文档来配置cron
最后一步就是确认MRTG使用新的配置文件每隔5分钟就收集一下服务器的资料。只要在/etc/cron.d/mrtg中添加下面一行就可以了:

0-59/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/server-stats.cfg一些Linux版本可能要求你修改/etc/crontab文件。你还可能需要使用命令service crond restart来重新启动cron以便让它读取新的配置文件。

[root@bigboy tmp]# service crond restart9/ 监测非Linux系统的MIB的值
到目前为止,我们所谈论的MIB都是Linux系统的。其它类型的系统需要额外的MIBs,这些MIBs的安装可能在用户指南中也没有说清楚,或者根本不可用。在这种情况下,你需要知道精确的OID的值。

9.1/ 情景
设想一下你们的小公司购买了二手的Cisco交换机来连接Web服务器到Internet上。在第22章中MRTG的基本配置,“监测系统性能”,提供了有关带宽的统计,但是你还想知道系统的CPU负载。从Cisco网站上下载MIBs,然后使用snmpget,但却不会成功。你不知道下一步该如何去做了。去查找OIDs。

当MIB的值失败时,最好去查找精确的OID的值。像多数的网络设备制造商一样,Cisco有一个FTP站点可供你下载MIBs和OIDs。Cisco的SNMP文件可以在ftp.cisco.com的/pub/mibs目录当中;而OIDs在它下面的oid目录中。

在查看了所有的OID文件之后,你认为CISCO-PROCESS-MIB.oid会包含需要的值,并在其中找到下面这些:

"cpmCPUTotalPhysicalIndex"  "1.3.6.1.4.1.9.9.109.1.1.1.1.2""cpmCPUTotal5sec"           "1.3.6.1.4.1.9.9.109.1.1.1.1.3""cpmCPUTotal1min"           "1.3.6.1.4.1.9.9.109.1.1.1.1.4""cpmCPUTotal5min"           "1.3.6.1.4.1.9.9.109.1.1.1.1.5""cpmCPUTotal5secRev"        "1.3.6.1.4.1.9.9.109.1.1.1.1.6""cpmCPUTotal1minRev"        "1.3.6.1.4.1.9.9.109.1.1.1.1.7""cpmCPUTotal5minRev"        "1.3.6.1.4.1.9.9.109.1.1.1.1.8"9.2/ 测试OIDs
就像你看到的一样,所有的OIDs都是开始于1.3.6.1.4.1.9.9.109.1.1.1.1.的一棵相同的树的一部分。这个OIDs提供的值可能不完整,所以最好先用snmpwalk命令来获取根下面所有的值。

[root@bigboy tmp]# snmpwalk -v1 -c craz33guy cisco-switch 1.3.6.1.4.1..9.9.109.1.1.1.1SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.1 = INTEGER: 0SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.3.1 = Gauge32: 32SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.4.1 = Gauge32: 32SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.5.1 = Gauge32: 32[root@bigboy tmp]#虽然列在OID的文件当中,但1.1.1.1.6、1.1.1.1.7和1.1.1.1.8却没有被支持。这里注意一下,SNMP将原始OID文件中OID值的开始部分(1.3.6.1.4.1)映射为单词enterprise。

接下来,我们使用命令来设定snmpwalk返回的一个OID值。

[root@bigboy tmp]# snmpget -v1 -c craz33guy cisco-switch \enterprises.9.9.109.1.1.1.1.5.1SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.5.1 = Gauge32: 33[root@bigboy tmp]#成功了!现在你就可以使用这个OID值,enterprises.9.9.109.1.1.1.1.5.1用于MRTG查询了。

10/ 用RRDtool来给MRTG加速
MRTG是一个非常有用的程序,但它有一些限制。每次设备被采集时,所有的曲线和Web页面都要重新建立一次。这就有可能使你的MRTG服务器过载,尤其是当你有大量的设备要监测时,只是那曲线就有可能需要超出5分钟的时间来生成。RRDtool是MRTG的作者写得另一个程序,它能够存储通用的数据,却按照需要来产生曲线。将与整合起来将会有一个引人注目的效率提升。下面实例演示如何快速实施一个通用的解决办法。

10.1/ 情景
RRDtool的用途需要降低监测服务器的负载,由于大量的每次采集产生的MRTG曲线而使服务器的性能较差。
由于空间的制约,RRD数据库需要存放在/var分区中。
服务器有默认Apache对CGI支持的配置,用于产生位于/var/www/cgi-bin目录中的动态内容。
需要一个用RRDtool格式读取MRTG数据的脚本。
MRTG的配置文档为/etc/mrtg/mrtg.cfg。

下面是如何操作:

10.2/ 安装RRDtool
RRDtool和RRDtool PERL模块可以从下面这个站点下载:http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
但安装则比较严格,因为安装程序在错误的目录当中可能要寻找支持的库文件。

幸运的是,预先要安装的RRDtool和RRDtool perl包现在已经是多数linux发行版的一部分了。

10.3/ 用RRDtool格式来存储MRTG数据
整合的操作可以在几分钟内完成,但步骤却是严格的:
1. 第一步是添加一些新的选项到你的cfgmaker命令中。第一个指示MRTG只存储rrdtool格式的数据,第二个定义数据存储目录/var/mrtg。为了增添安全性,这个目录应该在你的Web服务器根目录的外部。

--global 'LogFormat: rrdtool' --global "workdir: /var/mrtg"  --global 'IconDir: /mrtg'最后,你还应该指明一个icon目录,用于存储所有未分类的MRTG页面的图标。RRD的Web接口脚本,我们会在后面用一个不正确(?什么意思)的目录来安装。图标目录/mrtg实际上也是URL的一部分。在Fedora中,我们使用Apache默认的配置,这里MRTG的图标文件存放在/var/www/mrtg目录中。如果你使用了一个非默认的Apache的MRTG配置或使用其它的Linux的发行版本或不同的版本,你要将这些图标复制到自定义的目录当中。

2.第二步建立一个数据repository(库?)目录/var/mrtg,改变它的所有者为apache的用户(通常为apache或nobody),并使它能运行默认的Linux服务器程序。

[root@bigboy tmp]# mkdir /var/mrtg[root@bigboy tmp]# chown apache /var/mrtg[root@bigboy tmp]#注:如果你使用的是SELinux,那你要将目录的背景(context ?)与目录/var/www/html相匹配,这样当你的apache进程能够读取的CGI脚本需要的那些数据库文件。下面这些命令比较这两个目录的背景,并设置为正确的/var/mrtg。

[root@bigboy tmp]# ls -alZ /var/www | grep htmldrwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t html[root@bigboy tmp]# ls -alZ /var | grep mrtgdrwxr-xr-x  apache   root     root:object_r:var_t              mrtg[root@bigboy tmp]# chcon -R -u system_u -r object_r -t httpd_sys_content_t /var/mrtg[root@bigboy tmp]#3. 我们现在需要测试一下RRD文件是否正确地被建立了。使用/etc/mrtg/mrtg.cfg作为源配置文件来运行MRTG,然后测试是否目录/var/mrtg中的内容被改变了。
成功!

[root@bigboy tmp]# ls /var/mrtg/localhost_192.168.1.100.rrd[root@bigboy tmp]#这些文件被正常建立了。接下来,我们需要找一个脚本来读取新的数据格式,并把它用Web格式表现出来。这就是我们接下来要讨论的。

10.4/ MRTG/RRDtool整合脚本
MRTG的官方网站建议mrtg-rrd站点(http://www.fi.muni.cz/~kas/mrtg-rrd/)上有个很好用的脚本。让我们继续来安装它。

1. 使用wget来下载脚本。这个站点上有几个不同的版本,下载最新的那个。

[root@bigboy tmp]# wget ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/mrtg-rrd/mrtg-rrd-0.7.tar.gz--12:42:12--  ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/mrtg-rrd/mrtg-rrd-0.7.tar.gz=> `mrtg-rrd-0.7.tar.gz'Resolving ftp.linux.cz... 147.251.48.205Connecting to ftp.linux.cz|147.251.48.205|:21... connected.Logging in as anonymous ... Logged in!.........15:24:50 (53.53 KB/s) - `mrtg-rrd-0.7.tar.gz' saved [20863][root@bigboy tmp]# lsmrtg-rrd-0.7.tar.gz[root@bigboy tmp]#2. 解压

[root@bigboy tmp]# tar -xzvf mrtg-rrd-0.7.tar.gzmrtg-rrd-0.7/mrtg-rrd-0.7/COPYINGmrtg-rrd-0.7/FAQmrtg-rrd-0.7/TODOmrtg-rrd-0.7/Makefilemrtg-rrd-0.7/mrtg-rrd.cgimrtg-rrd-0.7/ChangeLog[root@bigboy tmp]#3. 建立/var/www/cgi-bin/mrtg目录,拷贝文件mrtg-rrd.cgi到里面。

[root@bigboy tmp]# mkdir -p /var/www/cgi-bin/mrtg[root@bigboy tmp]# cp mrtg-rrd-0.7/mrtg-rrd.cgi /var/www/cgi-bin/mrtg/[root@bigboy tmp]#4. 编辑mrtg-rrd.cgi文件,使它调用文件/etc/mrtg/mrtg.cfg的详细配置,或者你将目录当中所有的.cfg文件都包含进去。
单个文件:

## File: mrtg-rrd.cgi (Single File)## EDIT THIS to reflect all your MRTG config filesBEGIN { @config_files = qw(/etc/mrtg/mrtg.cfg); }多个文件:

## File: mrtg-rrd.cgi (multipl .cfg files)## EDIT THIS to reflect all your MRTG config filesBEGIN { @config_files = ; }现在,你就可以通过浏览器来访问你的MRTG RRD曲线了:

http://ip/cgi-bin/mrtg/mrtg-rrd.cgi一旦安装上去,RRDtool的操作对MRTG来说就是透明的了。你要记得当你添加新的MRTG配置时也要添加RRD的声明,添加配置文件到CGI脚本中。我们的服务器终于可以喘口气了^-^.

11/ 疑难解答
这个有关MRTG高级应用的疑难解答与我们在第22章的有些类似。
1.确认目标设备的IP和community串
2.确认你能对目标设备进行SNMP walk。如果不能,修改目标设备上的访问控制或防火墙规则,它们可能阻碍SNMP经过。
3.确认你能够在你的MRTG配置文件中使用snmpget来获得特定OID的值。
4.检查MRTG参数来确认它们都是正确的。如果Guage值被定义成相反的counter或vice,那么会使你的曲线经常变成0值。如果你的参数设置为位,那曲线的结果可能是你期望的8倍。
5.在RRDtool初始化的整合里面有一些错误。
下面的消息显示在MRTG配置文件里CGI脚本不正确

Error: Cannot open config file: No such file or directory“权限禁止”通常是由于权限或SELinuxcontexts不正确而导致的。

Error: RRDs::graph failed, opening '/var/mrtg/localhost_192.168.1.100.rrd': Permission denied在/var/log/httpd/errorlog中“文件或目录不存在”的错误可能是MRTG的IconDir配置不正确所致。

[Wed Jan 04 15:42:13 2006] [error] [client 192.168.1.102] File does not exist: /var/www/html/var,referer: http://bigboy/cgi-bin/mrtg/mrtg-rrd.cgi/[Wed Jan 04 15:45:46 2006] [error] [client 192.168.1.102] script. not found or unable to stat:/var/www/cgi-bin/mrtg/mrtg-l.png, referer: http://bigboy/cgi-bin/mrtg/mrtg-rrd.cgi/这些快捷的步骤在多数情况下是充足的了,也使你的网络更加可管理了。

12/ 总结
使用本章中的指南,你应该可以对任何类型的设备绘制多数可用的SNMP MIB的值了。MRTG是一个优秀的、灵活的监测工具,它应该被任何系统管理员考虑作为服务器管理计划的一部分。

mrtg.cfg

# Created by
# /usr/bin/cfgmaker --global 'WorkDir: /var/www/mrtg' --global 'Options[_]: growright,bits' --ifref=ip --output /etc/mrtg/mrtg.cfg public@localhost


### Global Config

EnableIPv6: no
WorkDir: /var/www/mrtg
Language: gb2312
LoadMIBs:/usr/share/snmp/mibs/UCD-SNMP-MIB.txt,/usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt,/usr/share/snmp/mibs/TCP-MIB.txt


######################################################################
# System: host.abc.com
# Description: Linux host.abc.com 2.6.11-2.QL #1 Wed Mar 16 15:22:24 CST 2005 i686
# Contact: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
# Location: Unknown (edit /etc/snmp/snmpd.conf)
######################################################################

#================================================================================
#监控内网网卡
#Descr: 'eth0' | Name: '' | Ip: '192.168.0.254' | Eth: '00-e0-4c-ab-55-63'
#================================================================================

Target[eth0_lan]: /192.168.0.254:public@localhost:
Options[eth0_lan]: growright
Directory[eth0_lan]: eth0
MaxBytes[eth0_lan]: 100000000
Kmg[eth0_lan]: ,k,M,G,T,P
YLegend[eth0_lan]: Bytes per Second
ShortLegend[eth0_lan]: B/s
Legend1[eth0_lan]: 每秒流入量 (单位 Bytes)
Legend2[eth0_lan]: 每秒流出量 (单位 Bytes)
LegendI[eth0_lan]: 流入:
LegendO[eth0_lan]: 流出:
Title[eth0_lan]: eth0网络流量[流入+流出]
PageTop[eth0_lan]: <H1>eth0网络流量[流入+流出]</H1>
 <TABLE>
  <TR><TD>系统 :</TD><TD>host.abc.com</TD></TR>
  <TR><TD>描述 :</TD><TD>LAN网络接口eth0的网络流量(Bytes/s)</TD></TR>
  <TR><TD>位置 :</TD><TD> Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>100 MBytes/s</TD></TR>
  <TR><TD>管理员:</TD><TD>hajd@optdevelop.com</TD></TR>
  <TR><TD>说明 :</TD><TD>eth0 ip=192.168.0.254</TD></TR>
 </TABLE>


#================================================================================
#监控外网网卡
#Descr: 'eth1' | Name: '' | Ip: '61.235.102.115' | Eth: '00-e0-4c-3a-cf-ef'
#================================================================================

Target[eth1_lan]: /61.235.102.115:public@localhost:
Options[eth1_lan]: growright
Directory[eth1_lan]: eth1
MaxBytes[eth1_lan]: 2000000
Kmg[eth1_lan]: ,k,M,G,T,P
YLegend[eth1_lan]: Bytes per Second
ShortLegend[eth1_lan]: B/s
Legend1[eth1_lan]: 每秒流入量 (单位 Bytes)
Legend2[eth1_lan]: 每秒流出量 (单位 Bytes)
LegendI[eth1_lan]: 流入:
LegendO[eth1_lan]: 流出:
Title[eth1_lan]: eth0网络流量[流入+流出]
PageTop[eth1_lan]: <H1>eth1网络流量[流入+流出]</H1>
 <TABLE>
  <TR><TD>系统 :</TD><TD>host.abc.com</TD></TR>
  <TR><TD>描述 :</TD><TD>WAN网络接口eth1的网络流量(Bytes/s)</TD></TR>
  <TR><TD>位置 :</TD><TD> Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>2 MBytes/s</TD></TR>
  <TR><TD>管理员:</TD><TD>hajd@optdevelop.com</TD></TR>
  <TR><TD>说明 :</TD><TD>eth0 ip=61.235.102.115</TD></TR>
 </TABLE>


#================================================================================
#监控主机连续运行时间[运行天数]
#注:不能从SNMP中直接取得数据,使用perl script采集数 (/etc/mrtg/bin/mrtg-upday.pl)
#================================================================================

Target[upday]: `/etc/mrtg/bin/mrtg-updays.pl`
Options[upday]: gauge,nopercent,growright
Directory[upday]: upday
MaxBytes[upday]: 1000
YLegend[upday]: Up Days
ShortLegend[upday]: 天
Legend1[upday]: 主机连续运行时间(天)
Legend2[upday]:
LegendI[upday]: 运行时间:
LegendO[upday]:
Title[upday]: 主机连续运行时间[运行天数]
PageTop[upday]: <h1>主机连续运行时间[运行天数]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>host.abc.com</TD></TR>
  <TR><TD>描述:</TD><TD>主机连续运行的时间(天)</TD></TR>
  <TR><TD>位置:</TD><TD>ShenZhen</TD></TR>
  <TR><TD>最大值:</TD><TD>1000天</TD></TR>
  <TR><TD>管理员:</TD><TD>user@abc.com</TD></TR>
  <TR><TD>说明:</TD><TD>&nbsp</TD></TR>
 </TABLE>


#================================================================================
#监控系统负载[1分钟+15分钟]
#MIB: .iso.org.dod.internet.private.enterprises.ucdavis.laTable.laEntry.laLoadInt
#注:打开snmpd中的监控功能,在/etc/snmp/snmpd.conf中加入
# view systemview included .1.3.6.1.4.1.2021.10.1.5
#================================================================================

Target[systemload]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.3:public@localhost:
Options[systemload]: gauge,nopercent,growright
Directory[systemload]: load
MaxBytes[systemload]: 3000
YLegend[systemload]: System Load
ShortLegend[systemload]:
Legend1[systemload]: 最近1分钟系统负载(x 100)
Legend2[systemload]: 最近15分钟系统负载(x 100)
LegendI[systemload]: 1分钟负载:
LegendO[systemload]: 15分钟负载:
Title[systemload]: 系统负载(x100)[1分钟+15分钟]
PageTop[systemload]: <h1>系统负载(x100)[1分钟+15分钟]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>host.abc.com</TD></TR>
  <TR><TD>描述:</TD><TD>系统负载(x100)[1分钟+15分钟]</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>30 (x 100)</TD></TR>
  <TR><TD>管理员:</TD><TD>user@abc.com</TD></TR>
  <TR><TD>说明:</TD><TD>&nbsp</TD></TR>
 </TABLE>


#================================================================================
#监控CPU负载[用户+闲置]
#MIB: .iso.org.dod.internet.private.enterprises.ucdavis.systemStats
#注:打开snmpd中的监控功能,在/etc/snmp/snmpd.conf中加入
# view systemview included .1.3.6.1.4.1.2021.11
#================================================================================

Target[cpuload]: .1.3.6.1.4.1.2021.11.50.0&1.3.6.1.4.1.2021.11.53.0:public@localhost:
Options[cpuload]: nopercent,growright
Directory[cpuload]: cpu
MaxBytes[cpuload]: 100
Unscaled[cpuload]: dwym
YLegend[cpuload]: CPU Utilization
ShortLegend[cpuload]: %;
Legend1[cpuload]: CPU用户负载(%)
Legend2[cpuload]: CPU闲置(%)
LegendI[cpuload]: 用户:
LegendO[cpuload]: 闲置:
Title[cpuload]: CPU负载[用户+闲置]
PageTop[cpuload]: <h1>CPU负载[用户+闲置]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>host.abc.com</TD></TR>
  <TR><TD>描述:</TD><TD>CPU负载[用户+闲置]</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>100</TD></TR>
  <TR><TD>管理员:</TD><TD>user@abc.com</TD></TR>
  <TR><TD>说明:</TD><TD></TD></TR>
 </TABLE>


#================================================================================
#监控内存使用量[Mem+Swap]
#MIB: .iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed
#注:打开snmpd中的监控,在/etc/snmp/snmpd.conf中加入
# view systemview included .1.3.6.1.2.1.25.2.3.1.6
#================================================================================

Target[memory]: .1.3.6.1.2.1.25.2.3.1.6.2&.1.3.6.1.2.1.25.2.3.1.6.3:public@localhost:
Options[memory]: gauge,growright
Directory[memory]: mem
MaxBytes1[memory]: 514588
MaxBytes2[memory]: 514588
Kmg[memory]: k,M,G,T,P
Kilo[memory]: 1024
Unscaled[memory]: dwym
YLegend[memory]: Bytes
ShortLegend[memory]: B
Legend1[memory]: 已用Mem (Bytes)
Legend2[memory]: 已用Swap(Bytes)
LegendI[memory]: 已用Mem :
LegendO[memory]: 已用Swap:
Title[memory]: 内存使用量[Mem+Swap]
PageTop[memory]: <h1>内存使用量[Mem+Swap]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>host.abc.com</TD></TR>
  <TR><TD>描述:</TD><TD>Memory和Swap的使用量(Bytes)</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>Mem=502M,Swap=512M</TD></TR>
  <TR><TD>管理员:</TD><TD>user@abc.com</TD></TR>
  <TR><TD>说明:</TD><TD>&nbsp</TD></TR>
 </TABLE>


#================================================================================
#监控系统进程数[进程数]
#MIB: .iso.org.dod.internet.mgmt.mib-2.host.hrSystem.hrSystemProcesses
#注:打开snmpd中的系统进程数监控,在/etc/snmp/snmpd.conf中加入
# view systemview included .1.3.6.1.2.1.25.1.6
#================================================================================

Target[process]: .1.3.6.1.2.1.25.1.6.0&.1.3.6.1.2.1.25.1.6.0:public@localhost:
Options[process]: gauge,nopercent,growright
Directory[process]: process
MaxBytes[process]: 1000
YLegend[process]: Processes
ShortLegend[process]: 个
Legend1[process]: 系统进程数(个)
Legend2[process]:
LegendI[process]: 进程数:
LegendO[process]:
Title[process]: 系统进程数[进程数]
PageTop[process]: <h1>系统进程数[进程数]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>host.abc.com</TD></TR>
  <TR><TD>描述:</TD><TD>系统进程数(个)</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>1000个</TD></TR>
  <TR><TD>管理员:</TD><TD>user@abc.com</TD></TR>
  <TR><TD>说明:</TD><TD>&nbsp</TD></TR>
 </TABLE>


#================================================================================
#监控硬盘空间[系统盘+数据盘]
#MIB: .iso.org.dod.internet.private.enterprises.ucdavis.dskTable.dskEntry.dskUsed
#注1:打开snmpd中的监控功能,在/etc/snmp/snmpd.conf中加入
# view systemview included .1.3.6.1.4.1.2021.9.1.8
#注2:打开snmpd中的系统盘和数据盘监控功能,在/etc/snmp/snmpd.conf中加入
# disk / 100000
# disk /mnt/data 500000
#================================================================================

Target[disk]: .1.3.6.1.4.1.2021.9.1.8.1&.1.3.6.1.4.1.2021.9.1.8.2:public@localhost:
Options[disk]: gauge,growright
Directory[disk]: disk
MaxBytes1[disk]: 3000000
MaxBytes2[disk]: 70000000
Kmg[disk]: k,M,G,T,P
Kilo[disk]: 1024
Unscaled[disk]: dwym
YLegend[disk]: Bytes
ShortLegend[disk]: B
Legend1[disk]: 系统盘已用空间
Legend2[disk]: 数据盘已用空间
LegendI[disk]: 系统已用:
LegendO[disk]: 数据已用:
Title[disk]: 硬盘空间[系统盘+数据盘]
PageTop[disk]: <h1>硬盘空间[系统盘+数据盘]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>host.abc.com</TD></TR>
  <TR><TD>描述:</TD><TD>系统盘=/(/dev/hda3); 数据盘=/data(/dev/hda5)</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>系统盘=3.0GB; 数据盘=70GB</TD></TR>
  <TR><TD>管理员:</TD><TD>user@abc.com</TD></TR>
  <TR><TD>说明:</TD><TD>&nbsp;</TD></TR>
 </TABLE>


#================================================================================
#监控打开的TCP连接数[TCP连接数]
#MIB: .iso.org.dod.internet.mgmt.mib-2.tcp.tcpCurrEstab
#注:打开snmpd中的监控功能,在/etc/snmp/snmpd.conf中加入
# view systemview included .1.3.6.1.2.1.6.9
#================================================================================

Target[tcpopen]: .1.3.6.1.2.1.6.9.0&.1.3.6.1.2.1.6.9.0:public@localhost:
Options[tcpopen]: gauge,nopercent,growright
Directory[tcpopen]: tcpopen
MaxBytes[tcpopen]: 1000
YLegend[tcpopen]: Tcp Connections
ShortLegend[tcpopen]: 个
Legend1[tcpopen]: 打开的TCP连接数(个)
Legend2[tcpopen]:
LegendI[tcpopen]: TCP连接数:
LegendO[tcpopen]:
Title[tcpopen]: TCP连接数[TCP连接数]
PageTop[tcpopen]: <h1>TCP连接数[TCP连接数]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>host.abc.com</TD></TR>
  <TR><TD>描述:</TD><TD>打开的TCP连接数(个)</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>1000个</TD></TR>
  <TR><TD>管理员:</TD><TD>user@abc.com</TD></TR>
  <TR><TD>说明:</TD><TD>&nbsp</TD></TR>
 </TABLE>