大纲

一、前言

二、Cacti 概述

三、Cacti 工作流程

四、Cacti 安装

五、配置Cacti监控本机

注,操作系统 CentOS 6.4 x86_84,软件版本 Cacti-0.8.8b 目前最新版。 (说明:本博文的一些图片自于开源社区与官方网站并不是所有内容全是原创)


一、前言

在前面的几篇博客中我们讲解了,监控的概述、SNMP原理与实战、RRDTool绘图工具使用,这几篇博文都是做为铺垫来为我们讲解Cacti监控工具做准备,通过上面博文的讲解,我们知道可以通过snmp协议来收集远程主机的系统状态信息,如CPU使用率、内存的使用率、网卡流量、TCP连接数据等,然后将收集的数据保存在RRD文件中,再通过RRTool复杂的命令行工具来绘图。通过实际操作我们会发现,虽然RRDTool绘图工具功能很强大,但是使用非常的复杂。还有以下缺点,

  • RRDTool只能存储数据和画图,它没有像MRTG中集成的数据采集功能,要手动收集数据或写脚本收集数据。

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

  • 无用户、图像管理功能

然后我们就会说了,有没有什么工具能补全以上缺点呢?答案是肯定有的,下面我们就来说一说我们这篇博文的主角Cacti。


二、Cacti概述

Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,让你添加自己的snmp_query和script!功能非常强大完善,界面友好。可以说,Cacti将rrdtool的所有“缺点”都补足了!下图是Cacti运行的主界面,

c1

官方网站:http://www.cacti.net。好了,Cacti的简单介绍我们就说到这里了,下面我们来看一下Cacti的工作流程。


三、Cacti 工作流程

c2

下面我们来简单的说明一下Cacti的工作流程,

  • 步骤一,snmp协议收集远程服务器的数据

  • 步骤二,将snmp收集的数据内容保存到rrd数据库中

  • 步骤三,若用户查看某台设备上的流量或其它状态信息

  • 步骤四,在mysql数据库中查找该设备对应的rra数据库文件的名称

  • 步骤五,通过rrdtool命令进行绘图即可

好了,在前面的几篇博客中我们讲解了SNMP协议,也讲解了RRDTool工具的使用,现在再来学习Cacti就非常的简单了,下面我们来安装并使用Cacti。


四、Cacti 安装

注,Cacti的运行是基于LAMP环境的首先我们来安装LAMP环境。(LAMP环境安装有两种方法,有时间的博友可以使用源码安装,不想用源码安装的博友可以参考我的安装方法全部用yum安装。)下面我们来具体演示一下,

1.安装yum源

[root@node1 ~]# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Retrieving http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Preparing...        ########################################### [100%]
  package rpmforge-release-0.5.3-1.el6.rf.x86_64 is already installed #我这边已经安装好了

2.同步时间

[root@node1 ~]# ntpdate 202.120.2.101
12 Oct 11:03:56 ntpdate[13805]: adjust time server 202.120.2.101 offset 0.000661 sec

3.安装LAMP环境

首先,用yum安装相关软件包,

[root@node1 ~]# yum install -y httpd php php-mysql php-snmp php-xml php-gd mysql mysql-server gd gd-devel

设置开机自启动并启动服务,

[root@node1 ~]# chkconfig httpd on
[root@node1 ~]# service httpd start
正在启动 httpd:                      [确定]
[root@node1 ~]# chkconfig mysqld on
[root@node1 ~]# service mysqld start
正在启动 mysqld:                     [确定]
[root@node1 ~]# netstat -ntulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address        Foreign Address       State    PID/Program name
tcp    0   0 0.0.0.0:22         0.0.0.0:*          LISTEN   1045/sshd  
tcp    0   0 127.0.0.1:25        0.0.0.0:*          LISTEN   1122/master 
tcp    0   0 127.0.0.1:6010       0.0.0.0:*          LISTEN   13786/sshd 
tcp    0   0 127.0.0.1:6012       0.0.0.0:*          LISTEN   17820/sshd 
tcp    0   0 127.0.0.1:6013       0.0.0.0:*          LISTEN   31664/sshd 
tcp    0   0 127.0.0.1:199        0.0.0.0:*          LISTEN   13017/snmpd 
tcp    0   0 0.0.0.0:3306        0.0.0.0:*          LISTEN   13375/mysqld
tcp    0   0 :::80            :::*            LISTEN   13917/httpd 
tcp    0   0 :::22            :::*            LISTEN   1045/sshd  
tcp    0   0 ::1:25           :::*            LISTEN   1122/master 
tcp    0   0 ::1:6010          :::*            LISTEN   13786/sshd 
tcp    0   0 ::1:6012          :::*            LISTEN   17820/sshd 
tcp    0   0 ::1:6013          :::*            LISTEN   31664/sshd 
udp    0   0 0.0.0.0:161         0.0.0.0:*                13017/snmpd

提供php页面并测试php环境,

[root@node1 ~]# cd /var/www/html/
[root@node1 html]# vim index.php
<?php
    phpinfo();
?>

c3

好了,当大家看到这个页面时,就说明我们php环境安装完成,下面我们来测试mysql数据库。

[

root@node1 ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 96186
Server version: 5.1.69 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of the