写点什么

配合 SNMP 实现系统监控之工具研讨

2012 年 8 月 01 日

在大多数情况下基于 SNMP 的监控方式中,SNMP 只是提供了各种类型的系统运行数据,但是如何整理和归纳这些数据并使之成为可读性比较高和 比较直观的信息还需要一些工具的配合以及配置。在该连载中,我们将介绍常见的围绕着 SNMP 的监控解决方案的实现方法。

b.snmp + mrtg 实现对网络负载的监测:

上述的操作方法是利用了一些闭源的商业软件在 Windows 下进行系统监测,尤其是安装在网管工作站上的客户端软件,其中有不少会牵涉到比较昂贵的软件费用。所以对于一些经费充足的企业,这种方案不乏考虑的价值。但是如果我们对监测的对象和内容要求不是很高的话,实际上利用操作系统自己提供的工具也能实现一些简单的监测。

在了解了 snmp 协议的基本工作原理和配置方法之后,我们来看一下利用 SNMP 在 Linux 操作系统上进行监测的解决方案。提到在 Linux 上的开源方案,不得不提及一个老牌的网络流量监测工具 MRTG。

MRTG(Multi Router Traffic Grapher,MRTG)是一个完全免费的监测网络链路流量负载的工具软件,他通过 SNMP 协议从设备得到流量信息,并将流量负载以包含 PNG 格式图形的 HTML 文件以 Web 页面显示给用户。MRTG 能够以非常直观的形式显示流量负载,而且在工作过程中所占用的系统资源很低。

下面我们将演示如何通过 MRTG 来获得以 SNMP 协议所监测到的网络流量方面的信息,为了更好地说明在企业环境中的应用,我们会通过一台运行 MRTG 的网管工作站同时获取两台被监测服务器的网络流量信息来仿真企业对多台服务器的网络流量监测方式。

基本结构如下:

网管工作站:RHEL5u2 192.168.1.10
被监测主机 1:RHEL5u2 192.168.1.100
被监测主机 2:RHEL5u2 192.168.1.200

首先在被监测主机 192.168.1.100 和 192.168.1.200 上分别配置并开启 snmpd 服务(过程同上例)。为了简化配置我只使用上面的 v1 版本的 SNMP 配置方法。同时需要在开启服务之后关闭防火墙以及保证网管和被监控端之间的连通性。

之后在网管工作站上安装并且配置 MRTG。由于在 RHEL 5u8 中 MRTG 是系统自带的软件包,所以可直接使用 rpm 安装(如图 Screenshot11.png 所示)。

复制代码
# rpm -ihv mrtg-2.14.5-2.i386.rpm [ Enter ]

安装完成之后需要运行命令 cfgmaker 针对两台被监测主机各自生成 mrtg 的配置文件,在该例子中配置文件被分别命名为 test1.cfg 和 test2.cfg,存放在 /etc/mrtg 目录中。

复制代码
#cfgmaker --global "WorkDir: /var/www/html/mrtg" \
> --global "Options[_]: growright,bits" \
> --ifref=ip \
> --output /etc/mrtg/test1.cfg \
> public@192.168.1.100 [ Enter ]
#cfgmaker --global "WorkDir: /var/www/html/mrtg" \
> --global "Options[_]: growright,bits" \
> --ifref=ip \
> --output /etc/mrtg/test2.cfg \
> public@192.168.1.200 [ Enter ]

上述的命令定义了生成配置文件 test1.cfg 和 test2.cfg 的全局参数,包括配置文件的主目录,页面存放的主目录,SNMP 团体信息和建立绘图时指定绘图方式的一些必须参数,如绘制向右方增长的统计图和统计图的计量单位等。

之后执行下面的命令将两个配置文件的内容合并到主配置文件 /etc/mrtg/mrtg.cfg 里面。

复制代码
# cat test1.cfg >> mrtg.cfg [ Enter ]
# cat test2.cfg >> mrtg.cfg [ Enter ]

并根据配置文件的需求在 /var/www/html 目录下建立 mrtg 页面的主目录:

复制代码
# mkdir /var/www/html/mrtg [ Enter ]

(如图 Screenshot12.png 所示)。

以及针对 mrtg.cfg 配置文件运行命令来启动 mrtg。注意,在默认的 UTF-8 语言字符集下这个启动命令无法执行成功,因此需要设置语言环境变量为 env=C,所以命令应该执行如下:

复制代码
# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg [ Enter ]

该命令需要执行三次以建立正确的 mrtg 数据库文件(如图 Screenshot13.png,Screenshot14.png 所示)。

最后要做的工作是按照配置文件内容在 mrtg 页面的主目录下生成正确的 index 文件,命令如下:

复制代码
# indexmaker --output /var/www/html/mrtg/index.html \
> --title=MRTG \
> /etc/mrtg/mrtg.cfg [ Enter ]

同时也要按照 mrtg.cfg 的配置修改和启动 apache 并最终为 mrtg 能够定期进行数据采集建立一个每五分钟执行一次的任务计划:

复制代码
# cat /etc/httpd/conf/httpd.conf | grep DocumentRoot [ Enter ]
DocumentRoot "/var/www/html/mrtg"

最后启动 httpd 服务:

复制代码
# service httpd start [ Enter ]
# chkconfig httpd on [ Enter ]
# crontab -l [ Enter ]
*/5 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg /dev/null 2>&1

(如图 Screenshot15.png 所示)

在启动 apache 之后,即可以在网管工作站或者是任何可以访问到 192.168.1.10 的 80 端口的客户端上通过浏览器访问 http://192.168.1.10 来打开 MRTG 的监测页面。可以很直观地看到两台主机的流量页面以及详细信息(如图 pic16.png-pic17.png 所示)。

c.sysstat + mrtg 实现对服务器各种性能参数的监测:

到此很多人可能会有这样的疑虑:既然我们已经能够通过 SNMP + MRTG 得到网络流量的使用情况,那么如果要实时监测服务器的其他系统参数应该怎么办?对于这个问题的答案比较遗憾:由于 MRTG 是一个专门针对网络流量进行监测和绘图的工具,所以默认情况下不提供对系统其他方面信息监测的功能。因此尽管 SNMP 协议本身可以获得和显示被监测主机上的大量信息,但是鉴于 MRTG 方面的限制而无法将这些信息显示出来。

但是好在天无绝人之路,由于 MRTG 本身实际上也是一个强大的数据采集和绘图引擎。于是我们可以利用一些 SNMP 以外的系统监测工具来实时获取服务器性能信息,包括 CPU,内存,磁盘空间使用率以及 I/O 性能方面的内容,然后交给 MRTG,借助我们所需要的绘图功能来获得所需要的其他类型的统计图信息。

在清楚了解 MRTG 工作原理之后,这样做无疑会拥有更大的灵活性。但是由于涉及的内容需要一定脚本编程的知识,所以可能对一些高级用户来说会更加适合。

下面我们就举例说明如何将 MRTG 和系统自带的 sysstat 所提供的一系列如 sar,iostat 以及 free 等系统监测命令等进行结合来获得系统其他方面的统计信息的配置方法。

由于这次网管工作站已经不可能再通过 SNMP 获取信息,所以我们将环境更改一下,在被监测主机直接安装和配置 MRTG,并且结合 sysstat 一类的系统工具来绘制本机的信息图:

此时假设被监测主机的操作系统是:RHEL 5u8,IP 地址是 192.168.1.100

sysstat 是在 RHEL 5 中自带的一个综合系统监测工具包。其中包括了 sar(主要用于 cpu,内存方面的信息统计)和 iostat(存储设备 I/O 统计工具)等。由于 sysstat 是系统本身自带的包,所以在两台被监测的主机上分别挂载光盘安装 sysstat 即可。当然除了 sysstat 还有一些其他的系统性能显示方面的工具可以使用,我们会分别举例。

复制代码
# rpm -ihv sysstat-7.0.2-1.el5.i386.rpm [ Enter ]

同时还要分别在被监测的主机上安装 mrtg。

复制代码
# rpm -ihv mrtg-2.14.5-2.i386.rpm [ Enter ]

(如图 Screenshot16.png 所示)

在正式开始之前,需要花一点时间来介绍一下 sar 和 iostat 的基本功能:sar 是一个强大的系统监测工具,默认不加任何选项则只显示 CPU 的使用情况,而在加上不同的参数之后 sar 可以显示大量的内存以及 I/O 使用状况方面的信息;而 iostat 主要显示 I/O 使用方面的信息。如果执行 sar 不加任何选项通常会显示下面这些信息。(如图 Screenshot17.png 所示):

其中 sar 的命令显示内容包括了:

复制代码
%user → 用户空间的进程占用 CPU 时间的百分比
%system → 系统空间的进程占用 CPU 时间的百分比
%nice → 已调整优先级的进程占用 CPU 时间的百分比
%iowait → 没有进程在该 CPU 上执行时,处理器等待 I/O 完成的时间
%steal → 虚拟操作系统占用 CPU 时间的百分比
%idle → 没有进程在该 CPU 上执行的时间(也就是 CPU 未使用的时间)

其中 iostat 命令显示内容包括了:

复制代码
tps → 每秒钟完成的 I/O 请求数量
Blk_read/s → 每秒从设备上读取的 block 数量
Blk_write/s → 每秒写入到设备商的 block 数量

另外 sar 可以通过增加时间参数来指定执行的频率以及输出的内容量,例如命令“sar –u 5”,则表示每 5 秒钟显示一次 CPU 的使用情况。这样就利于我们将该命令写入到一个脚本 /var/www/mrtg/mrtg.cpu 中。在执行脚本之前需要首先赋予其执行权限,然后为了监测该脚本是否有语法错误,可以执行该脚本测试。如果显示信息正确,则可以将其嵌入到自建的监测 CPU 的 mrtg 配置文件 mrtg.cfg.cpu 中(如图 Screenshot18.png 所示)。

当然这个时候本机 Apache 的访问主目录也要更改为 /var/www/html/mrtg 并重启 apache 服务。之后运行命令三次以启动 mrtg:

复制代码
# env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.mem [ Enter ]

最后别忘了建立存放页面的目录,进入该目录中,将 localhost.html 更名为 index.html 以及类似上面的例子增加一个每五分钟运行一次的计划任务(如图 Screenshot19.png 所示)。此时在任何一台客户端上通过浏览器访问页面 http://192.168.1.100/cpu 就可以看到 192.168.1.100 的 CPU 使用情况(如图 pic18.png 所示)。

按照上面的方法,对内存使用情况的监测也基本大同小异:

可以使用 sar –r 选项来显示内存使用情况。同样将该命令写入到一个脚本 /var/www/mrtg/mrtg.mem 中去,并给予执行权限。在测试执行正常之后即可将其嵌入到自建的监测内存的 mrtg 配置文件 mrtg.mem.cfg 中,执行命令三次

复制代码
# env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.mem [ Enter ]

并建立存放页面的目录,将 localhost.html 更改为 index.html,以及建立类似上面的计划任务(如图 Screenshot20.png–Screenshot21.png 所示)。完成之后从任何一台客户端上通过浏览器都可以访问页面 http://192.168.1.100/mem 来查看该主机的内存使用情况(如图 pic19.png 所示)。

接着按照上面的例子,来建立磁盘读写情况的监测:

由于原理一致,方法接近。我就不再赘述,只是会将基本的过程和需要的脚本内容给出来:

复制代码
# cd /var/www/mrtg/ [ Enter ]

建立监测脚本及其内容:

复制代码
# cat mrtg.disk [ Enter ]
#!/bin/bash
hd=sda
disk=/dev/$hd
UPtime=`/usr/bin/uptime |awk '{print $3""$4""$5}'`
KBread_sec=`iostat -x $disk|grep $hd |awk '{print $8}'`
KBwrite_sec=`iostat -x $disk|grep $hd |awk '{print $9}'`
echo $KBread_sec
echo $KBwrite_sec
echo $UPtime
hostname

赋予权限:

测试执行情况:

复制代码
# ./mrtg.disk [ Enter ]
37.51
0.16
7:25,3users,
localhost.localdomain

建立配置文件及显示其内容:

复制代码
# cat mrtg.cfg.disk [ Enter ]
WorkDir: /var/www/html/mrtg/disk
Target[disk]: `/var/www/mrtg/mrtg.disk`
Title[disk]: Disk HDA I/O Utilization Report
#Unscaled[disk]: dwym
MaxBytes[disk]: 10240000
PageTop[disk]:
kmg[disk]: KB,MB,GB
LegendI[disk]: Disk I/O KBread/sec
LegendO[disk]: Disk I/O KBwrite/sec
Legend1[disk]: Disk I/O KBread/sec
Legend2[disk]: Disk I/O KBwrite/sec
YLegend[disk]: Megabytes
ShortLegend[disk]: &
Options[disk]: growright,gauge,nopercent

建立主页面主目录:

复制代码
# mkdir /var/www/html/mrtg/disk [ Enter ]

运行 mrtg 三次:

复制代码
# env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.disk [ Enter ]

重命名 index 文件:

复制代码
# mv /var/www/html/mrtg/disk/disk.html /var/www/html/mrtg/disk/index.html [ Enter ]

建立任务计划:

复制代码
# crontab -l -u root [ Enter ]
*/5 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.cpu /dev/null 2>&1
crontab: installing new crontab

重启 httpd 服务:

复制代码
# service httpd restart [ Enter ]
# chkconfig httpd on [ Enter ]

完成之后从任何一台客户端通过浏览器都可以访问页面 http://192.168.1.100/disk 来查看该主机的磁盘读写效率情况(如图 pic20.png 所示)。

到此为止我们基本上对 MRTG 在各方面的功能已经有了一个比较全面的认识。而且针对其配置和管理方法也有了一个初步的了解。相信会有更多的管理员通过上面的例子能够并更倾向于借助手工定制的方式来灵活发掘和获取 MRTG 在其他方面更多的功能和特性。

d.更加强大和灵活的系统监测方案:SNMP + Cacti + RRDtool

通过对 MRTG 这个软件的使用很多用户不难发现。像 MRTG 这样的软件尽管有系统资源占用少和低成本等方面的优点,其实也存在着一些功能方面的限制:

例如 MRTG 本身只是通过 SNMP 协议来监测网络流量的一个工具软件,所以在设计上并没有考虑到提供足够的和 SNMP 协议结合的功能以实现对服务器其他方面的性能参数进行监测。简单的说,SNMP 获得的信息尽管足够全面,但是 MRTG 默认的配置方式只能对其网络信息作监测,这样对于 SNMP 协议来说就有点大材小用之嫌。

所以如果要实现对 SNMP 所获得的更多信息进行统计就必须要像上面那样手动定制脚本并将获取的数据指定到 MRTG 配置文件上。这实际上只是利用 MRTG 来做一个信息采集与绘图的软件。这种操作给我个人的感觉似乎有些不伦不类,况且手动定制脚本的方式尽管的确可以拥有一定的灵活性,但这对于一些初级用户来说还是存在一些技术上的困难。更何况如果这样的结构扩展到拥有多个服务器的网络中,就需要在每一个服务器上都要部署同样的架构来实现多台服务器同步监测,显然工作量会比监测一两台服务器大大增加。

另外 MRTG 的数据库是一种文本式的数据库,一般数据不能重复使用,只能画出两个 DS(一条线,一个块)并且缺乏管理功能。

所以能否有一款方案能够完全利用 SNMP 协议中众多的 MIB 和 OID 信息绘制出内容综合全面而且界面美观的系统性能分析图表呢?答案就是现在我们即将介绍的 RRDtool 和 Cacti。

RRDtool 其实和 MRTG 是同一家族, 主要目的都是产生 time-series 的图文件 (如流量,负载,温度……)。不过因为 MRTG 当初的考虑是画两种资料在图上 (或四个值),原作者觉得这样的功能十分不足,所以后来另外又开发了 Rrdtool。

RRDtool 本身可和 MRTG 结合,但其结合基本上仅在于将 MRTG 的文本文件的 log 转成 rrd 单元格式,使用 rrd 存储格式,数据能重复使用。例如可以将一个 rrd 文件中的数据与另一个 rrd 文件中的资料相加;可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图;能画任意个 DS;CDEF 也可以任意定制等。所以 RRDtool 变成了几乎最终也是最好的选择。但由于 RRDTool 的指令非常复杂,对于用户来说显得非常的麻烦,而且 RRDtool 作为一个强大的绘图引擎缺少 MRTG 那种数据采集功能。

幸运的是有一套软件 Cacti 的发展就是基于让 RRDtool 用户更方便使用该软件,除了基本的 SNMP 流量跟系统信息监测外,Cacti 也可外挂脚本及加上各种模板来作出各式各样的监测图。

Cacti 其实是一套 php 程序,他运用 snmpget 采集数据,使用 RRDtool 绘图。使用 Cacti 能统计网络设备的流量、CPU、系统负载等参数,也可以自定义监测的指标。他的界面非常漂亮,能让你根本无需明白 RRDtool 的参数能轻易的绘出漂亮的图形。更难能可贵的是,他提供了强大的数据管理和用户管理功能,一张图是属于一个 host 的,每一个 host 又可以挂载到一个树状的结构上。

RRDtool 与 Cacti 配合的工作流程如下:

Cacti 会通过 SNMP 定时采集并存储被监测设备的各种数据信息,而这些数据信息会被以 rra 文件形式存储在 Mysql 数据库中。如果当用户需要查询这些数据信息的时候会通过 Cacti 将请求提交给 Mysql 数据库来查找设备对应的 rra 文件名,并同时通过 RRDtool 绘制流量图以及返回给用户。

用户的管理上,作为一个开源软件,他可以做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与 LDAP 结合进行用户的验证,可以说,Cacti 将 RRDtool 的所有“缺点”都补足了!

有关于 Cacti 和 RRDtool 方面的更多信息可以访问其官方网站:

http://www.cacti.net/
http://oss.oetiker.ch/rrdtool/

下面我们将通过一个实际的例子讲解如何在企业中部署 SNMP + Cacti + RRDtool 的监测环境。 操作的环境:

监测主机 IP 地址是 192.168.1.200,RHEL5u2 系统,这里也称为 Server 或者网管主机(工作站)
被监测主机 IP 地址是 192.168.1.220,RHEL5u2 系统,这里也称为 Client

首先在监测主机上安装下面的软件包(如图 Screenshot22.png 所示):

由于这些都是系统光盘中自带的 Red Hat 官方提供的包。所以挂在光盘后执行 rpm –ihv 就可以逐一装上。

在安装完成之后,配置并开启本机的 SNMP。简单起见我仍然只开启 V1 版本的 SNMP,由于在上面说明 SNMP 配置原理的时候已经有了具体步骤,所以这里就不再赘述。

在 SNMP 服务启动之后可以下载和编译 rrdtool 以及 cacti。 从以下站点下载这两个软件:

cacti:
http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz rrdtool:
http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.28.tar.gz

目前这两个软件的版本都是最新版本。

由于目前我无法找到用于 RHEL 的可直接安装的 rpm 版本,所以只能下载源码包来手动编译和安装。

首先将这两个软件拷贝到 /usr/local 目录下,然后分别按照下面的步骤对其进行解压,编译以及安装。

复制代码
# cd /usr/local/ [ Enter ]
# tar -zxf rrdtool-1.2.28.tar.gz [ Enter ]
# tar -zxf cacti-0.8.7b.tar.gz [ Enter ]
# cd rrdtool-1.2.28 [ Enter ]
# ./configure --prefix=/usr/local/rrdtool [ Enter ]
# make [ Enter ]
# make install [ Enter ]

(如图 Screenshot23.png 所示)

为了保证编译能够顺利进行,需要预先在系统中安装 gcc 编译器等开发工具包。

至于 cacti,不需要编译,只要将其解压后把整个目录拷贝到 /var/www/html 目录下并重命名为 cacti。

下面我们需要为 cacti 创建所需的数据库,这也是当时安装 mysql-server 的原因。

先启动 mysql 服务,并且指定 mysql 管理员的账号以及密码,然后以新的用户名和密码重新登录 mysql 数据库(如图 Screenshot24.png 所示)。

下面的操作是在 mysql 的交互界面下进行。首先需要通过 T-Sql 语句建立 cacti 数据库,然后为方便管理,需要给 root 以及 cactiadmin 用户授予所有管理权限,并且定义 cactiadmin 用户的密码。完成之后退出交互界面,并且将 cacti 预先定制的 cacti.mysql 文件导入到 mysql 中去(如图 Screenshot25.png 所示)。

这时再通过交互界面进入到 mysql 之后就可以看到刚才所导入的预先定制好的 cacti 相关数据库表了(如图 Screenshot26.png 所示)。

接着按照刚才导入到数据库中的内容用 vi 编辑器修改 cacti 管理接口的配置文件:

复制代码
# vi /var/www/html/cacti/include/config.php [ Enter ]
修改的内容如下:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiadmin";
$database_password = "123456";
$database_port = "3306";

(如图 Screenshot27.png 所示)

由于我们需要定制 cactiadmin 用户通过 SNMP 定时到被监测设备中获取数据信息,所以要建立 cactiadmin 用户并以该用户的身份建立一个任务计划。

复制代码
# useradd cactiadmin [ Enter ]
# passwd cactiadmin [ Enter ]
# crontab -e -u cactiadmin [ Enter ]
# crontab -l -u cactiadmin [ Enter ]
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1

同时指定下面两个目录的属主是 cactiadmin:

复制代码
# chown -R cactiadmin /var/www/html/cacti/rra /var/www/html/cacti/log [ Enter ]

之后我们需要安装一个叫做 cactid 的东西,这个所谓的 cactid 是 cacti 的数据收集器的守护进程。 安装和配置的方法也很简单。

最新的 cactid 版本是 0.8.6k,可以从该地址获得:

复制代码
http://mirrors.rootservices.net/cacti/cactid/cacti-cactid-0.8.6k.tar.gz

下载之后将其放到 /usr/local 目录下:

然后按照下面步骤进行编译安装:

复制代码
# tar –zxf cacti-cactid-0.8.6k.tar.gz [ Enter ]
# cd cacti-cactid-0.8.6k [ Enter ]
# ./configure --prefix=/usr/local/cactid [ Enter ]
# make [ Enter ]
# make install [ Enter ]

为了保证编译成功,还需要下面的几个软件:

复制代码
mysql-devel
libpng
libpng-devel
zlib
zlib-devel
freetype
freetype-devel

(如图 Screenshot28.png 所示)

在该软件编译完成之后,在 /usr/loca/ 目录下会自动建立 cactid 目录,进入该目录修改 etc/cactid.conf 配置文件,修改之后的结果如下:

复制代码
DB_Host localhost
DB_Database cacti
DB_User cactiadmin
DB_Pass 123456
DB_Port 3306

(如图 Screenshot29.png 所示):

并且将该文件复制到 /etc 目录下。

复制代码
# cp /usr/local/cactid/etc/cactid.conf /etc/ [ Enter ]

最后配置 HTTP 服务,只需要将网站服务的主目录指向 /var/www/html/cacti 目录,然后重启 httpd 服务即可:

复制代码
DocumentRoot "/var/www/html/cacti"

完成之后可以在监测主机上开启一个浏览器并且直接访问链接 http://192.168.1.200,由于已经将 cacti 设置为网站的主目录,所以上述的配置一切正常的话可以获得一个 cacti 的初始安装页面(如图 Screenshot30.png 所示)。点击“Next”之后开启下一个页面准备安装 cacti(如图 Screenshot31.png 所示)。在出现的页面中如果确认所有信息无误则选择“New Install”并进入下一步。在新出现的 Installation guide 页面中 cacti 会自动探测原先安装的一些基本文件的位置。在这里需要确保安装程序能够找到所需要的所有文件和信息,否则后面的步骤会出错。

而最常见的错误则是会出现“RRDtool binary path not found”的情况,解决这个问题需要手动更改一下路径为:/usr/local/rrdtool/bin/rrdtool,并点击“Finish” (如图 Screenshot32.png 所示)。

在接着出现的新页面中输入用户名和密码。此处默认的用户名和密码都是 admin(如图 Screenshot33.png 所示)。进入之后 cacti 会强制用户更改密码,为了简化起见,我这里仍然更改为密码为“123456”并保存密码(如图 Screenshot34.png 所示)。以下见到的就是 cacti 的主配置页面(如图 Screenshot35.png 所示)。在当前页面点击 console 卷标之后点击 setting 按钮并选取 path 卷标(如图 Screenshot36.png 所示),在该页面上需要指定“Cactid Poller File Path”,这里就是 cactid 程序的绝对路径 /usr/local/cactid/bin/cactid,同时确认其他的 RRDtool required path 的设定是正确的(如图 Screenshot37.png 所示),保存该配置。

到此为止,整个 cacti 主页面的全局设置就基本完成,最后开启添加要监测的目标服务器。点击“Console”然后点击“Create”标签下面的“New Graphs”按钮以及在出现的页面上点击“Create New Host(如图 Screenshot38.png 所示)”进入建立被监测服务器的页面,按照下面的页面来添加被监测系统的信息,其中包括:描述(可随便填写),主机名(IP 地址),监测的主机类型(Local Linux Machine),SNMP 版本(V1)和与之对应的端口号(161)与团体信息(如图 Screenshot39.png 所示)。最后点击“Create”。

但是由于我使用的是 RHEL 5u8 系统上自带的 firefox 3 浏览器,在这个时候可能会出现一些问题。如图(如图 Screenshot40.png 所示),提示“由于密码不符,该设备无法建立”,但事前我们并没有设置过任何密码。这其实是在该版本的 cacti 上的一个 bug 而已,在 RHEL 系统上尤其针对比较新的 firefox3 浏览器,当提交到该页面的时候由于一些缓存方面的影响而导致无法最终完成该步骤。不过解决的方法也很简单。就是使用 IE 系列浏览器或者版本比较低的 firefox 浏览器来访问,那么在做到该步骤的时候就可以正常完成配置(如图 pic22.png 所示)。

在该步骤完成之后可以看到默认的配置将会监测目标主机的内存、负载、登录用户以及 CPU 方面的信息。而用户完全可以在“Add Graph Template”以及“Add Data Query”处添加更多的监测类型。并选择右边的“Add”,结果就会如图所示(如图 pic23.png-pic24.png 所示)。最后将配置保存并切换到“Graph”标签下复选需要监测的参数类型,一般着重选择的内容包括 CPU,内存,Swap 分区,Buffer 缓冲区,网络流量,磁盘使用量以及登录用户等(如图 pic25.png-pic28.png 所示)。完成之后

在“Graph”的“Preview”卷标中即可获得动态的统计图信息(如图 pic29.png 所示)。由于我选的内容太多,所以在当前页面无法全部显示出所有统计图来,只能一个个项目点击进去。

和 MRTG 类似,每一个项目的监测统计都有 5 分钟、30 分钟、2 小时和 1 天为计算单位。所以从各种统计图来看,即可获得一个参数当前的信息,又可获得相对长久的信息便于比较(如图 pic30.png-pic31.png 所示)。

而作为被监测主机,其实需要配置的内容只有两个:第一,修改 SNMP 配置文件并启动服务,使之与网管主机监测软件所定义的 SNMP 版本和认证方式一致;第二,确保网络连通性以及确保网管主机能够通过 snmpwalk 命令获得被监测主机上的全部 MIB 内容。由于配置方法和上面的例子一样,只要从监测主机上将已经修改过的 snmpd.conf 配置文件拷贝到 /etc/snmpd 目录下覆盖原有配置文件,然后启动 snmpd 服务并关闭防火墙就行了。当然可以分别在监测主机和被监测主机上运行命令来测试:

复制代码
# snmpwalkv1cpublic 192.168.1.220 [ Enter ]

如果能够获得所有的 MIB 信息,则证明客户端的配置没有问题,所以这里也不再赘述。

到此为止 Cacti + RRDtool 的结构就已经配置完成。可见相对于 MRTG 而言,Cacti + RRDtool 的方式有一个更大的好处就是利于用户时刻调整监测的对象。例如,用户需要调整当前的监测内容并新增一些监测项目。那么就可以随时编辑监测设备并修改需要监测的参数,相当方便。同时 Cacti + RRDtool 提供了在 MRTG 上不具备的管理功能,以及 Cacti 的绘图功能相对更强大,图像更加美观。

尽管第一次部署网管主机比较复杂,但是后续对配置对多个设备的集中监测就相对简单多了。可以说也是一劳永逸的解决方案。

这些都是这种结构尽管在配置方面略显复杂,但是越来越受欢迎并在企业中广泛应用的原因。和 MRTG 一样,Cacti 和 RRDtool 也是一个目前在企业中越来越广泛应用的开源监测方案。而且在网上也有很多这方面的文章介绍不其原理和不同的功能实现方法。

2012 年 8 月 01 日 00:005156

评论

发布
暂无评论
发现更多内容

Mybatis【7】-- Mybatis如何知道增删改是否成功执行?

秦怀杂货店

Java mybatis

Mybatis【10】-- Mybatis属性名和查询字段名不同怎么做?

秦怀杂货店

mybatis

设计模式【1.2】-- 枚举式单例有那么好用么?

秦怀杂货店

设计模式

恐怖:这份Github神仙面试笔记,简直把所有Java知识面试题写出来了

Crud的程序员

Java 架构师 java程序员 java基础

附PPT丨如何构建数据库容器化PaaS

dbaplus社群

数据库 容器化

开一个世界末日的脑洞

熊斌

我的世界 生活记录 七日更

安卓开发快速学习!一个小例子彻底搞懂Android的MVP模式到底是什么?面试必问

欢喜学安卓

android 程序员 面试 移动开发

设计模式【1.1】-- 你想如何破坏单例模式?

秦怀杂货店

设计模式 单例 23种设计模式

Github标星5.3K,网易云的朋友给我这份339页的Android面经,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

shark defi鲨鱼智能合约系统软件APP开发

开發I852946OIIO

系统开发

explicit_defaults_for_timestamp 参数详解

Simon

MySQL 七日更

毕业三年,如何达到月薪30K?我想跟你聊聊!!

冰河

程序员 程序人生 架构师 升职加薪 提升自我

架构师入门感悟之十

莫问

Android开发全套学习!不同层级的Android开发者的不同行为,学习路线+知识点梳理

欢喜学安卓

android 程序员 面试 移动开发

WLAN网络规划和优化的必备知识点

网络技术平台

星环科技助力商业银行机器学习平台建设

星环科技

FinTech

Angel推荐算法在游戏推荐中的应用

DataFunTalk

学习

领域驱动设计DDD

积极&丧

架构师训练营第五周课后作业

万有引力

花火交易所软件开发|花火交易所系统APP开发

开發I852946OIIO

系统开发

设计模式【2】-- 简单工厂模式了解一下?

秦怀杂货店

设计模式 工厂模式 工厂方法模式

Mybatis【11】-- Mybatis Mapper动态代理怎么写?

秦怀杂货店

mybatis mybatis源码

爱奇艺用户分析平台实践:TB级数据查询秒级返回

dbaplus社群

大数据

Mybatis【8】-- Mybatis返回List或者Map以及模糊查询怎么搞?

秦怀杂货店

Java mybatis

Mybatis【9】-- Mybatis占位符#{}和拼接符${}有什么区别?

秦怀杂货店

mybatis 预编译

设计模式【1】-- 单例模式到底几种写法?

秦怀杂货店

设计模式

《爱奇艺安全应急响应中心漏洞评分标准2021》来了

爱奇艺技术产品团队

安全 安全漏洞

Lambda【1】-- List相关Lambda表达式使用(上篇)

秦怀杂货店

Java Lambda

架构师训练营第 10 周学习总结

菜青虫

极客大学架构师训练营

架构师训练营第 10 周课后练习

菜青虫

极客大学架构师训练营

设计模式【1.3】-- 为什么饿汉式单例是线程安全的?

秦怀杂货店

单例模式

微服务架构下如何保证事务的一致性

微服务架构下如何保证事务的一致性

配合SNMP实现系统监控之工具研讨-InfoQ