开源监控Cacti的架构及应用


一:cacti 的简介

二:Cacti 的特点以及优点

三:Cacti 所监控的对象

四:监控的步骤

五:snmp 的工作原理

六:cacti 架构及应用

一:Cacti 的简介:

Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界面友好。

Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图。

cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmprrdtoolcacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。

Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ipsnmp团体名、端口号、模板信息等变量。

snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。

二:Cacti 的特点以及优点:

1、开源

1,*发行

2,开放源代码

3,运行高效

2、跨平台

支持的平台redhat windows solariscentos suse

3、界面友好

图形丰富 各种模板 自定义模板

4、可扩展

支持二十种的插件,丰富的插件资源,大大提高了cacti的功能。

三:Cacti 所监控的对象:

1、服务器cpu 、内存、磁盘、进程、连接数

2、Webmail ftp 数据库 、中间件

3、网络接口流量、转发速率、丢包率

4、网络设备性能 、配置文件 、路由数

5、安全设备性能、连接数、电源、温度

6、机房运行环境:电流、电压、湿度等

四:监控的步骤:

1,如何获取数据?

命令:ping ssh telnet

脚本:编辑相应的脚本测试被监控主机的状态

Snmp协议:

SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMIMIB:体系结构,改进后的协议就是著名的SNMPSNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMPInternet标准网络管理框架的影响也很大。

2,如何存储数据?

数据的存储是靠rrd数据库来实现的,也叫环状数据库,数据库格式以.rrd结尾。数据库中存放的不是直接收集到的信息,而是通过聚合函数聚合之后的数据,默认每隔5分钟,收集一次信息,也可以每隔5秒钟收集一次信息,这叫做pdp。通过聚合之后的数据存放到rrd表格中叫做rrarrd表格是由数据库管理,这里数据库也叫做数据源,而数据库的创建是靠rrdtool工具完成的。

Rrdtool 创建数据库 更新数据库 绘图

3,如何展示以及报警?

图形的展示,以及报警是通过基于web页面的cacti这个软件来实现的,报警的方式有发送邮件、msn消息、飞信消息。

五:Snmp的工作原理:

1、三层架构:第一层叫网管工作站简称nms ,第二层叫做agent ,也就是被监管的设备,第三层就是数据库。

2、原理:

agent 把收集到的信息放到数据库中,nms把要请求的数据的信息提交给agent nmsagent 打交道的方式有GetRequest GetNextRequestSetRequestGetResponsetrap 向数据库中收集数据,然后把数据提交给nms

GetReques:请求得到这个对象本节点相关信息

GetNextRequest:请求得到这个对象本节点以下的所有信息

SetRequestagent 设置本节点的信息

Trap agent主动向nms 提交信息

3、OID

为了在系统中能够找到所需对象,我们需要为每一个对象分配一个唯一的表示号。在关系数据库中我们称之为关键字,而在对象术语中,则叫做对象标识(Object identifier-OID)通常OID在内部都使用一个或多个大整数表示,而在应用程序中则提供一个完整的类为其他类提供获取、操作。一个OID必须在一层中保持唯一,理想上应该在所有对象上都唯一。

把被监控对象的名称和OID放在一个文件中,这个文件叫做MIB库。

不同的设备的MIB-2 OID 是不同的,比如说udp的报文OID 1.3.6.1.2.7udp 进来的报文OID 1.3.6.1.2.7.2 udp出错的报文OID 1.3.6.1.2.7.3

六:架构cacti及其应用

1、snmp 的安装

1rpm 包安装snmp

net-snmp-5.3.2.2-7.el5.i386.rpm 提供snmpd服务,开启这个服务将成为agent将提供161端口。

net-snmp-utils-5.3.2.2-7.el5.i386.rpm 安装这个软件包,将成为nms ,提供很多工具。

开启snmpd 服务查看端口

开源监控软件 cacti的应用

2nms agent 打交道需要进行身份认证,在snmp1版本 、2c 版本是靠团体名进行身份验证的,明文传递信息,不安全。3版本 是靠账号验证的。密文传递信息,比较安全,但是,一般使用2c版本,比较方便。

通过snmp的工具snmpwalk 简单获取agent(本地主机)的信息

Snmpwalk -v 2c - c public 127.0.0.1

开源监控软件 cacti的应用

将会得到很多MIB 信息,在安装snmp的软件包时,将各节点的MIB库文件就已经存放到/usr/share/snmp/mibs 目录下面了。

Nms 只能得到 SNMPv2-MIBHOST-RESOURCES-MIB的相关信息,这是因为在snmp的配置在文件中,只打开了这两个节点OID,所以nms 只能获得这两个节点以下的相关信息。

开源监控软件 cacti的应用

如果想监控到到更多节点的相关信息,只需把节点的OID 添加到配置文件中

比如说获取TCP-MIB.txt中的信息tcp节点的OID1.3.6.1.2.1.6,设置好之后重启服务,将会得到tcp的相关信息。

开源监控软件 cacti的应用

Snmpwalk -v 2c - c public 127.0.0.1

开源监控软件 cacti的应用

2、Rrdtool 的应用

2rrdtool 的简介:

高性能的记录绘图工具rrdtool ,主要用于处理时间序列的数据

Rrdtool 提供了几个子命令实现对.rrd 文件的管理,如create,updateupdatev ,graph ,dump ,last ,info 等命令。

使用rrdtool 绘图的步骤:

1、使用rrdtool create 创建一个新的rrd数据文件;

2、使用, rrdtool update 为前面的创建的rrd 数据文件提供数据;此数据需要周期性的进行更新,因此,应该讲rrdtool update 创建为cron任务;

3、使用rrdtool graph rrd 数据文件中获取数据并绘图;

3Rrdtool create 命令的用法:

Rrdtool create filename --start |-b start time 】【--step| -s step】【--no-overtime】【DS:dst arguments 】 【RRACF:cf arguments

Filename :rrd数据库文件名称

Start :开始时间

Step :步长,每隔多长时间记录一次,默认每隔300秒。

no-overtime:不覆盖一个已经存在的rrd数据文件

DS:数据源

Dst :数据源类型

Arguments:变量

RRA:每隔几个步长统计一下信息

CF:对数据进行处理的统计函数:AVERAGE 平均值,MIN 最小值,MAX 最大值

1.使用rrdtool创建rrd数据库文件

rrdtool create test.rrd -s 5 DS:testds:GAUGE:8:0:U RRA:AVERAGE:0.5:1:17280

创建的数据库文件test.rrd ,每隔5秒收集一下信息,数据源是testds,对数据求绝对值,到8秒的时候也可以接受数据,最小值是0最大值没有,对表格中的数据求平均值,数据不超过50%,步长为1,记录统计每隔5秒的一天之内的数据,栏位是17280

将会在当前目录下产生一个rrd数据库文件test.rrd

查看rrd数据库文件的数据平均值信息

rrdtool fetch test.rrd AVERAGE

开源监控软件 cacti的应用

当前还没有信息,以为没有往表格中输入信息,所以统计不到信息,编辑一个脚本不断地往表格中输入信息,运行脚本

#!/bin/bash

while true ;do

rrdtool update test.rrd N:$RANDOM

sleep 5

done

查看rrd数据库文件的数据平均值信息,将会得到一些数据

rrdtool fetch test.rrd AVERAGE

开源监控软件 cacti的应用

2..使用rrdtool 工具创建图形,获取的是test.rrd数据库中的数据,每隔五秒收集一次信息,数据源是testds,求数据的平均值,图形的形式是线条颜色为×××。

rrdtool graph test.png -s 1382934740 --step 5 -t tupian -v vtupian DEF:vname=test.rrd:testds:AVERAGE LINE1:vname#ff0

在当前目录下将产生test.png,查看图片

开源监控软件 cacti的应用

3cacti的安装

Rrdtool 太过繁琐麻烦,所以很少有人愿意使用这个工具,cacti的出现大大简化了操作,cacti是基于web页面的开源监控软件,在页面里,就可以收集数据信息,绘制图形。

1LAMP的环境搭建

使用yum安装lamp的软件包

打开httpd 服务,设置开机启动

打开mysqld 服务,设置开机启动

修改mysql服务器的登陆密码

Mysqladmin -u root -p password 123

登陆mysql 服务器,创建数据库,数据库的名称是cacti ,用于存放收集到的数据信息

,然后授予所有权限给cacti 这个用户来管理cacti数据库中的所有表格,然后刷新权限。

create database cacti;

grant all privileges on cacti.* to [email protected] identified by 'cacti';

Query OK, 0 rows affected (0.00 sec)

flush privileges;

2,使用cacti的源代码中带的脚本,往cacti数据库中导入表格

cacti-0.8.7g.tar.gz cactiphp页面

cacti-plugin-0.8.7g-PA-v2.8.tar.gz cacti的插件管理器

monitor-latest.tgz 插件 实现监控的功能

sendMsg.zip 实现msn报警功能

settings-latest.tgz 增加设置的功能

feition.tar.bz2 实现飞信报警的功能

thold-latest.tgz 设置域值大小的功能

解压cacti-0.8.7g.tar.gzi到站点主目录下/var/www/html

切换到cacti 目录下,将会看到很多php 文件和一些目录,poller.phpcacti利用snmp协议不断地获取数据的php脚本,rra 目录,用户存放rrd数据库,p_w_picpath 目录,存放cacti生产的图片。Cacti.sql 文件,用于导入到mysql数据库服务器中的cacti数据库中,给cacti数据库创建表格。

mysql -u root -p cacti <./cacti.sql

进入到cacti数据库中查看表格

开源监控软件 cacti的应用

3制作个人的计划任务运行poller.php这个文件,使得cacti不断地获得数据

crontab -e

*/5 * * * * php /var/www/html/cacti/poller.php >/dev/null 2>&1

4,切换到include 目录下打开config.php ,指明php连接到cacti数据库的账号和口令

开源监控软件 cacti的应用

5,创建系统账号cacti,把logrra 目录的拥有者设置为cacti

useradd cacti

passwd cacti

Chown -R log rra

6,通过浏览器访问站点主目录下的cacti,将出现安装向导,如果没有问题的话点击finnish

将会出现后台管理员的登陆界面管理员的账号admin,密码;admin

然后系统会让你修改密码,之后将会进入cacti的主界面

开源监控软件 cacti的应用

刚进去因为没有安装插件只能看到console graphs两个菜单,在console菜单下有很多子菜单,比如说 create management templates configurationutilities等。

management 菜单下的graph trees ,用于创建节点的,节点挂载到默认树下面,比如说,创建linux windows 、防火墙节点,与linux相关的图形,挂载到linux节点下,与windows节点相关的图形挂载到windows节点下,与防火墙相关的图像挂载到防火墙相关的节点下。

Templates (模板)菜单下的有图形模板、主机模板、数据模板。当被监管的主机的被监控的对象相同或相似时就可以直接套用模板,主机模板包括一个或多个图形模板 ,图形模板包括一个或多个数据模板。

Configuration 菜单下可以进行相应的设置,

开源监控软件 cacti的应用

General 进行全局的设置,比如说snmp的版本,rrdtool的版本,团体名的版本,设置好之后点击save进行保存。

四 、cacti的应用

1、监控linux本机

1,点击 devices 进行设置添加被监控主机的描述ip地址 和套用的模板,使用snmp获取信息

开源监控软件 cacti的应用

开源监控软件 cacti的应用


2点击保存之后将会看到保存之后的信息,显示的是用snmp获取的信息

,点击create graphs ,对获取的信息制作图形。

开源监控软件 cacti的应用

将会根据相关联的图形模板,创建图形,也可以添加模板,与inux主机相关联的图形模板有linux的内存使用、用户登录数、 进程数。

点击create 将会创建linux内存使用情况图形,用户登录数图形,进程数图形。

切换到cactirra目录下面,将会形成相应的rrd数据库文件,生成rrd文件就一定会有相应的图片产生。

开源监控软件 cacti的应用

开源监控软件 cacti的应用

开源监控软件 cacti的应用

开源监控软件 cacti的应用

开源监控软件 cacti的应用



2、监控windows主机的磁盘使用状况

1,准备工作

安装snmp服务,开启snmp服务,使得windows主机成为一个被监管的设备(agent

Windows 主机的ip地址为192.168.1.102

开始--》控制面板--》添加删除服务--》添加删除组件--》管理和监视工具

进行相关的设置,添加团体名和nmsip地址

开源监控软件 cacti的应用

2, 点击graph trees 创建节点windows xp ,以后windows主机的图形就可以挂 载 到这个节点上

开源监控软件 cacti的应用

3,点击devices 添加被监控的主机,t添加被监管设备的ip地址和要使用的模板,然 后点击create创建。

开源监控软件 cacti的应用

4,为主机选择图形模板

开源监控软件 cacti的应用

5,根据所选择的图形模板,绘制磁盘使用情况的图形

点击devices 将会出现window这台主机,选择windows这台主机挂在到刚刚创建的 windows xp 节点上

开源监控软件 cacti的应用

6,点击graphs这个插件,将会看到windowsxp这个节点,但是还没有出现图片,这个没有关系,点击右上角的logout,从新登陆一下cacti就可以了,将会看到windowsxp节点下面有一台主机winxp,点击winxp将会看到被监控信息,磁盘 物理内存 、虚拟内存使用状况。

开源监控软件 cacti的应用

开源监控软件 cacti的应用

开源监控软件 cacti的应用

五、cacti的报警

简要说明: 实现邮件报警和飞信报警两种功能,cacti所要监控的设备有linux主机本身的用户数,apache服务器的状态 ,磁盘使用情况和windows 主机的磁盘使用情况

拓扑图:

开源监控软件 cacti的应用

一:cacti插件管理器和插件的安装

Apache 服务器状态的监测,要靠apache的一个运行状态脚本来获取apache运行状态信息的, ss_apache_stats.php ,监控apache

状态的图形模板为cacti_host_template_webserver_-_apache.xml,这些图形模板和脚本到网上可以下载,模板可以中cactiweb页面中导入导出。

1,把脚本拷贝到cactiscripts的目录下面

cp -p ss_apache_stats.php /var/www/html/cacti/scripts/

2,通过web方式的访问进入到cacti的主界面,导入监控apache服务器的图形模板

开源监控软件 cacti的应用

导入之后出现如下提示,说明模板导入成功

开源监控软件 cacti的应用

要想监控apache的运行状态的信息,必须打开apache的配置文件,开启状态输出的功能,状态输出功能的实现,是靠apache在启动时调用一个模块来实现的,然后打开输出状态的访问方式,ss_apache_stats.php这个php脚本就是获取apache输出状态的运行脚本。

开源监控软件 cacti的应用

开源监控软件 cacti的应用


重启apache服务器,用浏览器访问http://192.168.1.4/server-status,将会看到apache的输出信息,版本信息,CPU使用信息等。

开源监控软件 cacti的应用

开源监控软件 cacti的应用


3,点击devices 菜单,找到apache所在的linux主机,也就是本地主机,在添加图形模板的位置,将会出现有关apache状态信息的模本,这根导入的模板有关。

开源监控软件 cacti的应用

然后点击添加 保存 最后创建图形

开源监控软件 cacti的应用

点击graphs 找到host :localhost,将会形成相应的图形

开源监控软件 cacti的应用

开源监控软件 cacti的应用

开源监控软件 cacti的应用


4,但是怎么样才能实现报警呢?目录前cacti实现不了,因为没有安装插件,比如说限制域值的插件,状态图标插件。

cacti-plugin-0.8.7g-PA-v2.8.tar.gz 插件管理器

monitor-latest.tgz 显示状态图标的插件,当被监控的设备是绿颜色,说明是up 状态,当为红颜色是就是down状态

sendMsg.zip 实现msn报警的功能

settings-latest.tgz 增加设置功能

thold-latest.tgz 主要设置域值,超出设置的域值,将要报警。

5, 解压cacti的插件管理器cacti-plugin-0.8.7g-PA-v2.8.tar.gz

切换到cacti-plugin-arch/,将会看到一个补丁,导入数据库的一个脚本

开源监控软件 cacti的应用

cacti-plugin-arch/目录下的所有内容,移动到cacti的主目录下面/var/www/html/cacti

pa.sal 导入cacti数据库中,然后给cacti打补丁

开源监控软件 cacti的应用



打完补丁之后刷新cacti的主界面,将会发现cacti的主界面有点乱,打开cacti/include目录下的config.phpcacti与数据库连接的配置文件,修改cacti的访问路径为/cacti/

开源监控软件 cacti的应用

再次刷新cacti的主界面将会清晰明了

开源监控软件 cacti的应用

点击setting --》用户管理-->admin ,勾选插件管理,然后保存

开源监控软件 cacti的应用

点击插件管理器,里面还没有任何插件

开源监控软件 cacti的应用

6,安装所需要的插件monitor-latest.tgzsettings-latest.tgz thold-latest.tgz

解压源代码,把源代码目录移动到cacti目录下的plugins 目录下,修改名称

开源监控软件 cacti的应用

切换到/var/www/html/cacti/plugins/目录下,修改名称,不改名称,cacti识别不到

开源监控软件 cacti的应用

7,刷新cactiweb页面,将会看到三个插件。

开源监控软件 cacti的应用

8,点击按钮,进行插件的安装,安装好之后查件的状态将是active

开源监控软件 cacti的应用

9,点击settings将会出现很多选项,进行设置,比如说设置报警方式铃声报警、邮件报警。

开源监控软件 cacti的应用

二:实现邮件报警功能

1,点击settings 按钮,点击mail/dns插件,进行相应的操作,先发送一个测试邮件,用管理员发送邮件。

开源监控软件 cacti的应用

开源监控软件 cacti的应用


登录qq邮箱查看测试邮件

2,设置域值,实现报警

点击thresholds(域值)菜单,选中要监控的主机,比如监控本地linux主机的进程数目,设置域值,限制进程数目,最大几个进程,最小几个进程,如果超出范围,将进行邮件报警。

开源监控软件 cacti的应用

开源监控软件 cacti的应用


3,进程明显大于100,所以将会发送报警邮件,进入邮箱查看邮件

点击thold 查看告警,如果是红颜色,说明已经超过域值,正在告警,如果是绿颜色,没有超过域值。

开源监控软件 cacti的应用

开源监控软件 cacti的应用


过了五分钟,又收到一条告警信息,进程数达到139个,cacti实施报警

开源监控软件 cacti的应用

4,监控linux主机的apache服务器CPU使用情况,超过1%将进行报警,监控apache服务器的传输的字节数,超过2000字节,将实时报警。

开源监控软件 cacti的应用

开源监控软件 cacti的应用

开源监控软件 cacti的应用


三:实现飞信报警功能

1,解压飞信程序的源代码到当前目录下,拷贝共享库文件到系统共享库目录下也就是/lib目录下,否则,飞信程序执行不了。

开源监控软件 cacti的应用

2,测试飞信程序,是否可以正常发送飞信,先自己给自己发飞信。

语法:--mobile=发信人的电话号码

--pwd=发信人的飞信密码

--to=收信人的电话号码

--file-utf8=要发送的utf8字符集格式的飞信文件

开源监控软件 cacti的应用

发送飞信后将会产生一个以.jpg结尾的图片验证码,导出到windows系统的桌面,然后再linux系统当前状态下输入验证码,将会把飞信发出。

开源监控软件 cacti的应用

开源监控软件 cacti的应用


3,但是如何才能实现cacti的飞信报警呢?有一个发送飞信的脚本,当监控的设备数据信息超过某个范围时,cacti自动运行脚本发送飞信,可以实现用户不用上网,不在网管工作站,远距离的接受报警信息。把飞信脚本拷贝到 /var/www/html/cacti/plugins/thold/

mkdir /var/www/html/sendsms/

mv linuxso_20101113/ /var/www/html/sendsms/linuxso

开源监控软件 cacti的应用

切换到 /var/www/html/cacti/plugins/thold/,创建两个文件,alert.log 告警文件,sms.txt 日志文件

开源监控软件 cacti的应用

4,当监控的信息,超过域值时,告诉thold 执行脚本发送告警飞信。打开thold的声明文件thold_functions.php ,添加两条语句。

开源监控软件 cacti的应用

到这里我已经实现了邮件报警和飞信报警,你可以根据我的步骤完成cacti的应用。