Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124443
  • 博文数量: 32
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-22 16:34
文章分类

全部博文(32)

文章存档

2011年(1)

2010年(10)

2009年(21)

我的朋友

分类: 系统运维

2010-02-21 15:57:13

一、简介

无论是稍有规模的IT公司还是大型的ICPISP,都需要面对一个问题,就是如何实现对网络和服务器的性能的实时监测。除了一些商用软件外,国内最常用的网络监测软件莫过于MRTG了。MRTG(MultiRouter Traffic Grapher)是基于SNMP的网络流量统计分析工具。它通过SNMP协议从设备得到并记录网卡信息,并将流量负载以图形的方式显示出来,系统负载小,使用方便。不过,MRTG毕竟是一套很老的软件了,而且存在许多不足的地方,其作者Tobias Oetiker1999年就已经开始开发另一套开源软件RRDTool来代替MRTG。现在RRDTool在已经发展得成熟,在功能上MRTG难以与其相提并论。既然有更好的选择,为什么我们还要用MRTG呢?

二、RRDToolMRTG对比

MRTG一样,RRDTool也是由Tobias Oetiker撰写的开源软件,但RRDTool并非MRTG的升级版本,两者有非常大的区别,也可以说RRDTool是将用来取代MRTG的产品。下面是两个软件的一些优缺点的对比:

1.MRTG

优点:

简单、易上手,基本安装完了之后只要修改一下配置文件即可。

缺点:

◆使用文本式的数据库,数据不能重复使用;

◆只能按日、周、月、年来查看数据;

◆由于MRTG 本来只是用来监测网络的流量,所以只能存储两个DSData Source),即存储流量的输入和输出(如图1);

◆每取一次数据即需要绘图一次,浪费系统资源;

◆图像比较模糊;

◆无用户、图像管理功能;

 

1MRTG生成的图像

2.RRDTool

优点:

◆使用RRDRound Robin Database)存储格式,数据等于放在数据库中,可以方便的调用。比如将一个RRD文件中的数据与另一个RRD文件中的数据相加;

◆可以定义任意时间段画图,可以用半年数据画一张图,也用半小时内的数据画一张图;

◆能画任意个DS,多种的图形显示方式(如图2);

◆数据存储与绘图分开,减轻系统负载;

◆能任意处理RRD文件中的数据,比如在浏览监测中我们需要将数据由Bytes转化为Bits,可以将原始数据乘8

缺点:

RRDTool的作用只是存储数据和画图,它没有MRTG中集成的数据采集功能;

◆在命令行的使用非常复杂,参数极多。

◆无用户、图像管理功能。

 
2RRDTool生成多个DS的图像

简单的说,MRTG是一个收集网卡流量的工具,而RRDTool则是一个强大的绘图的引擎。

MRTG监测网卡流量很方便,但是如果需要监测其它的系统性能比如CPU负载、系统负载,网络连接数等,就不是那么简单了。即使实现了这些功能,但管理起来非常麻烦。比如公司有12千个被监测点,分布在不同的机房,为了管理方便需要将这些服务器和网络设备分类,这样的话就需要将这些被监测点放在不同的MRTG配置文件中,运行多个crontab,甚至还要自己写HTML页面对其进行管理。

那么,RRDTool就能实现上述功能吗?实际上,RRDTool的主要作用是数据的存储和将数据绘画成图像。要实现数据的采集和管理,我们需要另外一个软件辅助RRDTool进行工作,那就是本文要介绍的重点——Cacti

三、Cacti介绍

RRDTool的绘图功能非常强大,不过由于RRDTool的命令非常复杂繁多,并且不包含数据采集的功能,所以非常难以入门。有很多喜爱RRDTool的程序员为其写应用的平台或脚本,而Cacti就是其中的佼佼者。

Cacti是一套完全面向RRDToolB/S系统,它在MySQL数据库中存储了所有RRDTool创建图像需要用到的信息以及管理信息。

Cacti的主要功能有:

  • 数据定时采集

  • 图像绘画与显示

  • 树状的主机和图像管理

  • RRDTool信息管理

  • 用户和权限管理

  • 模板导入导出

Cacti使用snmpget命令采集数据,使用RRDTool绘图。它的界面简洁直观,让你根本无需明白RRDTool的众多参数即可轻易的绘出漂亮的图形。此外,它还提供了强大的数据管理和用户管理功能。在图像管理上,Cacti采用了树状结构的查看界面,在用户的管理上,能对用户的权限进行细致的划分,甚至支持使用LDAP进行用户验证。不得不提的是Cacti还提供模板的功能,自己可以为某项监测内容建立模板,也可以导入别人做好的模板。

Cacti的架构:

整个Cacti系统由4个部分组成(如图3):

Cacti页面(PHP)——用户控制的平台,用户在此进行所有的设置;

SNMP采集工具——Unix下使用 Net-SNMP软件包自带的“snmpget”和“snmpwalk”等程序,windows下使用phpsnmp功能;

RRDTool绘图引擎——性能数据的存储和绘画图像;

MySQL数据库——储存RRDTool绘图所需的信息,如模板、rra、主机对应的信息等,要注意的是MySQL数据库并不保存性能数据,性能数据保存在RRDTool自己的数据库格式rrd文件中。

3Cacti的架构

Cacti的工作流程(如图4

  1. 定时采集数据:

Cacti会定时运行数据采集脚本,使用“snmpget”命令或其它自己定义的方式进行数据的采集;

  1. 存储数据:

使用RRDTool的“update”指令将采集到的数据储存到rrd文件中;

  1. 用户要查看某台设备的流量:

CactiPHP页面上点击该设备->

Cacti在数据库中寻找该设备对应的rrd文件的名称->

Cacti运行命令让RRDTool进行绘图;

四、Cacti的安装

该安装文档的平台是Linux,其它平台上的安装方法请参照Cacti的官方网站。

运行Cacti需要ApachePHPMySQL的环境,搭建该环境的方法很简单,很多文章有过详细的安装教程,就不在此赘述了。下面是安装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服务。我们可以直接在系统中运行snmpwalksnmpget看是否有该命令,如果有则无需安装了。

如果操作系统没有安装SNMP,可以到本文最后的资源里的Net-SNMP官方网站上下载源码或二进制包进行安装。

4.安装Cacti

Cacti是一套PHP程序,当前最新版本是0.8.6h。安装时需要对Cacti包文件和数据库进行部分设置。

假设apacheDocumentRoot目录为/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”;

定时让Cactipoller取数据:

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服务器和客户端进行设置:

  1. Cacti端的设置:

Cacti端主要是设置一些应用程序的路径和版本等信息,这些信息非常重要,因为不同版本程序的参数会有差异,有时会让Cacti不能正常工作。

在浏览器上输入:

进入cacti的初始设置页面:

在这里我们要输入一些原始的信息:

点击NEXT >

选择“New Install”,点击NEXT >

输入Cacti需要用到的程序的绝对路径、版本等信息(如图5),点击“Finish”>

输入原始的用户和密码:admin/admin,点击“login” >

更改admin用户的密码->

点击 “Save”即可进入Cacti的控制面板。

5Cacti安装设置

上述设置必须准确,否则Cacti可能无法正常运行,使用管理员用户登陆后可以在“Settings”面板中进行修改。

  1. 设置Net-SNMP

该设置针对的是被采集端而非Cacti服务端。一般的类UNIX操作系统均安装有Net-SNMP软件包,但不同操作系统,甚至不同的Linux版本的安装路径和配置文件可能都不一样。如无特殊的需求,使用系统自带的SNMP程序即可,请参考该操作系统的使用手册。

六、使用方法:

1.界面介绍

登陆Cacti后,可以看到左上角是两个按钮(如图6),“console”和“graphs”console表示控制台,在此进行所有的配置等操作;而graphs则是用来查看所有服务器的性能图像的界面。

6Cacti菜单

2console菜单

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 TemplatesData Templates 分别是图像模板、主机类型模板和数据模板。这些模板可以导出、导入也可以自己编写,一般无需修改。

Import/Export

Import Templates Export Templates,对上述模板的导入、导出。我们可以在Cacti的官方网站上找到这些模板,不过需要注意模板对于的Cacti的版本。

Configuration

Settings ——Cacti的主要配置菜单;

可以在此重新设置对应的程序的路径、版本等信息。也可以设置图像的输出方式(允许ftp)、显示效果、登陆方式(允许使用LDAP)等。

Utilities

System Utilities ——显示Cacti系统的一些cachelog信息,如果log文件太大建议直接到后台查看;

User Management ——用户管理。可以在此添加、删除用户,并对每个用户设置详细的权限;

Logout User ——注销用户。

3、创建监测点

假设被监测的服务器名叫“My_Frest_Host”IP192.168.100.1,SNMPcommunitypublic

进入Cacticonsole面板->

点击“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官方网站:

RRDToollibs包下载地址

How to Configure SNMP Community StringsIn Cisco router

Able写的RRDTool的详细介绍和使用

阅读(3268) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~