Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。使用cacti可以有效的监控设备的具体情况。以下篇幅,笔者将讲述如何安装cacti以及使用cacti来监控各种网络设备。

实现需求:某公司的Web服务器,使用的是lamp技术,公司拟对Web服务器(包括操作系统、mysql、apache等信息)、公司的二层交换机、防火墙进行监控。

实验拓扑:

top

实验设备:监控主机(Linux 5.4)

Web服务器(Linux 5.4 lamp环境)

H3c二层交换机 quidway 2000 series(2403H-EI)

Juniper防火墙(ssg 5)

一、Web服务器配置

 1. LAMP环境搭建

(1)、准备环境

首先需要为Web主机配置正确的ip地址和网关等参数,另外需要配置好yum仓库。

(2)、安装相关的组件

//安装Apahce, PHP, MySQL以及php连接mysql库组件。
#yum -y install httpd php mysql mysql-server php-mysql
//安装apache扩展,让apache更好的支持其他的软件。
#yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
//安装php的扩展,apache本身并不支持php文件,要安装对应的php软件,然后进行http.conf配置;让apache能解析.php文件。
#yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc
//安装MySQL的扩展,更好的实现mysql的功能。
#yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql

(3)、修改apache的配置文件

# vim /etc/httpd/conf/httpd.conf

391 DirectoryIndex index.php index.html index.html.var

//启动各项服务并设置为开机启动

# service httpd start &&chkconfig httpd on

# service mysqld start &&chkconfig mysqld on

(4)、测试相关服务情况

//测试apache的运行情况,查看是否正常调用php

# cd /var/www/html

# vim index.php

<?php

phpinfo();

?>

//使用客户端查看情况

linux.1.1.1

//测试apache与mysql的连接性

<?php

$lin=mysql_connect('127.0.0.1','root','');

if($lin)

echo "ok";

else

echo "failed";

?>

//使用客户端查看情况

linux.1.1.2

2. SNMP设置

(1)、安装snmp的组件

# yum install net-snmp

(2)、修改相关的配置文件

# vim /etc/snmp/snmpd.conf

62 access notConfigGroup "" any noauth exact all none none

打开85行

85 view all included .1 80

# service snmpd start && chkconfig snmpd on

3. MySQL配置

为了便于mysql被网管到,需要对mysql进行相关的设置

# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 35

Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

//管理mysql需要相关的权限,将所需要的权限赋予网管主机

mysql&gt; grant process,super on *.* to 'cacti'@'192.168.10.0' identified by 'cacti';

Query OK, 0 rows affected (0.01 sec)

//授权网管主机进行网管

mysql&gt; grant all privileges on cacti.* to cacti@"192.168.10.0" identified by "cacti";

Query OK, 0 rows affected (0.03 sec)

//刷新

mysql&gt; flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql&gt; \q

Bye

//重启服务

# service mysqld restart

Stopping MySQL: [ OK ]

Starting MySQL: [ OK ]

#

二、H3C交换机配置

1. 基本配置

//配置主机名称

[Quidway]sysname sw

//为vlan1配置管理IP地址

[sw]inter vl 1

[sw-Vlan-interface1]ip add 192.168.10.2 255.255.255.0

[sw-Vlan-interface1]quit

//配置与防火墙相连接口

[sw]inter eth0/10

[sw-Ethernet0/10]port link-t tr

[sw-Ethernet0/10]port tr per vl all

请等待...:........................................ 完成.

[sw-Ethernet0/10]quit

2. SNMP配置

[sw]snmp //开启SNMP

[sw]snmp community write private

[sw]snmp community read public //沟通的重要密钥

[sw]snmp sys-info version v2c //版本一定要和主监控设备的版本一致

[sw]snmp target-host tr add u 192.168.10.2 pa sec public v2 //配置远端的追踪目标

三、Juniper防火墙配置

 1. 基本配置

//配置主机名称

ssg5-serial-&gt; set hostname firewall

//配置与交换机相连的接口组的地址

firewall -&gt; set inter bgroup0 zone trust

firewall -&gt; set inter bgroup0 ip 192.168.10.2 255.255.255.0

//开启bgroup0的各项网管功能。可以不开启

firewall -&gt; set inter bgroup0 manage

//配置外口的地址

firewall -&gt; set inter eth0/0 zone Untrust

firewall -&gt; set inter eth0/0 ip 100.100.100.1 255.255.255.0

//保存配置

firewall -&gt; save

Save System Configuration ...

Done

2. SNMP配置

配置snmp的名称,并创建新的团体。

juniper.1.1.1

juniper.1.1.2

查看新创建的团体信息

juniper.1.1.3

四、监控主机配置

 1. 搭建Cacti

(1)、安装相关组件

//首先需要将所需要的组件上传到监控主机。笔者上传的所有文件均位于管理员的家目录。

monitor.1.1.1

# yum install httpd php php-mysql php-snmp mysql-server perl-DBD-MySQL php-pdo net-snmp net-snmp-libs net-snmp-utils net-snmp-devel ruby ruby-devel –y

//启动相关的服务,并设置为开机启动

# service httpd start && chkconfig httpd on

# service mysqld start && chkconfig mysqld on

(2)、修改snmp

//修改本机的snmp配置,使本机也可以被网管到

# vim /etc/snmp/snmpd.conf

62 access notConfigGroup "" any noauth exact all none none

打开85行

85 view all included .1 80

//启动snmp服务,并设置为开机启动

# service snmpd start && chkconfig snmpd on

(3)、配置rrdtool

//回到安装目录,查看相关文件的信息

# cd ~/cacti

# ll

total 9056

-rw-r--r-- 1 root root 13083 Feb 8 02:53 ApacheStats_0.8.2.zip

-rw-r--r-- 1 root root 2236916 Feb 8 02:53 cacti-0.8.7g.tar.gz

-rw-r--r-- 1 root root 207069 Feb 8 02:53 cacti-plugin-0.8.7g-PA-v2.8.tar.gz

-rw-r--r-- 1 root root 4960221 Feb 8 02:53 feition.tar.bz2

-rw-r--r-- 1 root root 442525 Feb 8 02:53 monitor-latest.tgz

-rw-r--r-- 1 root root 1154026 Feb 8 02:53 rrdtool-1.4.4-1.el5.wrl.i386.rpm

-rw-r--r-- 1 root root 55839 Feb 8 02:53 rrdtool-perl-1.4.4-1.el5.wrl.i386.rpm

-rw-r--r-- 1 root root 18906 Feb 8 02:53 rrdtool-ruby-1.4.4-1.el5.wrl.i386.rpm

-rw-r--r-- 1 root root 6701 Feb 8 02:53 sendMsg.zip

-rw-r--r-- 1 root root 25570 Feb 8 02:53 settings-latest.tgz

-rw-r--r-- 1 root root 90488 Feb 8 02:53 thold-latest.tgz

#

//安装rrdtools

# yum localinstall rrdtool* --nogpgcheck –y

//拆解 cacti的数据包到相关的目录中

#tar -zxvf cacti-0.8.7g.tar.gz -C /var/www/html

//切换到相关目录中

# cd /var/www/html/

//为了便于记忆,修改目录的名称。

# mv cacti-0.8.7g/ cacti

(4)、MySQL配置

//打开mysql

# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

//创建cacti数据库

mysql&gt; CREATE DATABASE cacti;

Query OK, 1 row affected (0.00 sec)

//赋予本地相关的权限

mysql&gt; grant all privileges on cacti.* to cacti@localhost identified by 'cacti';

Query OK, 0 rows affected (0.01 sec)

mysql&gt; grant all privileges on cacti.* to cacti@127.0.0.1 identified by 'cacti';

Query OK, 0 rows affected (0.00 sec)

//赋予远端相关的权限

mysql&gt; grant all privileges on cacti.* to cacti@192.168.10.0 identified by 'cacti';

Query OK, 0 rows affected (0.00 sec)

//刷新

mysql&gt; flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql&gt; \q

Bye

#

(5)、其它配置

//创建计划任务

# crontab –e

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

#

//查看创建的计划任务

# crontab -l

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

#

//创建cacti的帐号,并赋予其密码

# useradd cacti

# passwd cacti

Changing password for user cacti.

New UNIX password:

BAD PASSWORD: it is too simplistic/systematic

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

#

//将cacti的数据库导入到mysql中

#mysql -ucacti -pcacti cacti &lt;/var/www/html/cacti/cacti.sql

# cd /var/www/html/

# cd cacti/

//修改所有文件的拥有者信息

# chown -R root.root *

//修改配置文件

# vim include/config.php

26 $database_type = "mysql";

27 $database_default = "cacti";

//注意此处一定要写localhost

28 $database_hostname = "localhost";

//数据库的用户名和密码一定是cacti

29 $database_username = "cacti";

30 $database_password = "cacti";

31 $database_port = "3306";

#

//重启apache

# service httpd restart

#

2. 安装插件管理器

#cd ~/cacti

//解压有关插件

# tar -zxvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz

# cp -R cacti-plugin-arch/* /var/www/html/cacti/

# cd /var/www/html/cacti/

//导入sql文件

# mysql -ucacti -pcacti cacti &lt;pa.sql

//打补丁

# patch -p1 -N &lt;cacti-plugin-0.8.7g-PA-v2.8.diff

//修改url的路径

# vim include/config.php

42 $url_path = "/cacti/";

# cd ~/cacti/

//解压缩

# tar -zxvf monitor-latest.tgz

# tar -zxvf thold-latest.tgz

#tar -zxvf settings-latest.tgz

//移动文件到相关的目录

#mv monitor-0.9/ /var/www/html/cacti/plugins/monitor

#mv thold-0.41/ /var/www/html/cacti/plugins/thold

#mv settings-0.6/ /var/www/html/cacti/plugins/settings

#

3. 配置管理界面

进入管理界面,输入http://192.168.10.1/cacti

monitor.1.1.2

monitor.1.1.3

monitor.1.1.4

monitor.1.1.5

monitor.1.1.6 

勾选相关的组件

monitor.0.1.1

monitor.0.1.2

安装有关组件

monitor.1.2.3

monitor.1.2.4

设置版本和设置报警信息

monitor.1.2.6

monitor.0.1.3

五、监控Web服务器

在添加Web服务器之前,可以在监控主机上使用以下命令来测试,Web服务器是否可以被网管到。如果出现很多数据证明可以被网管,否则就是无法网管,需要查找原因。

# snmpwalk -v2c -c public 192.168.10.3

1. 添加设备

monitor.1.2.7

monitor.1.2.8

添加相关的管理项,并创建新的视图

monitor.1.2.10

monitor.1.2.14

2. 添加树

monitor.1.2.16

monitor.1.2.17

将已经配置好的主机添加到刚刚创建的树中

monitor.1.2.18

3. 查看监控主机

monitor.1.2.20

六、监控 Web服务器的Apache

 1. 在监控主机上配置

//解压缩文件

# unzip ApacheStats_0.8.2.zip

# cd ApacheStats_0.8.2

# ll

total 116

-rw-r--r-- 1 root root 102879 Oct 5 2009 cacti_host_template_webserver_-_apache.xml

-rw-r--r-- 1 root root 4108 Oct 5 2009 ss_apache_stats.php

#

//将文件移动到相关的目录中

# mv ss_apache_stats.php /var/www/html/cacti/scripts/

2. 导入模版

monitor.1.3.1

monitor.1.3.2

3. 添加到设备

monitor.1.3.3

4. 绘图

monitor.1.3.6

monitor.1.3.7

5. 查看

monitor.1.3.9

七、监控 Web服务器的MySQL

1. 在监控主机上配置

 (1)、解压缩

//解压缩

# tar -zxvf mysql-cacti-templates-1.1.2.tar.gz

# cd mysql-cacti-templates-1.1.2

//将文件移动到相关目录

# mv ss_get_mysql_stats.php /var/www/html/cacti/scripts/

#

(2)、修改相关配置文件

# cd /var/www/html/cacti/scripts/

# vim ss_get_mysql_stats.php

修改30、31、34行数据

30 $mysql_user = 'cacti';

31 $mysql_pass = 'cacti';

34 $cache_dir = '/var/www/html/cacti/cache';

(3)、修改权限

# cd /var/www/html/cacti/

# mkdir cache

# chmod 777 -R cache/

# chown -R apache.apache cache/

2. 导入模版

monitor.1.4.2

monitor.1.4.3

3. 添加到设备

monitor.1.4.5

4. 绘图

monitor.1.4.7

monitor.1.4.8

5. 查看

monitor.1.4.9

八、监控二层交换机

在监控之前,需要知道二层交换机的OID,否则将无法实现监控。笔者从网上已经查到了H3C交换机2403H-EI的OID值。在配置之前,需要在监控主机上,测试是否能够网管到二层交换机。

# snmpwalk -v2c -c public 192.168.10.2 1.3.6.1.4.1.2011.6.1.2.1.1.2.0

//出现以下数据,说明正常,可以网管

SNMPv2-SMI::enterprises.2011.6.1.2.1.1.2.0 = Gauge32: 16760832

1. 复制并修改数据模版

(1)、复制数据模版

monitor.2.1.1

monitor.2.1.2

(2)、修改复制的数据模版

monitor.2.1.3

monitor.2.1.4

2. 复制并修改绘图模版

(1)、复制模版

monitor.2.1.6

monitor.2.1.8

(2)、修改模版

monitor.2.1.9

复制过来的数据条目删除,创建新的数据条目

monitor.2.1.10

monitor.2.1.11

3. 添加设备

添加新的设备

monitor.2.1.12

monitor.2.1.13

创建绘图

monitor.2.1.14

monitor.2.1.18

4. 创建树

monitor.2.1.19

monitor.2.1.20

5. 将设备添加到树中

monitor.2.1.22

6. 查看

monitor.2.1.24

九、监控防火墙

在监控之前,需要知道防火墙的OID,否则将无法实现监控。笔者从网上已经查到了Juniper防火墙SSG 的OID值。在配置之前,需要在监控主机上,测试是否能够网管到防火墙。

# snmpwalk -v2c -c public 192.168.10.254 .1.3.6.1.4.1.3224.16.3.2.0

//出现以下数据,说明正常,可以网管

SNMPv2-SMI::enterprises.3224.16.3.2.0 = INTEGER: 4

1. 复制并修改数据模版

(1)、复制数据模版

monitor.3.1.1

monitor.3.1.2

(2)、修改复制的数据模版

monitor.3.1.4

2. 复制并修改绘图模版

 (1)、复制模版

monitor.3.1.6

monitor.3.1.8

(2)、修改模版

复制过来的数据条目删除,创建新的数据条目

monitor.3.1.10

monitor.3.1.11

monitor.3.1.12

3. 添加设备

添加新的设备

monitor.3.2.1

monitor.3.2.2

创建绘图

monitor.3.2.7

monitor.3.2.8

4. 创建树

monitor.3.2.9

monitor.3.2.10

5. 将设备添加到树中

monitor.3.2.12

6. 查看

monitor.3.2.14

十、报警测试

将Webserver服务器down掉,结果5分钟后,出现了报警声音,警告已经丢失了目标主机。

monitor.3.2.15