分类: 系统运维
2010-02-21 15:57:13
一、简介
无论是稍有规模的IT公司还是大型的ICP、ISP,都需要面对一个问题,就是如何实现对网络和服务器的性能的实时监测。除了一些商用软件外,国内最常用的网络监测软件莫过于MRTG了。MRTG(MultiRouter Traffic Grapher)是基于SNMP的网络流量统计分析工具。它通过SNMP协议从设备得到并记录网卡信息,并将流量负载以图形的方式显示出来,系统负载小,使用方便。不过,MRTG毕竟是一套很老的软件了,而且存在许多不足的地方,其作者Tobias Oetiker在1999年就已经开始开发另一套开源软件RRDTool来代替MRTG。现在RRDTool在已经发展得成熟,在功能上MRTG难以与其相提并论。既然有更好的选择,为什么我们还要用MRTG呢?
二、RRDTool与MRTG对比
与MRTG一样,RRDTool也是由Tobias Oetiker撰写的开源软件,但RRDTool并非MRTG的升级版本,两者有非常大的区别,也可以说RRDTool是将用来取代MRTG的产品。下面是两个软件的一些优缺点的对比:
1.MRTG
优点:
简单、易上手,基本安装完了之后只要修改一下配置文件即可。
缺点:
◆使用文本式的数据库,数据不能重复使用;
◆只能按日、周、月、年来查看数据;
◆由于MRTG 本来只是用来监测网络的流量,所以只能存储两个DS(Data Source),即存储流量的输入和输出(如图1);
◆每取一次数据即需要绘图一次,浪费系统资源;
◆图像比较模糊;
◆无用户、图像管理功能;
2.RRDTool
优点:
◆使用RRD(Round Robin Database)存储格式,数据等于放在数据库中,可以方便的调用。比如将一个RRD文件中的数据与另一个RRD文件中的数据相加;
◆可以定义任意时间段画图,可以用半年数据画一张图,也用半小时内的数据画一张图;
◆能画任意个DS,多种的图形显示方式(如图2);
◆数据存储与绘图分开,减轻系统负载;
◆能任意处理RRD文件中的数据,比如在浏览监测中我们需要将数据由Bytes转化为Bits,可以将原始数据乘8。
缺点:
◆RRDTool的作用只是存储数据和画图,它没有MRTG中集成的数据采集功能;
◆在命令行的使用非常复杂,参数极多。
◆无用户、图像管理功能。
简单的说,MRTG是一个收集网卡流量的工具,而RRDTool则是一个强大的绘图的引擎。
MRTG监测网卡流量很方便,但是如果需要监测其它的系统性能比如CPU负载、系统负载,网络连接数等,就不是那么简单了。即使实现了这些功能,但管理起来非常麻烦。比如公司有1、2千个被监测点,分布在不同的机房,为了管理方便需要将这些服务器和网络设备分类,这样的话就需要将这些被监测点放在不同的MRTG配置文件中,运行多个crontab,甚至还要自己写HTML页面对其进行管理。
那么,RRDTool就能实现上述功能吗?实际上,RRDTool的主要作用是数据的存储和将数据绘画成图像。要实现数据的采集和管理,我们需要另外一个软件辅助RRDTool进行工作,那就是本文要介绍的重点——Cacti。
三、Cacti介绍 RRDTool的绘图功能非常强大,不过由于RRDTool的命令非常复杂繁多,并且不包含数据采集的功能,所以非常难以入门。有很多喜爱RRDTool的程序员为其写应用的平台或脚本,而Cacti就是其中的佼佼者。 Cacti是一套完全面向RRDTool的B/S系统,它在MySQL数据库中存储了所有RRDTool创建图像需要用到的信息以及管理信息。 Cacti的主要功能有:
Cacti使用snmpget命令采集数据,使用RRDTool绘图。它的界面简洁直观,让你根本无需明白RRDTool的众多参数即可轻易的绘出漂亮的图形。此外,它还提供了强大的数据管理和用户管理功能。在图像管理上,Cacti采用了树状结构的查看界面,在用户的管理上,能对用户的权限进行细致的划分,甚至支持使用LDAP进行用户验证。不得不提的是Cacti还提供模板的功能,自己可以为某项监测内容建立模板,也可以导入别人做好的模板。 Cacti的架构: 整个Cacti系统由4个部分组成(如图3): Cacti页面(PHP)——用户控制的平台,用户在此进行所有的设置; SNMP采集工具——Unix下使用 Net-SNMP软件包自带的“snmpget”和“snmpwalk”等程序,windows下使用php的snmp功能; RRDTool绘图引擎——性能数据的存储和绘画图像; MySQL数据库——储存RRDTool绘图所需的信息,如模板、rra、主机对应的信息等,要注意的是MySQL数据库并不保存性能数据,性能数据保存在RRDTool自己的数据库格式rrd文件中。 图3、Cacti的架构 Cacti的工作流程(如图4):
Cacti会定时运行数据采集脚本,使用“snmpget”命令或其它自己定义的方式进行数据的采集;
使用RRDTool的“update”指令将采集到的数据储存到rrd文件中;
在Cacti的PHP页面上点击该设备-> Cacti在数据库中寻找该设备对应的rrd文件的名称-> Cacti运行命令让RRDTool进行绘图; |
四、Cacti的安装
该安装文档的平台是Linux,其它平台上的安装方法请参照Cacti的官方网站。
运行Cacti需要Apache+PHP+MySQL的环境,搭建该环境的方法很简单,很多文章有过详细的安装教程,就不在此赘述了。下面是安装Cacti的步骤:
1.设置mysql
创建数据库、数据库用户,调整权限、密码:
# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 to server version: 4.0.23-standard Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql>; create database cactidb; Query OK, 1 row affected (0.00 sec) mysql>; grant all on cactidb.* to root; Query OK, 0 rows affected (0.01 sec) mysql>; grant all on cactidb.* to root@localhost; Query OK, 0 rows affected (0.01 sec) mysql>; grant all on cactidb.* to cactiuser; Query OK, 0 rows affected (0.00 sec) mysql>; grant all on cactidb.* to cactiuser@localhost; Query OK, 0 rows affected (0.01 sec) mysql>; set password for cactiuser@localhost=password(’cactipw’); Query OK, 0 rows affected (0.00 sec) mysql>; exit |
2.安装RRDTool
从RRDTool官方网站(见文章最后的“资源”)下载最新的RRDTool包,当前最新的版本是rrdtool-1.2.12。在该下载页面上,还可以看到有一个“libs”的目录,里面的包也要全部下载。
那么,我们下载了下面的几个包:
◆libart_lgpl-2.3.17
◆libpng-1.2.8-config
◆zlib-1.2.2
◆freetype-2.1.9
安装方法:
./configure –prefix=/usr #把东西装到 /usr 目录下 make ; make install #编译及安装 |
安装完上述lib包后,我们就可以进行RRDTool的安装了:
rrdtool-1.2.12包的安装方法:
cd rrdtool-1.2.12 ./configure –prefix=/usr make && make install |
测试:
运行rrdtool –v
可以看到RRDTool的用法以及版本信息:
RRDtool 1.2.12 Copyright 1997-2005 by Tobias Oetiker Compiled Apr 30 2006 11:30:36 Usage: rrdtool [options] command command_options Valid commands: create, update, updatev, graph, dump, restore, last, first, info, fetch, tune, resize, xport RRDtool is distributed under the Terms of the GNU General Public License Version 2. () For more information read the RRD manpages |
RRDTool官方的详细安装方法可以在下载的RRDTool源码里的doc/rrdbuild.pod文件里找到。
3.安装SNMP采集工具
SNMP全名是简单网络管理协议,几乎所有的网络设备(交换机、路由器等)和操作系统默认都安装了snmp服务。
Cacti系统所在的服务器并不一定要安装SNMP服务,但是Cacti系统采集数据要用到Net-SNMP包里面的几个工具,所以最好也在Cacti服务器上安装SNMP服务。我们可以直接在系统中运行snmpwalk和snmpget看是否有该命令,如果有则无需安装了。
如果操作系统没有安装SNMP,可以到本文最后的资源里的Net-SNMP官方网站上下载源码或二进制包进行安装。
4.安装Cacti
Cacti是一套PHP程序,当前最新版本是0.8.6h。安装时需要对Cacti包文件和数据库进行部分设置。
假设apache的DocumentRoot目录为/www/htdocs:
cp cacti-0.8.6h.tar.gz /www/htdocs tar xzvf cacti-0.8.6h.tar.gz mv cacti-0.8.6h cacti useradd cactiuser –d /www/htdocs/cacti |
导入数据库、设置权限:
cd /www/htdocs/cacti mysql -u root cactidb < cacti.sql chown -R cactiuser rra/ log/ |
编辑配置文件/www/htdocs/cacti/include/config.php :
$database_type = “mysql”; $database_default = “cactidb”; $database_hostname = “localhost”; $database_username = “cactiuser”; $database_password = “cactipw”; |
定时让Cacti的poller取数据:
crontab –u cactiuser –e 加入: */5 * * * * /www/php/bin/php /www/htdocs/cacti/poller.php >; /dev/null 2>;&1 |
注意:不要使用root用户运行上面的“poller.php”命令,否则请再次运行chown –R cactiuser rra/ log/
五、基本设置:
Cacti安装完成后,并不能立即进行数据的采集,我们还需要对Cacti服务器和客户端进行设置:
Cacti端的设置:
Cacti端主要是设置一些应用程序的路径和版本等信息,这些信息非常重要,因为不同版本程序的参数会有差异,有时会让Cacti不能正常工作。
在浏览器上输入:
进入cacti的初始设置页面:
在这里我们要输入一些原始的信息:
点击NEXT ->
选择“New Install”,点击NEXT ->
输入Cacti需要用到的程序的绝对路径、版本等信息(如图5),点击“Finish”->
输入原始的用户和密码:admin/admin,点击“login” ->
更改admin用户的密码->
点击 “Save”即可进入Cacti的控制面板。
图5、Cacti安装设置
上述设置必须准确,否则Cacti可能无法正常运行,使用管理员用户登陆后可以在“Settings”面板中进行修改。
设置Net-SNMP:
该设置针对的是被采集端而非Cacti服务端。一般的类UNIX操作系统均安装有Net-SNMP软件包,但不同操作系统,甚至不同的Linux版本的安装路径和配置文件可能都不一样。如无特殊的需求,使用系统自带的SNMP程序即可,请参考该操作系统的使用手册。
六、使用方法:
1.界面介绍
登陆Cacti后,可以看到左上角是两个按钮(如图6),“console”和“graphs”。console表示控制台,在此进行所有的配置等操作;而graphs则是用来查看所有服务器的性能图像的界面。
图6、Cacti菜单
2.console菜单
Create:
New Graphs——创建新图像的快捷方式;
Management:
Graph Management——图像管理。可以在此删除、复制图像,Cacti会自动创建图像。不过如果我们有特殊的需要,比如将几张图上的数据合并在一张图像上的话也可以在此手工新建图像;
Graph Trees——图像树。在graphs界面里,图像或devices是树状结构显示的(如图7),可以在此设置树的结构;
Data Sources——管理rrd文件。一般无需修改,Cacti会自己创建rrd文件;
Devices——设备管理。这是我们最经常需要修改的地方,可以在此创建新的设备或修改其名称等信息。
图7、图像树
Collection Methods
Data Queries 和Data Input Methods是采集数据的方式,一般我们无需对这两项进行修改;
Templates
Graph Templates 、Host Templates和Data Templates 分别是图像模板、主机类型模板和数据模板。这些模板可以导出、导入也可以自己编写,一般无需修改。
Import/Export
Import Templates 和Export Templates,对上述模板的导入、导出。我们可以在Cacti的官方网站上找到这些模板,不过需要注意模板对于的Cacti的版本。
Configuration
Settings ——Cacti的主要配置菜单;
可以在此重新设置对应的程序的路径、版本等信息。也可以设置图像的输出方式(允许ftp)、显示效果、登陆方式(允许使用LDAP)等。
Utilities
System Utilities ——显示Cacti系统的一些cache和log信息,如果log文件太大建议直接到后台查看;
User Management ——用户管理。可以在此添加、删除用户,并对每个用户设置详细的权限;
Logout User ——注销用户。
3、创建监测点
假设被监测的服务器名叫“My_Frest_Host”,IP为192.168.100.1,SNMP的community为public。
进入Cacti的console面板->
点击“Devices”进入设备面板->
点击“Add”添加新设备->
填写要监测服务器的各种信息,其中Host Template请选择“ucd/net SNMP Host”(如图8)->
图8、填写新建服务器信息
点击“Create”保存信息,如果SNMP连接没有问题,左上角会出现该服务器的信息,否则会出现“SNMP error”的红色字样->
点击上部的“Create Graphs for this Host ”为该设备创建需监测的内容。监测的内容分两种,“Graph Templates”和“Data Query”(如图9),区别在于“Data Query”能根据SNMP信息列出监测项目的信息。例如Data Query里的“Interface Statistics”可以看到该主机所有网卡的信息,这样我们可以选择需要监测的网卡。点击右侧的正方形选择框勾选上要监测的项目->
图9、选择要监测的内容
点击“Create”创建选择的监测内容,已经选择创建的内容会自动变成灰色并且不能再点选(如图9)。Cacti会自动创建该监测点的rrd文件(在rra文件夹中)、“Data Source”和“graph”条目。创建监测点完毕。
4、查看监测点
点击“Graph Management”可以看到刚才创建的监测点对应的图像,注意由于Cacti默认每5分钟到监测服务器上取一次数据,所以刚创建的监测点会出现图像不能显示的现象,需要等几分钟查看才会正常显示。
为了方便查看,可以将刚才新创建的设备或图像加入到“图像树”上:
点击“Graph Tree”进入“图像树”面板->
点击分支名称或“Add”新的分支->
点击“Add”,添加新的“Tree Items”->
“Tree Item Type”中选择“Host”,“Tree Item Value”的“host”中选择刚才新添加的主机“My_Frest_Host”->
点击“Create”。
这样,我们就可以在“graphs”界面中查看“My_Frest_Host”的所有监测图像了。
七、资源
Cacti官方网站:
RRDtool官方网站:
MRTG官方网站:
Net-SNMP官方网站:
RRDTool的libs包下载地址
How to Configure SNMP Community Strings(In Cisco router)
Able写的RRDTool的详细介绍和使用