配置SNMP和MRTG

运维 系统运维
配置SNMP和MRTG:MRTG是利用SNMP协议去查询指定有SNMP协议的设备,定时统计其设备的流量或负载,再将统计结果绘成统计图,从统计图上能很容易、直观地就能查出流量或负载。本文讲述的是用MRTG在IIS上实现入侵检测功能。

  配置snmp mrtg

  版本:Ubuntu 10.04

  安装snmpd(server端) 和 snmp(工具如snmpwalk)

  编辑 vim /etc/default/snmpd

  1.   SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1' 
  2.  

  改成

  1.   SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid' 
  2.  

  这样就可以提供给外部接口调用,Ubuntu默认把snmp服务只对内服务

  编辑vim /etc/snmp/snmpd.conf(***先备份好原来的snmpd.conf文件)

  把默认的项全部注释掉(按照它默认的不知道为什么搞不成功)

  1.   #1  
  2.  
  3.   com2sec notConfigUser default public  
  4.  
  5.   #2  
  6.  
  7.   group notConfigGroup v1 notConfigUser  
  8.  
  9.   group notConfigGroup v2c notConfigUser  
  10.  
  11.   #3  
  12.  
  13.   view systemview included .1.3.6.1.2.1.1  
  14.  
  15.   view systemview included .1.3.6.1.2.1.25.1.1  
  16.  
  17.   view all included .1  
  18.  
  19.   #4  
  20.  
  21.   access notConfigGroup "" any noauth exact all none none  
  22.  
  23.   #下面这两个可以保留没影响  
  24.  
  25.   syslocation Unknown(mj) (configure /etc/snmp/snmpd.local.conf)  
  26.  
  27.   syscontact Root(mj) (configure /etc/snmp/snmpd.local.conf)  
  28.  
  29.   /etc/init.d/snmpd restart 重启snmp服务  
  30.  

  因为我们只关系cpu,内存等负载,所以不需要我们自己写脚本,snmp本身已经有这些功能,看后面常用OID

  1.   snmpwalk -v 1 -c public IP OID  
  2.  

  例子:

  1.   snmpwalk -v 1 -c public 192.168.22.210 .1.3.6.1.4.1.2021.4.6.0  
  2.  

  安装mrtg

  创建/var/www/mrtg网页目录

  编辑vim /etc/mrtg.cfg

  mrtg.cfg可以使用cfgmaker生成

  1.   cfgmaker --global "WorkDir: /var/www/mrtg"  
  2.  
  3.   --global "Options[_]: growright,bits"  
  4.  
  5.   --ifref=ip 
  6.  
  7.   --output /etc/mrtg.cfg  
  8.  
  9.   public@192.168.22.210  
  10.  
  11.   cfgmaker --global "WorkDir: /var/www/mrtg"  
  12.  
  13.   --global "Options[_]: growright,bits"  
  14.  
  15.   --ifref=ip 
  16.  
  17.   public@192.168.22.210  
  18.  

  我们把--output /etc/mrtg.cfg这个选项去掉,把结果直接输出到屏幕,如下

  **************************************************************

  1.   # Created by  
  2.  
  3.   # /usr/bin/cfgmaker --ifref=ip public@192.168.22.210  
  4.  
  5.   ### Global Config Options  
  6.  
  7.   # for UNIX  
  8.  
  9.   # WorkDir: /home/http/mrtg  
  10.  
  11.   # for Debian  
  12.  
  13.   WorkDir: /var/www/mrtg  
  14.  
  15.   # or for NT  
  16.  
  17.   # WorkDir: c:\mrtgdata  
  18.  
  19.   ### Global Defaults  
  20.  
  21.   # to get bits instead of bytes and graphs growing to the right  
  22.  
  23.   # Options[_]: growright, bits  
  24.  
  25.   EnableIPv6: no  
  26.  

  ######################################################################

  1.   # System: mj-desktop  
  2.  
  3.   # Description: Linux mj-desktop 2.6.32-22-generic #36-Ubuntu SMP Thu Jun 3 22:02:19 UTC 2010 i686  
  4.  
  5.   # Contact: Root(mj) (configure /etc/snmp/snmpd.local.conf)  
  6.  
  7.   # Location: Unknown(mj) (configure /etc/snmp/snmpd.local.conf)  
  8.  

  ######################################################################

  1.   ### Interface 1 >> Descr: 'lo' | Name: 'lo' | Ip: '127.0.0.1' | Eth: '' ###  
  2.  
  3.   ### The following interface is commented out because:  
  4.  
  5.   ### * it is a Software Loopback interface  
  6.  
  7.   #  
  8.  
  9.   # Target[192.168.22.210_127.0.0.1]: /127.0.0.1:public@192.168.22.210:  
  10.  
  11.   # SetEnv[192.168.22.210_127.0.0.1]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo" 
  12.  
  13.   # MaxBytes[192.168.22.210_127.0.0.1]: 1250000  
  14.  
  15.   # Title[192.168.22.210_127.0.0.1]: Traffic Analysis for 127.0.0.1 -- mj-desktop  
  16.  
  17.   # PageTop[192.168.22.210_127.0.0.1]:  
  18.  
  19.   Traffic Analysis for 127.0.0.1 -- mj-desktop  
  20.  
  21.   #  
  22.  
  23.   #   #   # System:  # mj-desktop in Unknown(mj) (configure /etc/snmp/snmpd.local.conf)  #  
  24.  
  25.   #   # Maintainer:  # Root(mj) (configure /etc/snmp/snmpd.local.conf)  #  
  26.  
  27.   #   # Description:  # lo   #  
  28.  
  29.   #   # ifType:  # softwareLoopback (24)  #  
  30.  
  31.   #   # ifName:  # lo  #  
  32.  
  33.   #   # Max Speed:  # 1250.0 kBytes/s  #  
  34.  
  35.   #   # Ip:  # 127.0.0.1 (localhost)  #  
  36.  
  37.   #  
  38.  
  39.   #  
  40.  
  41.   ### Interface 2 >> Descr: 'eth0' | Name: 'eth0' | Ip: '192.168.22.210' | Eth: '08-00-27-f9-de-39' ###  
  42.  
  43.   Target[192.168.22.210_192.168.22.210]: /192.168.22.210:public@192.168.22.210:  
  44.  
  45.   SetEnv[192.168.22.210_192.168.22.210]: MRTG_INT_IP="192.168.22.210" MRTG_INT_DESCR="eth0" 
  46.  
  47.   MaxBytes[192.168.22.210_192.168.22.210]: 1250000  
  48.  
  49.   Title[192.168.22.210_192.168.22.210]: Traffic Analysis for 192.168.22.210 -- mj-desktop  
  50.  
  51.   PageTop[192.168.22.210_192.168.22.210]:  
  52.  
  53.   Traffic Analysis for 192.168.22.210 -- mj-desktop  
  54.  
  55.   System:  mj-desktop in Unknown(mj) (configure /etc/snmp/snmpd.local.conf)  
  56.  
  57.   Maintainer:  Root(mj) (configure /etc/snmp/snmpd.local.conf)  
  58.  
  59.   Description:  eth0  
  60.  
  61.   ifType:  ethernetCsmacd (6)  
  62.  
  63.   ifName:  eth0  
  64.  
  65.   Max Speed:  1250.0 kBytes/s  
  66.  
  67.   Ip:  192.168.22.210 (mj-desktop.local)  
  68.  

  **************************************************************

  上面产生的是针对192.168.22.210一台机的模板,我们把它保存成/etc/mrtg.conf,以此为模板慢慢建立起来

  这些网页代码前面要有tab,***按照输出copy进去不要修改

  #Options[_]: growright, bits 把注释去掉

  默认是只监控目标机的eth0网卡,loopback本地网卡监控是注释掉的,这个不用修改

  执行生成页面

  1.   indexmaker -output=/var/www/mrtg/index.html /etc/mrtg.cfg  
  2.  
  3.   env LANG=C /usr/bin/mrtg /etc/mrtg.cfg  
  4.  

  可以把env LANG=C /usr/bin/mrtg /etc/mrtg.cfg加入到crontab里面定时执行(每个5分钟执行一次)

  1.   */5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg.cfg  
  2.  

  ***访问http://localhost/mrtg/

  上面只是针对一台目标机器,我们可以继续上面的cfgmaker来产生再多一台目标机器,把结果输出到屏幕,然后在把对应的项添加到原有的mrtg.conf文件里面

  我们在监控网络流量的基础上添加其它应用

  (自己写脚本,数据不准确,仅供学习)

  1.   #建立一个内存使用情况  
  2.  
  3.   /home/mj/mem.sh  
  4.  
  5.   #!/bin/sh  
  6.  
  7.   total=`snmpwalk -v 1 -c public 192.168.22.210 .1.3.6.1.4.1.2021.4.5.0 | awk '{printf("%d\n",$4/1024);}'`  
  8.  
  9.   free=`snmpwalk -v 1 -c public 192.168.22.210 .1.3.6.1.4.1.2021.4.6.0 | awk '{printf("%d\n",$4/1024);}'`  
  10.  
  11.   echo $(($total-$free))  
  12.  
  13.   echo 0  
  14.  
  15.   Target[mem]: ` /home/mj/mem.sh `  
  16.  
  17.   MaxBytes[mem]: 1024  
  18.  
  19.   Title[mem]: Memory State of WY1 IP 192.168.22.210 Server  
  20.  
  21.   PageTop[mem]:  
  22.  
  23.   Memory State of WY1 IP 192.168.22.210 Server  
  24.  
  25.   ShortLegend[mem]: MB  
  26.  
  27.   kmg[mem]: MB  
  28.  
  29.   kilo[mem]: 1024  
  30.  
  31.   YLegend[mem]: Memory Usage  
  32.  
  33.   Options[mem]: growright,gauge,nopercent  
  34.  
  35.   #建立一个cpu使用情况  
  36.  
  37.   Target[cpu]: `snmpwalk -v 1 -c public 192.168.22.210 .1.3.6.1.4.1.2021.11.11.0 | awk '{printf("%d\n%d\n",100-$4,0);}'`  
  38.  
  39.   MaxBytes[cpu]: 100  
  40.  
  41.   Title[cpu]: CPU State of WY1 IP 192.168.22.210 Server  
  42.  
  43.   PageTop[cpu]:  
  44.  
  45.   CPU State of WY1 IP 192.168.13.103 Server  
  46.  
  47.   kmg[cpu]: %  
  48.  
  49.   YLegend[cpu]: CPU Usage  
  50.  
  51.   Options[cpu]: growright,gauge,nopercent  
  52.  

  这里有个地方要注意是,就是target里面的值必须是两行的,可以加上一个print 0上去,否则执行

  1.   env LANG=C /usr/bin/mrtg /etc/mrtg.cfg会返回  
  2.  
  3.   Expected a Number for 'out' but nothing'错误  
  4.  

  原因是

  1.   Your script must return at least two values on separate lines, just add  
  2.  
  3.   'echo "0"' or something to the end of the script.  
  4.  
  5.   http://oss.oetiker.ch/mrtg/nable-mrtg.en.html#nabble-td831392  
  6.  

  (下面是mrtg提供的sample)

  1.   #cpu  
  2.  
  3.   LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt  
  4.  
  5.   Target[185cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@121.9.243.185 + ssCpuRawSystem.0&ssCpuRawSystem.0:public@121.9.243.185 + ssCpuRawNice.0&ssCpuRawNice.0:public@121.9.243.185  
  6.  
  7.   RouterUptime[185cpu]: public@121.9.243.185  
  8.  
  9.   MaxBytes[185cpu]: 100  
  10.  
  11.   Title[185cpu]: CPU Load  
  12.  
  13.   PageTop[185cpu]:  
  14.  
  15.   Active CPU Load %  
  16.  
  17.   Unscaled[185cpu]: ymwd  
  18.  
  19.   ShortLegend[185cpu]: %  
  20.  
  21.   YLegend[185cpu]: CPU Utilization  
  22.  
  23.   Legend1[185cpu]: Active CPU in % (Load)  
  24.  
  25.   Legend2[185cpu]:  
  26.  
  27.   Legend3[185cpu]:  
  28.  
  29.   Legend4[185cpu]:  
  30.  
  31.   LegendI[185cpu]: Active  
  32.  
  33.   LegendO[185cpu]:  
  34.  
  35.   Options[185cpu]: growright,nopercent  
  36.  

  target是各个值加起来,要把它写成一行

  1.   #mem  
  2.  
  3.   LoadMIBs: /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt  
  4.  
  5.   Target[185mem]:(memTotalReal.0&memTotalReal.0:public@121.9.243.185 - memAvailReal.0&memAvailReal.0:public@121.9.243.185)*100/(memTotalReal.0&memTotalReal.0:public@121.9.243.185)  
  6.  
  7.   Title[185mem]: Percentage Used Memory  
  8.  
  9.   PageTop[185mem]:  
  10.  
  11.   Percentage Used Memory  
  12.  
  13.   options[185mem]: growright,gauge,transparent,nopercent  
  14.  
  15.   Unscaled[185mem]: ymwd  
  16.  
  17.   MaxBytes[185mem]: 100  
  18.  
  19.   YLegend[185mem]: Memory %  
  20.  
  21.   ShortLegend[185mem]: Percent  
  22.  
  23.   LegendI[185mem]: Used  
  24.  
  25.   LegendO[185mem]: Used  
  26.  
  27.   Legend1[185mem]: Percentage Used Memory  
  28.  
  29.   Legend2[185mem]: Percentage Used Memory  
  30.  

  ***上网查找mrtg的现成例子,如net,cpu,mem负载,tcp连接数等等,还有就是记得target里面的空格之类的多余符号可能会导致生成页面失败

【编辑推荐】

Linux下用mrtg监控网络设备端口流量

FreeBSD下安装MRTG监控流量

通过路由器利用MRTG进行网络监控

责任编辑:zhaolei 来源: CSDN
相关推荐

2011-03-31 13:40:36

SNMPMRTG安装

2011-03-30 14:36:58

MRTG配置SNMP

2010-05-28 18:57:15

Mrtg配置

2011-04-01 10:19:13

MrtgCISCO安装

2010-06-01 10:59:18

2010-06-01 09:51:11

2011-03-31 10:26:51

安装MRTG

2010-06-07 18:12:39

mrtg 安装

2011-03-31 10:31:18

MRTG配置

2011-03-30 14:44:28

MRTG

2011-04-02 14:21:46

MRTG安装

2011-04-01 15:00:35

2011-03-31 10:31:18

Ubuntu安装MRTG

2011-03-31 10:31:18

MRTG

2011-04-02 09:20:23

freebsdmrtg安装

2011-11-08 21:55:58

MRTG 配置

2011-03-30 15:05:40

MRTG安装

2011-04-02 13:47:15

Debianmrtg配置

2011-04-01 15:05:45

Redhat配置mrtg

2011-03-31 15:31:03

点赞
收藏

51CTO技术栈公众号