Dec 19

[原]使用MRTG画图进行监控 不指定

linuxing , 17:02 , 网络服务 » 性能监控 , 评论(3) , 引用(0) , 阅读(32193) , Via 本站原创 | |
   MRTG通常认为是一个性能监控工具,有着很长的使用历史,很多网管都使用它来对系统进行监控。实际上,它真正的作用是一个画图工具。它可以接受一些数值参数,并根据这些值构建一个二维图形以供监控使用。最常见的就是获取设备的snmp信息,例如网络流量,然后生成图形。还可以从脚本得到CPU、Disk I/O、内存的数据,而呈现直观的图形。
   虽然其功能有限,而且已经逐步被rrdtool代替。但因为大部分发行版都自带MRTG软件包,使用也非常简单,所以,在小范围的网络环境中,还是有其用武之地的。
   为方便说明,我先以一个最简单的例子:从snmp获取网络流量,使用MRTG显示为例来说明。及后再补充从其他方式获取数据的方式。
一、系统平台
以红旗DC Server 5.0为例:
# rpm -qa|grep mrtg
mrtg-2.10.15-1

此外,为从设备得到网络数据,最简单的方式就是从snmp获取信息。还有,mrtg会生成png文件,并需要放到web上显示,所以,最少需要有如下的支持包:
引用
net-snmp 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  httpd(apache)

包括但不限于以上版本和文件。

二、打开SNMP权限
是否打开SNMP服务,并不是MRTG使用的条件。从SNMP获取设备信息是比较方便而标准的办法。
Linux下通常就是使用net-snmp(原称ucd-snmp),默认情况,其提供一个public的community供使用,但并没有打开允许接入的权限。
snmp的agent配置文件在:/etc/snmp/snmpd.conf
1、允许mib2库读取信息
修改:
引用
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  systemview none none

为:
引用
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  mib2 none none

2、使snmp信息通过mib2库显示
修改:
引用
#view mib2   included  .iso.org.dod.internet.mgmt.mib-2 fc

为:
引用
view mib2   included  .iso.org.dod.internet.mgmt.mib-2 fc

3、修改标识
把:
引用
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)

修改为可标识该主机的信息:
引用
syslocation PrintServer
syscontact Root <root@localhost>

MRTG可以读到该信息的。

4、启动snmpd服务

# service snmpd start

校验:
引用
# netstat -ln|grep 199
tcp        0      0 0.0.0.0:199                 0.0.0.0:*                   LISTEN

三、配置MRTG
MRTG分如下两部分:
引用
a)工作目录,存放图形数据,供httpd显示
b)配置文件

1、创建工作目录

# mkdir /var/www/html/mrtg

存在于/var/www/mrtg目录可以不用理会。

2、生成配置文件
在/etc/mrtg目录有一个mrtg.cfg文件,但太简单,我们需要重新生成一个。

# cfgmaker --output=/etc/mrtg/mailmrtg.cfg public@192.168.228.153

其中,public是snmp的community,192.168.228.153是其对应的主机IP地址。

3、设定全局参数
上述命令会通过snmp搜索主机上所有的网络,并自动生成对应的参数。可根据实际情况排除不必要的网络接口,例如:sit0、lo等,然后修改剩余的标识。

# vi mailmrtg.cfg

设定工作目录:
引用
WorkDir: /var/www/html/mrtg

4、设定网络标识
以其中一个网卡为例:
引用
Target[192.168.228.153_2]: 2:public@192.168.228.153:
SetEnv[192.168.228.153_2]: MRTG_INT_IP="192.168.228.153" MRTG_INT_DESCR="bond0"
MaxBytes[192.168.228.153_2]: 12500000
Title[192.168.228.153_2]: Traffic Analysis for 2 -- printserver
PageTop[192.168.228.153_2]: <H1>Traffic Analysis for 2 -- printserver</H1>
<TABLE>
  <TR><TD>System:</TD>     <TD>printserver in Unknown (edit /etc/snmp/snmpd.conf)</TD></TR>
  <TR><TD>Maintainer:</TD> <TD>Root &lt;root@localhost&gt; (configure /etc/snmp/snmp.local.conf)</TD></TR>
  <TR><TD>Description:</TD><TD>bond0  </TD></TR>
  <TR><TD>ifType:</TD>     <TD>ethernetCsmacd (6)</TD></TR>
  <TR><TD>ifName:</TD>     <TD></TD></TR>
  <TR><TD>Max Speed:</TD>  <TD>12.5 MBytes/s</TD></TR>
  <TR><TD>Ip:</TD>         <TD>192.168.228.153 (printserver)</TD></TR>
</TABLE>

其中:
引用
[192.168.228.153_2]:是一个关键标识,属于该标识的都属于同一组;
2:public@192.168.228.153:是从那里获取snmp信息,前面的2用于区分多个网卡设备,与snmp端相同;
SetEnv:是从snmp获取网络信息的参数;
MaxBytes:标识图中最大的纵向数据值;
Title:图的标题
PageTop:详细内容

修改为:
引用
Target[192.168.228.153_2]: 2:public@192.168.228.153:
SetEnv[192.168.228.153_2]: MRTG_INT_IP="192.168.228.153" MRTG_INT_DESCR="bond0"
MaxBytes[192.168.228.153_2]: 12500000
Title[192.168.228.153_2]: Traffic Analysis for bond0 -- printserver
PageTop[192.168.228.153_2]: <H1>Traffic Analysis for bond0 -- printserver</H1>
<TABLE>
  <TR><TD>System:</TD>     <TD>PrintServer in RedFlag DC Server 5.0</TD></TR>
  <TR><TD>Maintainer:</TD> <TD>Root &lt;root@localhost&gt;</TD></TR>
  <TR><TD>Description:</TD><TD>bond0  </TD></TR>
  <TR><TD>ifType:</TD>     <TD>ethernetCsmacd (6)</TD></TR>
  <TR><TD>ifName:</TD>     <TD></TD></TR>
  <TR><TD>Max Speed:</TD>  <TD>12.5 MBytes/s</TD></TR>
  <TR><TD>Ip:</TD>         <TD>192.168.228.153 (printserver)</TD></TR>
</TABLE>

其余的网卡可注释,或删除,或参考配置。

5、生成index.html

# indexmaker --output=/var/www/html/mrtg/index.html --title=PrintServer /etc/mrtg/mailmrtg.cfg

6、由数据生成图表

# mrtg /etc/mrtg/mailmrtg.cfg

※注:由于开始没有旧的日志数据,所以前两次会报警告:
引用
Rateup WARNING: /usr/bin//rateup could not read the primary log file for 192.168.228.153_2
Rateup WARNING: /usr/bin//rateup The backup log file for 192.168.228.153_2 was invalid as well

当再运行两次后即会正常。若出现Error信息,请重新查看前面的配置是否有误!

7、修改默认httpd的mrtg配置
修改/etc/httpd/conf.d/mrtg.conf为:
引用
Alias /mrtg /var/www/html/mrtg

<Location /mrtg>
   Order deny,allow
   #Deny from all
   #Allow from 127.0.0.1
   #Allow from ::1
   # Allow from .example.com
   Allow from all
</Location>

重启httpd服务:

# service httpd restart

※注:仅用于说明演示,并没有考虑太多的权限问题,请自行解决。

8、查看输出页面
引用
http://ip/mrtg/

点击在新窗口中浏览此图片

9、加入计划任务
若一切正常,则把mrtg命令加入计划任务即可。
在/etc/cron.d/mrtg加入:
引用
*/5 * * * * root /usr/bin/mrtg /etc/mrtg/mailmrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok

表示每5分钟执行一次。

四、参考资料
偵測 Linux 上面的流量
SNMP Man Pages
MRTG 配置完整手册
MRTG 配置完整手册(CU讨论)
安装配置MRTG-2.15.1
Tags: ,
在线等
2009/10/16 13:05
在OPENVZ下安装失败报352行有错误怎么办啊?
阿光
2008/04/25 09:14
日志数据文件保存在哪个路径下面呀?
在线等
2007/12/21 15:36
我现在架设了一个syslog-ng+mysql+php-syslog-ng.但是他从windows接收到的信息.不能完整入库.就是中文的问题.有时能入库一个中文.但是不能全部.希望能让你指点指点!在线等..我的QQ是:9529219..
linuxing 回复于 2007/12/24 22:37
不好意思,我并没有试过从Windows获取日志信息。但如果英文可以,中文不行。我觉得可以通过修改mysql和apache的语言应可解决。可根据你在windows端发送日志到syslog-ng的软件设置,使用mysql 4.1以上的版本去试试。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]