四、Cacti的安装
该安装文档的平台是Linux,其它平台上的安装方法请参照Cacti的官方网站。
运行Cacti需要Apache+PHP+MySQL的环境,搭建该环境的方法很简单,很多文章有过详细的安装教程,就不在此赘述了。下面是安装Cacti的步骤:
1.设置mysql
创建数据库、数据库用户,调整权限、密码:
# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 4.0.23-standard
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>; create database cactidb;
Query OK, 1 row affected (0.00 sec)
mysql>; grant all on cactidb.* to root;
Query OK, 0 rows affected (0.01 sec)
mysql>; grant all on cactidb.* to root@localhost;
Query OK, 0 rows affected (0.01 sec)
mysql>; grant all on cactidb.* to cactiuser;
Query OK, 0 rows affected (0.00 sec)
mysql>; grant all on cactidb.* to cactiuser@localhost;
Query OK, 0 rows affected (0.01 sec)
mysql>; set password for cactiuser@localhost=password(’cactipw’);
Query OK, 0 rows affected (0.00 sec)
mysql>; exit
2.安装RRDTool
从RRDTool官方网站(见文章最后的“资源”)下载最新的RRDTool包,当前最新的版本是rrdtool-1.2.12。在该下载页面上,还可以看到有一个“libs”的目录,里面的包也要全部下载。
那么,我们下载了下面的几个包:
◆libart_lgpl-2.3.17
◆libpng-1.2.8-config
◆zlib-1.2.2
◆freetype-2.1.9
安装方法:
./configure �Cprefix=/usr #把东西装到 /usr 目录下
make ; make install #编译及安装
安装完上述lib包后,我们就可以进行RRDTool的安装了:
rrdtool-1.2.12包的安装方法:
cd rrdtool-1.2.12
./configure �Cprefix=/usr
make && make install
测试:
运行rrdtool �Cv
可以看到RRDTool的用法以及版本信息:
RRDtool 1.2.12 Copyright 1997-2005 by Tobias Oetiker
Compiled Apr 30 2006 11:30:36
Usage: rrdtool [options] command command_options
Valid commands: create, update, updatev, graph, dump, restore,
last, first, info, fetch, tune, resize, xport
RRDtool is distributed under the Terms of the GNU General
Public License Version 2. ( [url]www.gnu.org/copyleft/gpl.html[/url])
For more information read the RRD manpages
RRDTool官方的详细安装方法可以在下载的RRDTool源码里的doc/rrdbuild.pod文件里找到。
3.安装SNMP采集工具
SNMP全名是简单网络管理协议,几乎所有的网络设备(交换机、路由器等)和操作系统默认都安装了snmp服务。
Cacti系统所在的服务器并不一定要安装SNMP服务,但是Cacti系统采集数据要用到Net-SNMP包里面的几个工具,所以最好也在Cacti服务器上安装SNMP服务。我们可以直接在系统中运行snmpwalk和snmpget看是否有该命令,如果有则无需安装了。
如果操作系统没有安装SNMP,可以到本文最后的资源里的Net-SNMP官方网站上下载源码或二进制包进行安装。
4.安装Cacti
Cacti是一套PHP程序,当前最新版本是0.8.6h。安装时需要对Cacti包文件和数据库进行部分设置。
假设apache的DocumentRoot目录为/www/htdocs:
cp cacti-0.8.6h.tar.gz /www/htdocs
tar xzvf cacti-0.8.6h.tar.gz
mv cacti-0.8.6h cacti
useradd cactiuser �Cd /www/htdocs/cacti
导入数据库、设置权限:
cd /www/htdocs/cacti
mysql -u root cactidb < cacti.sql
chown -R cactiuser rra/ log/
编辑配置文件/www/htdocs/cacti/include/config.php :
$database_type = “mysql”;
$database_default = “cactidb”;
$database_hostname = “localhost”;
$database_username = “cactiuser”;
$database_password = “cactipw”;
定时让Cacti的poller取数据:
crontab �Cu cactiuser �Ce
加入:
*/5 * * * * /www/php/bin/php /www/htdocs/cacti/poller.php >; /dev/null 2>;&1
注意:不要使用root用户运行上面的“poller.php”命令,否则请再次运行chown �CR cactiuser rra/ log/
五、基本设置:
Cacti安装完成后,并不能立即进行数据的采集,我们还需要对Cacti服务器和客户端进行设置:
Cacti端的设置:
Cacti端主要是设置一些应用程序的路径和版本等信息,这些信息非常重要,因为不同版本程序的参数会有差异,有时会让Cacti不能正常工作。
在浏览器上输入:
[url]http://IP/cacti[/url]
进入cacti的初始设置页面:
在这里我们要输入一些原始的信息:
点击NEXT ->
选择“New Install”,点击NEXT ->
输入Cacti需要用到的程序的绝对路径、版本等信息(如图5),点击“Finish”->
输入原始的用户和密码:admin/admin,点击“login” ->
更改admin用户的密码->
点击 “Save”即可进入Cacti的控制面板。
图
5、
Cacti安装设置
上述设置必须准确,否则Cacti可能无法正常运行,使用管理员用户登陆后可以在“Settings”面板中进行修改。
设置Net-SNMP:
该设置针对的是被采集端而非Cacti服务端。一般的类UNIX操作系统均安装有Net-SNMP软件包,但不同操作系统,甚至不同的Linux版本的安装路径和配置文件可能都不一样。如无特殊的需求,使用系统自带的SNMP程序即可,请参考该操作系统的使用手册。
下面介绍从源码重新编译Net-SNMP的方法:
从Net-SNMP的官方网站下载最新版本的Net-SNMP软件包,解压后进行编译:
# ./configure �Cprefix=/usr/snmp �Cenable-mfd-rewrites �Cwith-default-snmp-version=”2″ �Cwith-sys-contact=”yourname” �Cwith-sys-location=”China” �Cwith-logfile=”/var/log/snmpd.log” �Cwith-persistent-directory=”/var/net-snmp”
# make && make install
# mkdir �Cp /usr/snmp/etc/snmp
# cp EXAMPLE.conf /usr/snmp/etc/snmp/snmpd.conf
修改/usr/snmp/etc/snmp/snmpd.conf文件的61和62行,设置可以访问改SNMP的网段以及community名称。
比如设置为
com2sec local localhost public
com2sec mynetwork 192.168.100.0/24 public
表示允许本地和192.168.100.0/24的主机使用 public 来访问该SNMP服务。
另外上述设置也只是针对SNMP1和SNMPV2版本,如果觉得有需要使用SNMP3请参考SNMP的资料。
设置交换设备:
除了监测每一台服务器的性能参数外,在实际的应用中,我们可能更需要监测交换机或路由器的流量。同样的,我们需要开启交换设备的SNMP功能,让Cacti能取到数据。交换设备一般使用设备厂商自己的SNMP软件,下面以CISCO设备为例进行设置:
Router>enable
Password:
Router#
Router#configure terminal
Enter configuration commands, one per line. End
with CNTL/Z.
Router(config)#
下面的命令可以创建一个只读的community名称“public”:
Router(config)#snmp-server community public RO
下面的命令可以创建一个可读写的community名称“private”:
Router(config)#snmp-server community private RW
退出config模式:
Router(config)#exit
Router#
将设置写入NVRAM中::
Router#write memory
Building configuration…
[OK]
Router#
更详细的配置请参照最后一节“资源”中的“How to Configure SNMP Community Strings”链接。
测试SNMP服务
在Cacti服务器上使用命令:
snmpwalk -v 2c -c public 192.168.0.1 if
该命令表示,使用SNMPV2c版本和community 名称 “public”,取服务器(192.168.0.1)的所有interface(网卡)的信息。
如果192.168.0.1的SNMP服务正常,则会返回服务器或交换设备的网卡信息。如果返回错误信息,请检查你的SNMP配置或网络是否正常。
安全
或许有人会说开启了SNMP服务后,服务器和设备会变得不安全了。其实这样的言论可能还停留在多年前对SNMP的看法。其实SNMP最容易被利用的地方不是它的缺陷,而是它默认的查询community――“public”。不负责任的管理员总会留下后门给黑客,这并非软件的错。当前SNMP协议的版本是SNMP3,该版本改变的之前只使用community进行查询的方式而是采用了用户名和密码验证,大大改善了SNMP的安全性。即使不使用SNMP3版本,也可以在配置文件中限制能访问SNMP服务的网段。
当然,如果你对SNMP还是不放心,可以将SNMP 服务bind在内网IP上。没有内网IP?防火墙、ACL总会用吧?