你还在用mrtg吗?--使用cacti监测系统性能

本文我曾于2005年8月15日发表于CU上,当前的软件与安装方法均有所更新。

前言:
在CU 的论坛上经常看到有人问MRTG的问题,还有很多的关于MRTG的精彩文章。MRTG的确是非常好 的东东,但我认为它毕竟已经是一套很旧的软件了,其作者在多年前就已经开发了RRDTool代替该软件,现在已经发展得很成熟。既然有更好的选择,为什么 我们还要用MRTG呢?

第一部分,介绍:

2004年我刚进某公司工作,当时我使用MRTG建立了一套系统,专门监测我们服务器和其它网络设备的流量。

后 来我想将其它的系统性能比如CPU负载、系统负载,网络连接数等一起监测起来。我在网上查找了很多的资料, 也实现了这些功能,但总觉得实现的太费劲,管理起来太麻烦了。比如我有几百个被监测点,分布在不同的机房,而且我需要将这些服务器和网络设备分类,这样的 话我就要将这些被监测点放在不同的mrtg配 置文件中,运行多个crontab,而且自己还写了一些html页面对其进行管理。

Continue reading

监控工具mrtg,cacti,rrdtool,nagios,zabbix比较和安装

cacti 是一个用 rrdtool 来画图的网络监控系统, 通常一说到网络管理, 大家首先想到的经常是 mrtg, 但是 mrtg 画的图简单且难看, rrdtool 虽然画图本领一流, 画出来的图也漂亮, 但是他也就是一个画图工具, 不像 mrtg 那样本身还集成了数据收集功能. cacti 则是集成了各种数据收集功能,然后用 rrdtool 画出监控图形. 其本身界面比起同类系统要漂亮不少. 推荐所有有监控需求的人都去研究一下.
cacti 和 nagios 是不同功用的系统, nagios 适合监视大量服务器上面的大批服务是否正常, 重点并不在图形化的监控, 其集成的很多功能例如报警,都是 cacti 没有或者很弱的cacti 主要用途还是用来收集历史数据和画图, 所以界面比 nagios 漂亮很多.
net-snmp 是一套广泛使用在类 unix 系统上的 snmp 软件, 包含一套 snmp agent 框架 ,一个 snmpd 和 一堆 snmp 工具 , 其前身为 ucd-snmp. 关于 snmp 是什么, 以及如何配置的文章,网上搜一下有一堆一堆的. 在这里就不重复了. Continue reading

FreeBSD 6.1上用net-snmp-5.2.2和mrtg-2.13.2实现多种监控

其实从标题来看,这样的文章已经相当多,不过由于这次使用了最新版的系统和软件,在配置方面比原来的版本有了一些改进,明显更加方便,所以值得记录 一下和大家分享。

这次实现监控的目标是系统网络流量、TCP连接数、CPU负载、system和user的CPU负载、内存消耗、swap使用,另外还可以在此基础 上实现磁盘监控、Mailscanner的垃圾邮件等监控。

首先通过cvsup更新系统源码和ports数到当前的FreeBSD 6.1Release版本,保持系统和软件包的最新版本,然后使用极为方便的ports进行软件安装。

1、安装net-snmp-5.2.2
#cd /usr/ports/net-mgmt/net-snmp
#make install clean
然后就等着系统自动为您下载net-snmp-5.2.2.tar.gz软件包以及关联软件包,ports会自动完成后续的安装。 Continue reading

FreeBSD中用MRTG监测网路流量

1.安装SNMP
一般版本的FreeBSD系统SNMP存放在/usr/ports/net/net-snmp下面,但是有的版本不是。有些版本 在安装Package的时候,除了要安装Net之外,还要安装Net-mgmt里面的SNMP,安装好之后,SNMP就存放在/usr/ports /net-mgmt/net-snmp下面了。下面就是安装过程:
# cd /usr/ports/net-mgmt/net-snmp #snmp的存放路径
# make install clean #安装snmp
# ee /etc/rc.conf
snmpd_enable="YES"
snmpd_flags="-p /var/run/snmpd.pid"
# /etc/netstart
# ee /usr/local/share/snmp/snmpd.conf
rocommunity public
# /usr/local/etc/rc.d/snmpd.sh start #启动snmp Continue reading

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

被监控设备必须支持snmp协议,因为mrtg就是通过snmp协议来获取该设备的端口流量信息。如何在一个网络设备上启用snmp协议呢?

在配置模式下执行如下命令:3550(config)#snmp-server community public ro,启用snmp协议。启用后才能使用mrtg进行监控。

我中心用一台linux服务器监控三台网络设备的流量,其服务器地址为10.66.100.100/16,三台交换机的任一VLAN地址分别为 192.168.3.253,172.19.96.2,10.70.0.1。现为了叙述方便,仅选取10网段的交换机为例进行说明。其他设备方法相同,不 再赘述。

在执行mrtg的各步操作前,linux系统中必须先安装apache服务,用于网页发布。

I、Apache服务的安装

因为mrtg是以网页的形式来显示被监测设备的端口流量信息的,所以必须先安装apache服务。现将安装过程中的几个问题描述如下:

下载apache-2.0.44-2.i586.rpm软件包,安装时系统显示"libssl.so.0  is  needed  by  apache-2.0.44-2.i586.rpm",说明安装apache服务时需要该函数库。

下载openssl-compat-0.9.6m-8.i586.rpm软件包,安装后系统不再出现上述提示,但提示缺少libdb.so.3文件,下载db2-2.4.14-8.i585.rpm软件包,安装后可以正常安装apache2.0。

II、启动Apache服务

在"控制面板"'"服务"项中选中httpd项,进行各种操作。

III、 Apache服务的配置

安装完成后,系统自动在/etc/apache2目录下生成httpd.conf文件,该文件是Apache服务的配置文件,将其中一行修改如下:

<Directory   "/usr/local/apache2/htdocs/mrtg">

此目录即为网页发布目录,后续操作所生成的索引文件都将存放在这个目录中,才能以网页的形式发布出来。

注:给大家介绍一个网站,上面提供了非常全面的rpm包下载,本文中所用的所有rpm包都从该网站下载,非常方便。网址为:http://rpm.pbone.net/

IV、安装MRTG

下载mrtg-2.16.2.tar.gz文件, 解压缩至mrtg-2.16.2目录,命令如下:

[root@localhost lxjun]#tar   -zxvf    mrtg-2.16.2.tar.gz

将mrtg安装至指定目录/usr/local/mrtg-2
[root@localhost mrtg-2.16.2]#./configure   --prefix=/usr/local/mrtg-2
[root@localhost mrtg-2.16.2]#make
[root@localhost mrtg-2.16.2]#make   install

1、 生成.cfg文件

[root@localhost bin]#perl cfgmaker public@10.70.0.1 --global "workdir:/usr/local/apache2/htdocs/mrtg"  --output  mrtg10.70.0.1.cfg

这样即在/usr/local/mrtg-2/bin目录下生成10网段交换机的配置文件mrtg10.70.0.1.cfg

2、编辑配置文件

使用vi编辑器对该文件进行编辑,使其成为一个守护进程运行

在该文件末尾添加runasdaemon:yes,存盘退出。

3、后台运行mrtg,时刻监视设备端口流量

[root@localhost bin]# perl   mrtg    mrtg10.70.0.1.cfg   &

注:若此进程正在运行,应先杀掉后才能正常执行,否则将出现错误提示。在执行此操作前,应先使用[root@localhost bin]# ps  -ef  |grep  mrtg命令查看一下正在运行的关于mrtg的进程,查看结果如下:

root     16004     1  0  Apr03 ?         00:10:37 perl mrtg mrtg192.168.211.1.cfg
root     20778     1  0  Apr04 ?         00:03:50 perl mrtg mrtg172.19.96.2.cfg
root      6277     1  0  09:27 ?          00:00:02 perl mrtg mrtg10.70.0.1.cfg
root      6420  6169  0  09:41   pts/4    00:00:00 grep mrtg

表明此进程正在运行,应使用[root@localhost bin]# kill  -9  6277(PID)先杀掉此进程,再执行此步操作。

4、生成index文件

[root@localhost bin]# perl indexmaker --output=/usr/local/apache2/htdocs/mrtg/index.html mrtg10.70.0.1.cfg

在/usr/local/apache2/htdocs/mrtg目录下生成index.html文件,该文件以图表的形式记录了10网段交换机各端口的流量信息。

更换端口后必须进行的操作

因为MRTG是通过snmp协议的get(  )命令读取交换机设备的MIB库信息,所以更换端口后index文件中获取不到更换后的端口的流量信息,原端口信息也不会在表中自行消失。必须重新执行全部操作。

使用FreeBSD的SNMP+MRTG网络流量分析

、 安装SNMP
一般版本的FreeBSD系统SNMP存放在/usr/ports/net/net-snmp下面,但是有的版本不是。有些版本 在安装Package的时候,除了要安装Net之外,还要安装Net-mgmt里面的SNMP,安装好之后,SNMP就存放在/usr/ports /net-mgmt/net-snmp下面了。下面就是安装过程:
# cd /usr/ports/net-mgmt/net-snmp #snmp的存放路径
# make install clean #安装snmp
# ee /etc/rc.conf
snmpd_enable="YES"
snmpd_flags="-p /var/run/snmpd.pid"
# /etc/netstart
# ee /usr/local/share/snmp/snmpd.conf
rocommunity public
# /usr/local/etc/rc.d/snmpd.sh start #启动snmp

2、 安装mrtg
mrtg根据不同的版本存放的位置不同,一般存放在/usr/ports/net/net-snmp下面,这里介绍的安装过程种mrtg存放在/usr/ports/net-mgmt/mrtg下面。
# cd /usr/ports/net-mgmt/mrtg #mrtg的存放路径
# make install clean #安装mrtg
# cd /home #以下四个命令是建立MRTG
# mkdir http #的WEB目录,具体目录可以
# cd http #根据个人的爱好自己设定
# mkdir mrtg
# cd /usr/local/etc/mrtg
# /usr/local/bin/cfgmaker public@192.168.1.100 > mrtg #创建MRTG的cfg文件
192.168.1.100 :被监控设备的地址
mrtg :是要输出的档案
public :设备设定档的共同的名字(community name) 预设是public,
这个可以在/usr/local/share/snmp/snmpd.conf里面修改
# ee mrtg
WorkDir: /home/http/mrtg #指向已设定的WEB目录
# /usr/local/bin/indexmaker –-title ‘标题’ --output
/home/http/mrtg/index.html mrtg #生成index.html文件
# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg #运行mrtg(如果有错误,就
多运行几次)
#ee /etc/crontab #让mrtg每5分钟运行一次
*/5 * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg

3、 安装apache
apache存放在/usr/ports/www/apache2下面
# cd /usr/ports/www/apache2 #apache2的存放地址
# make install clean #安装apache2
# ee /etc/rc.conf
apache2_enable=”YES”
# /etc/netstart
# ee /usr/local/etc/apache2/httpd.conf #配置虚拟主机
NameVirtualHost *:80

<Directory "/home/http/mrtg">
Options Indexes Includes FollowSymlinks
Allow from all #允许访问
</Directory>

<VirtualHost *:80>
ServerAdmin root@test.com
DocumentRoot /home/http/mrtg
ServerName xxx.xxx.xxx.xxx #安装mrtg的主机地址
DirectoryIndex index.html #前面生成的index.html
ErrorLog /var/log/xxx.xxx.xxx.xxx-error_log
CustomLog /var/log/xxx.xxx.xxx.xxx-access_log common
</VirtualHost>
# /usr/local/etc/rc.d/apache2.sh start #启动apache
打开http://xxx.xxx.xxx.xxx,就可以看到被监控设备的网络信息了。

4、 设置http://xxx.xxx.xxx.xxx的访问权限
监控流量的网页做好之后,接下来就设置访问这个网页的权限。
1) 修改http.conf ,在<Directory "/home/http/mrtg">和</Directoy>
之间加入一行:
AllowOverride All
意思是在/home/http/mrtg下不同目录的访问权限由该目录下的.htaccess文件来控制,而且不同目录的权限策略可互相覆盖
2) 编辑.htaccess 文件
# cd /home/http/mrtg
# mkdir user #建立存放密码文件的文件夹
# ee .htaccess #访问权限控制文件
AuthUserFile /home/http/mrtg/user/pass #用户密码信息存放文件
AuthType Basic #认证类型为基本型
AuthName "cnseaport"
require valid-user #认证方式
3) 建立用户
# htpasswd –c /home/http/mrtg/user/pass admin #建立用户admin
New password: #输入用户秘密
Re-type new password: #再次输入密码
Adding password for user admin #添加用户成功信息
可以建立多个用户
4) 重新启动apache,再次访问http://xxx.xxx.xxx.xxx,这时应该出现一个
身份认证窗口,你需要输入用户名和密码才能访问这个页面。

MRTG FOR WINDOWS 安装指南

MRTG(Multi Router Traffic Grapher),通常讲是一个监控网络链路流量负载的开源软件,它可以从所有运行SNMP协议的设备上(包括服务器、路由器、交换机等)抓取信息。事实上它不仅可以监控网络设备,任何其它的支持SNMP协议的设备都可以做为MRTG的监控对象,并自动生成包含PNG图形格式的HTML文档,通过HTTP 方式显示给用户。

官方的安装指导:http://mrtg.cs.pu.edu.tw/doc/mrtg-nt-guide.en.html

准备安装环境

安装之前,除了MRTG安装程序外,还要下载几个辅助软件。这些软件全部是免费的。
1. 下载MRTG
http://www.mrtg.org

2. 下载ActivePerl
http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl

3. 下载Windows服务安装工具:SERANY.exe 和 INSTSRV.exe
http://www.electrasoft.com/srvany/srvany.htm

安装MRTG

下载了以上软件后就可以开始安装了。事实上在Windows上安装MRTG很简单,因为MRTG是以Perl语言开发的,所以要首先安装一个Perl语言的运行环境出来。

1. 安装ActivePerl

解压ActivePerl的包,在安装目录中找到install.bat文件,运行它即可。在DOS窗口中,安装程序会问一些问题,诸如安装路径、是否要修改环境变量等,可以全部使用缺省设置,一路回车就行了。缺省情况下Perl安装在C:\Perl目录下。完成安装后,打开Windows的环境变量检查一下是否增加了Perl的运行文件路径。

2. 安装MRTG

解压MRTG的包,我用的是MRTG-2.12.2版本。将解压后的目录移到C:\下就行了。

需要注意的地方

(1)、给Windows安装SNMP协议支持
通常由于SNMP是一个建议关闭的协议(因为有安全漏洞),所以Windows 2003不是缺省安装的。不过MRTG就是要用SNMP协议,有什么办法呢,就装一个吧。在“控制面板->增加/删除程序->Windows 组件安装”中,安装SNMP的组件。(打开"Windows 组件向导"-->在“组件”中,单击“管理和监视工具”(但是不要选中或清除其复选框),然后单击“详细信息”。
选中“简单网络管理协议”复选框,然后单击“确定”。)

(2)、修改SNMP的安全设置

如果被监控的机器上也跑Windows的话,这部分就一定要设置(要在被监控方设置,MRTG所在服务器可以不用设置),否则永远也收不到SNMP的消息。
打开Services窗口并找到SNMP服务,打开右键菜单,选择属性。在打开的窗口中找到“安全”选项页。在选项页中有两部分设置,上半部分是指 SNMP服务接受哪种Community指示字,缺省情况下Windows 2003不对任何指示字反馈。我一般都设为“public--READ ONLY”。下半部分可以设置可信任的主机名、IP或是IPX名称。

(3)、修改防火墙

如果你安装了防火墙,要记得打开UDP 161端口,否则也会问题多多。

运行MRTG
好了,总算安装完了。现在可以运行一下MRTG了,看看它的庐山真面目。

打开DOS窗口,首先进入C:\mrtg\bin,然后输入以下命令:

perl cfgmaker public@localhost --global "WorkDir: C:\Inetpub\wwwroot\mrtg" --output mrtg.cfg

这条命令是给MRTG建立一个监控配置文件,监控的对象是localhost,就是本地机器。你也可以用IP地址来代替localhost,或者指向其它的监控主机。(注意:上面这行命令中WorkDir: 与C:盘符之间要有空格!!! 另外C:\Inetpub\wwwroot\mrtg这个目录也可以换成其它目录,不过因为mrtg会在这个工作目录下生成统计图表和网页,所以一般指定为某个站点下的目录,以方便直接从网上查看统计数据)

再键入一个命令:

perl mrtg mrtg.cfg

这个命令会在C:\Inetpub\wwwroot\mrtg目录下建立一些HTML和PNG文件,这些文件就是用户通常看到的流量报表了。

使MRTG成为Windows的服务

SERANY.exe和INSTSRV.exe这两个程序是Windows自带的工具的软件。它们可以把任何一个Windows的应用程序安装成为

Windows的一个服务。

(1)、修改注册表

创建一个文本文件,在文件中写入以下内容,并保存为mrtg.reg文件:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG\Parameters]
"Application"="c:\\perl\\bin\\wperl.exe"
"AppParameters"="c:\\mrtg\\bin\\mrtg --logging=eventlog c:\\mrtg\\bin\\mrtg.cfg"
"AppDirectory"="c:\\mrtg\\bin\\"

(2)、安装服务

把SERANY.exe,instsrv.exe复制MRTG的安装目录下,键入以下命令:

instsrv MRTG c:\mrtg\bin\srvany.exe

双击mrtg.reg文件,把相关信息注册到注册表中。在“控制面板->管理工具->Services”下运行名为MRTG的服务即可。

默认情况下,每5分钟,mrtg收集一次数据(注意:一定要在bin\mrtg.cfg配置文件最后一行加上RunAsDaemon: yes)

mrtg监控squid状态

mrtg安全支持对squid服务器各种状态的监控

下面本人实现步骤,仅供参考!

squid安装完后,在mrtg配置文件中将/usr/local/squid/share/mib.txt载入

引用
cp /usr/local/squid/share/mib.txt /etc/mrtg/squid.mib

在mrtg配置文件mrtg.cfg文件中加入:

LoadMIBs: /etc/mrtg/squid.mib

并在squid配置文件中合适位置加入

acl snmppublic snmp_community public
snmp_port 3401
snmp_access allow snmppublic all

【本文实现环境为内网中,严格的说,公网的话,很不安全,还是修改一下默认public 和all!】
在/etc/mrtg/mrtg.cfg中加入:

Target[askwan-cache1]: cacheHttpHits&cacheServerRequests:public@192.168.1.217:3401
RouterName[askwan-cache1]: cacheUniqName
MaxBytes[askwan-cache1]: 100000
Title[askwan-cache1]: HTTP Hits
PageTop[askwan-cache1]: <H1>Cache Statistics: HTTP Hits/Requests</H1>
Suppress[askwan-cache1]: y
LegendI[askwan-cache1]:  HTTP hits
LegendO[askwan-cache1]:  HTTP requests
Legend1[askwan-cache1]:  HTTP hits
Legend2[askwan-cache1]:  HTTP requests
YLegend[askwan-cache1]: perminute
ShortLegend[askwan-cache1]: req/min
Options[askwan-cache1]: nopercent,growright,perminute, dorelpercent, unknaszero
Target[proxy-askwan]: cacheServerInKb&cacheServerOutKb:public@192.168.1.217:3401
#RouterName[proxy-askwan]: cacheUniqName
MaxBytes[proxy-askwan]: 76800
Title[proxy-askwan]: Cache Server Traffic In/Out
PageTop[proxy-askwan]: <H1>Cache Statistics: Server traffic volume (In/Out)</H1>
Suppress[proxy-askwan]: y
LegendI[proxy-askwan]:  Traffic In
LegendO[proxy-askwan]:  Traffic Out
Legend1[proxy-askwan]:  Traffic In
Legend2[proxy-askwan]:  Traffic Out
YLegend[proxy-askwan]: per minute
ShortLegend[proxy-askwan]: b/min
kMG[proxy-askwan]: k,M,G,T
kilo[proxy-askwan]: 1024
Options[proxy-askwan]: nopercent,growright, perminute, unknaszero

重新生成首页,重新执行env LANG=C /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg.cfg 三次
就可以得到图像了
http://www.askwan.com/read.php?88