Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。

    由于工作中需要用cacti取代mrtg,所以一段时间重点关注了Cacti技术。发现cacti的搭建,不仅是对Linux+apache+php+mysql环境的再次练习,也确实对监控和管理有了更好的方法。

    该软件的强大功能对网络和设备管理者来说不啻是一个得力、必备的工具。

//

 

环境:

相关软件:

Linux AS4 up4

mysql-5.0.22.tar.gz

httpd-2.2.4.tar.gz

php-5.2.4.tar.gz

cgilib-0.5.tar.gz

phpMyAdmin-2.11.1-all-languages.tar.gz

rrdtool-1.2.11.tar.gz

net-snmp-5.2.4.tar.gz

cacti-0.8.6g.tar.gz

安装配置:

  1. mysql安装

解压缩:tar –zvxf mysql-5.0.22.tar.gz

改变目录:cd mysql-5.0.22.tar.gz

添加组:groupadd g 20000 mysql

把用户加入组中:useradd u 20000 g mysql mysql

编译前的配置:

./configure –prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql

编译:make

安装:make install

初始化数据库:/usr/local/mysql/bin/mysql_install_db

设置目录权限:Chown R mysql /var/lib/mysql

复制配置文件:Cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

启动数据库:/usr/local/mysql/bin/mysqld_safe –user=root &

修改root密码:/usr/local/mysql/bin /mysqladmin u root password bobo365

测试数据库:/usr/local/mysql/bin/mysql –u root –p

Mysql>

添加到自动启动:# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

#chkconfig –level 3 mysqld on

  1. 安装apache

Tar –zvxf httpd-2.2.4.tar.gz

Cd httpd-2.2.4

./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --with-included-apr  (--enable-module=so --enable-module=most --enable-shared=max)

Make

Make install

安全加固:

隐藏和伪装apache版本:找到关键字ServerSignature将其设定为

ServerSignature off

ServerTokens Pord

安装前编译ap_release.h文件,修改“#define AP_SERVER_BASEPRODUCT\Apache””为“#define AP_SERVER_BASEPRODUCT\Microsoft-IIS/5.0\””

编辑os/unix/os.h,修改“define PLATFORM\Unix””为“define PLATFORM\Win32””

禁止显示动态目录索引:

Options –Indexes FollowSymLinks

rc.local上加入一行/usr/local/apache/bin/apachectl k start,系统启动时启动Apache服务。

  1. 安装php

(安装libxmlRedHat AS 4默认安装libxml包,但版本太低,PHP5需要更高版本的libxml包。

rpm -e libxml-devel

rpm -e libxml

# tar –zxvf libxml2-2.6.25.tar.gz

# cd libxml2-2.6.25

# ./configure

# make

# make install

 

Tar –zvxf php-5.2.4.tar.gz

Cd php-5.2.4

./configure --prefix=/usr/local/php –with-mysql=/usr/local/mysql –with-apxs2=/usr/local/apache/bin/apxs --enable-sockets

# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-gd=/usr/local/libgd --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype –with-mail --with-jpeg-dir=/usr/local/libjpeg --with-png --with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php --enable-sockets --with-mysql=/usr/local/mysql

--with-zlib-dir=/usr/include --with-gd

Make

Make install

Cp php.ini-dist /usr/local/lib/php/php.ini

修改httpd.conf文件:

AddType application/x-httpd-php .php

AddType application/x-httpd-php –source .phps

测试:<? phpinfo(); ?>

4、设置mysql

[root@Bleach php-4.3.10]# /usr/local/mysql/bin/mysql -u root -pmysql

mysql> create database cactidb;

mysql> grant all on cactidb.* to root;

mysql> grant all on cactidb.* to root@localhost;

mysql> grant all on cactidb.* to cactiuser;

mysql> grant all on cactidb.* to cactiuser@localhost;

mysql> set password for cactiuser@localhost=password('cactipw');

注:以上语句输出 Query OK, 0 rows affected (0.01 sec) 表示成功

mysql> exit

Mysql设置完毕

5、安装phpMyAdmin

Tar –zvxf phpMyAdmin-2.11.1-all-languages.tar.gz

Mv phpMyAdmin-2.11.1 /var/www/html/phpMyAdmin

Vi config.inc.php

$cfg['Servers'][$i]['user'] = 'root';

$cfg['Servers'][$i]['password'] = 'bobo365';

设置数据库连接。

测试。

6、安装rrdtool

(1.安装cgilib

tar -zxf cgilib-0.5.tar.gz

cd cgilib-0.5

make CC=gcc CFLAGS="-O3 -fPIC –I."

cp cgi.h /usr/include/

cp libcgi.a /usr/local/bin/

 1.安装cgilib

 tar -zxf cgilib-0.5.tar.gz

 cd cgilib-0.5

 make CC=gcc CFLAGS="-O3 -fPIC -I."

 mkdir -p /usr/local/cgilib/include

 cp *.h /usr/local/cgilib/include

 mkdir -p /usr/local/cgilib/lib

 cp libcgi* /usr/local/cgilib/lib

(2)安装libart_lgpl

Rpm –ivh libart_lgpl-2.3.11-2.i386.rpm

Rpm –ivh libart_lgpl-devel-2.3.11-2.i386.rpm

(3)安装rrdtool

tar -zxf rrdtool-1.2.11.tar.gz

cd rrdtool-1.2.11

./configure --prefix=/usr/local/rrdtool --disable-python --disable-tcl

make

make install

ln –s /usr/local/rrdtool/bin5 * * * * /usr/local/php/bin/php /usr/local/apache/htdocs/cacti /poller.php > /dev/null 2>&1

保存退出:wq

全部设置完毕。

打开浏览器  进入cacti的初始设置页面

第一次默认登陆账号:admin 密码 admin

登陆后在新改个密码就OK

需要说明的还有路径

[Copy to clipboard]CODE:

snmpwalk Binary Path  /usr/bin/snmpwalk

snmpget Binary Path /usr/bin/snmpget

RRDTool Binary Path /usr/rrdtool-1.0.50/src/rrdtool

PHP Binary Path /www/php/bin/php

Cacti Log File Path /www/htdocs/cacti/log/cacti.log

Cactid Poller File Path /www/htdocs/cacti/poller.php

注:此时graphs还不能显示图形,需要将服务重新启动一下

[Copy to clipboard]CODE:

[root@Bleach scripts]# service snmpd restart

[root@Bleach scripts]# service mysql restart

[root@Bleach scripts]# service httpd restart

 //

如果您是Linux主機的話請先確定你的snmpd.conf有無下面字串

view systemview included .1.3.6.1.2.1.2

如果沒有請自行加入

 

此字串是偵測Interfaces

 

請先確定您的DevicesData Query有新增SNMP - Interface Statistics

 

Create  New Graphs → 選擇您要偵測的Host

 

Data Query [SNMP - Interface Statistics]裡面勾選您要偵測的網卡介面

選擇右下角的Select a graph typeIn/Out Bits或者您想要的單位

好了之後點選右下方的create送出新增

 

 

再到Graph Trees把剛剛的Host或者Graphs新增進去即可查詢

 

 

cacti-0.8.7.tar.gz

cacti-plugin-arch.tar.gz

cacti-spine-0.8.7.tar.gz

 

   

    Cacti还有需要好用的小插件,有待进一步学习。

    该系统的搭建涉及的环节颇多,遗憾的是在第一次搭建完成并移植到生产环境后,再去搭建时总碰到一些问题,从而影响了最后结果的呈现。等有机会再重新搭建一遍。相信熟能生巧吧。 

CACTI的安装涵盖了LAMP各个方面,实际环境中完全可以使用成型的CactiEZ中文版直接安装。

 

安装完CactiEZ中文版后,授权其他设备有MYSQL管理权限:

[root@CactiEZ init.d]#service mysqld stop

[root@CactiEZ init.d]# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

[root@CactiEZ init.d]# mysql -u root mysql

mysql> update mysql.user set password=password("bobo365") where user="root";

Query OK, 0 rows affected (0.00 sec)

Rows matched: 3  Changed: 0  Warnings: 0

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> quit

Bye

[root@CactiEZ init.d]# ./mysqld start

Starting mysqld:                                           [  OK  ]

[root@CactiEZ init.d]# mysql -uroot -p

Enter password: 

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

Your MySQL connection id is 3

Server version: 5.1.47 Source distribution

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| cacti              |

| mysql              |

| test               |

+--------------------+

4 rows in set (0.00 sec)

mysql> 

mysql> GRANT ALL PRIVILEGES ON *.* TO root@192.168.2.243 IDENTIFIED BY 'bobo365' WITH GRANT OPTION; 

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> quit

[root@CactiEZ init.d]# ./mysqld restart

120731 12:07:58 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

Stopping mysqld:                                           [  OK  ]

Starting mysqld:                                           [  OK  ]

[1]+  Done                    mysqld_safe --user=mysql --skip-grant-tables --skip-networking