最近公司为了迎接新一轮IT整合,在信息方面准备增加各种安全策略,其中就包括基于RRDTool的监测系统Cacti以及SYSLOG-NG等.
今天我们重点介绍基于RRDTool的监测系统Cacti.包括Cacti的发展由来、优缺点、安装,环境组建及一些常见设置。
简介:
关于Cacti,最早应该追溯到MRTG(MultiRouter Traffic Grapher),这是一款基于SNMP的典型网络流量统计分析工具。它耗用的系统资源很小,它通过SNMP协议从设备得到其流量信息,并将流量负载以包含JPEG格式图形的HTML文档的方式显示给用户,以非常直观的形式显示流量负载。但是MRTG已经太老了!满足不了大流量监控需求了,于是在不久后MRTG的作者们有开发了一款软件来代替MRTG,这款软件就是RRDTool。虽然RRDTool的功能已经日趋完善而且也不断发展成熟,但由于RRDTool复杂的指令,使其使用范围受到了局限。而我们今天要重点介绍的Cacti就是基于RRDTool核心,使用更简单,界面更直观。
下面介绍一下这三个工具各自的优缺点:
MRTG:
优点:简单、易上手,基本安装完了之后只要更改一下配置文件即可。
缺点:
缺点:
1、使用文本式的数据库,数据不能重复使用;
2、只能按日、周、月、年来查看数据;
3、只能画两个DS(一条线、一个块);
4、无管理功能;
rrdtool:
2、只能按日、周、月、年来查看数据;
3、只能画两个DS(一条线、一个块);
4、无管理功能;
rrdtool:
优点:
1、使用rrd存储格式,数据能重复使用,比如我可以将一个rrd文件中的数据与另一个rrd文件中的数据相加。
2、可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图。
3、能画任意个DS。
1、使用rrd存储格式,数据能重复使用,比如我可以将一个rrd文件中的数据与另一个rrd文件中的数据相加。
2、可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图。
3、能画任意个DS。
4、CDEF让你能任意摆弄数据。
缺点:
1、rrdtool的作用只是存储数据和画图,它没有mrtg中集成的数据采集功能;
2、在命令行的使用非常复杂,参数极多;
3、无管理功能。
简单的说,rrdtool就是一个强大的绘图的引擎。
简单的说,rrdtool就是一个强大的绘图的引擎。
cacti其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。更难能可贵的是,它提供了强大的数据管理和用户管理功能,一张图是属于一个host的,每一个host又可以挂载到一个树状的结构上。
用户的管理上,作为一个开源软件,它居然做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与LDAP结合进行用户的验证!Cacti还提供自己增加模板的功能,让你添加自己的snmp_query和script!可以说,cacti将rrdtool的所有“缺点”都补足了!
安装环境及需求:
1.系统:Linux或FreeBSD,如果是RedHat AS4的话net-snmp和rrdtool这两个工具默认是安装好了的(本文以AS4为例)。
2.软件包需求:cacti-0.8.6j,mysql-5.0.20,php-5.2.0,apache2.0.58(以上均为源码包).
2.软件包需求:cacti-0.8.6j,mysql-5.0.20,php-5.2.0,apache2.0.58(以上均为源码包).
1. 安装apache2.0.58
解压软件包,进入安装目录,我的编译过程如下:
# ./configure --prefix=/usr/local/apache2 --enable-modules=so
# make;make install
编译选项比较简单
--prefix=你需要把apache安装的位置
--enable-modules=so意思是可以动态加载apache所需要的.so 的模块
安装完成后,编辑apache的配置文件,使之能正常使用:
# vi /usr/local/apache2/conf/httpd.conf
找到下面这行:
#ServerName www.example.com:80
改为:
ServerName yourIP:80
启动apache:
#/usr/local/apache2/bin/apachectl start
在浏览器里输入你的IP或者localhost测试一下,是否能看到apache的测试页,成功的话,说明安装成功
安装完成后,编辑apache的配置文件,使之能正常使用:
# vi /usr/local/apache2/conf/httpd.conf
找到下面这行:
#ServerName www.example.com:80
改为:
ServerName yourIP:80
启动apache:
#/usr/local/apache2/bin/apachectl start
在浏览器里输入你的IP或者localhost测试一下,是否能看到apache的测试页,成功的话,说明安装成功
2.安装mysql-5.0.20
解压软件包,进入安装目录,我的编译过程如下:
# ./configure --prefix=/usr/local/mysql
# make;make install
# cp support-files/my-medium.cnf /etc/my.cnf (这一步是将配置文件拷贝到/etc下面)
编译选项当中指定安装路径就可以了
配置mysql过程:
#groupadd mysql
#useradd -g mysql mysql
#cd /usr/local/mysql
#./bin/mysql_install_db --user=mysql
#chown -R root .
#chown -R mysql var
#chogrp -R mysql .
启动mysql
#./bin/mysqld_safe --user=mysql &
如果看到下面的信息,就说明启动成功了
# Starting mysqld daemon with databases from /usr/local/mysql/var
可以测试一下,看看能不能登陆mysql数据库
# /usr/local/mysql/bin/mysqladmin -uroot password '你的密码'
解压软件包,进入安装目录,我的编译过程如下:
# ./configure --prefix=/usr/local/mysql
# make;make install
# cp support-files/my-medium.cnf /etc/my.cnf (这一步是将配置文件拷贝到/etc下面)
编译选项当中指定安装路径就可以了
配置mysql过程:
#groupadd mysql
#useradd -g mysql mysql
#cd /usr/local/mysql
#./bin/mysql_install_db --user=mysql
#chown -R root .
#chown -R mysql var
#chogrp -R mysql .
启动mysql
#./bin/mysqld_safe --user=mysql &
如果看到下面的信息,就说明启动成功了
# Starting mysqld daemon with databases from /usr/local/mysql/var
可以测试一下,看看能不能登陆mysql数据库
# /usr/local/mysql/bin/mysqladmin -uroot password '你的密码'
注:给初始登陆mysql的用户root设置密码,当然不设置也能登陆,推荐设置密码
# /usr/local/mysql/bin/mysql -uroot -p你的密码 (注意: -p后面不要带空格)
如果出现下面的欢迎字样,说明连接成功:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.20a-log
mysql>
# /usr/local/mysql/bin/mysql -uroot -p你的密码 (注意: -p后面不要带空格)
如果出现下面的欢迎字样,说明连接成功:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.20a-log
mysql>
3.安装php-5.2.0
解压软件包,进入安装目录,我的编译过程如下:
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php/etc
#make;make install
编译选项中
解压软件包,进入安装目录,我的编译过程如下:
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php/etc
#make;make install
编译选项中
--with-apxs2=/usr/local/apache2/bin/apxs 是说将PHP模块编译进apache,、
--with-mysql=/usr/local/mysql 是说指定mysql的路径
注:其实就是告诉PHP我们的mysql的一些头文件信息,如果你的mysql和PHP不是同一台机器的话,指定mysql的头信息是编译必要的
--with-config-file-path=/usr/local/php/etc 是说将PHP的主配置文件放在什么地方,这是个人习惯
#cp php.ini-dist /usr/local/php/etc/php.ini
#vi /usr/local/php/etc/php.ini
找到如下内容:
register_globals = Off
改为:
register_globals = On
为了使PHP能够配合apache使用,还需要修改apache的配置文件:
#vi /usr/local/apache2/conf/httpd.conf
找到下面字段:
DirectoryIndex
在iindex.html前面添加index.php
并在配置文件最后加入如下字段:
AddHandler php5-script .php
AddType text/html .php
测试PHP是否正常运行:
#vi /usr/local/apache2/htdocs/index.php
写入下面一行:
<?php phpinfo() ?>
保存退出后重新启动apache
#/usr/local/apache2/bin/apachectl restart
这里需要注意,如果系统的selinux没有关闭的话,我们的php的模块是不能被apache正确找到的,
#cp php.ini-dist /usr/local/php/etc/php.ini
#vi /usr/local/php/etc/php.ini
找到如下内容:
register_globals = Off
改为:
register_globals = On
为了使PHP能够配合apache使用,还需要修改apache的配置文件:
#vi /usr/local/apache2/conf/httpd.conf
找到下面字段:
DirectoryIndex
在iindex.html前面添加index.php
并在配置文件最后加入如下字段:
AddHandler php5-script .php
AddType text/html .php
测试PHP是否正常运行:
#vi /usr/local/apache2/htdocs/index.php
写入下面一行:
<?php phpinfo() ?>
保存退出后重新启动apache
#/usr/local/apache2/bin/apachectl restart
这里需要注意,如果系统的selinux没有关闭的话,我们的php的模块是不能被apache正确找到的,
所以在重起apache之前,请将selinux关闭,具体做法是:
#vi /etc/selinux/config
找到如下字段:
SELINUX=enforcing
改为:
SELINUX=disabled
保存退出后需要重新启动电脑
在浏览器里输入IP,如果能够看到phpinfo的测试页,那么PHP已经正常工作了
#vi /etc/selinux/config
找到如下字段:
SELINUX=enforcing
改为:
SELINUX=disabled
保存退出后需要重新启动电脑
在浏览器里输入IP,如果能够看到phpinfo的测试页,那么PHP已经正常工作了
4.安装cacti-0.8.6j
安装前的准备:由于cacti需要net-snmp和rrdtool两个工具来配合使用,所以需要安装这两个工具,默认完全安装RedHat AS4的情况下这两的工具是都安装好的,如果没有安装这两个工具,那么建议去http://rpmfind.net去找相关的rpm包来安装,在这个网站你只要输入工具的名字,就能把rpm包匹配的系统版本的所有rpm包列出来,很方便,rpm包的安装,我这里就不赘述了。
以下的配置是默认安装好了上述两个工具的配置
解压cacti的软件包,进行如下操作:
#mv cacti-0.8.6j /usr/local/apache2/htdocs/cacti
#cd /usr/local/apache2/htdocs/cacti
#/usr/local/mysql/bin/mysql -uroot -p你的密码
mysql> grant all privileges on *.* to '你的用户名[email=]'@'localhost'[/email] identified by '为这用户添加的密码'
with grant option;
mysql> create database cacti;
mysql> exit
#/usr/local/mysql/bin/mysql -u用户名 -p你的密码 cacti < cacti.sql
#vi include/config.php
修改如下段落:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser";
$database_port = "3306";
改为:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "用户名";
$database_password = "你的密码";
$database_port = "3306";
修改snmp的配置文件:
#vi /etc/snmp/snmpd.conf
修改下面几部分内容:
1.)com2sec notConfigUser default public
改为:com2sec notConfigUser localhost public
2.)access notConfigGroup "" any noauth exact systemview none none
改为:access notConfigGroup "" any noauth exact all none none
3.)#view all included .1 80
去掉注释
保存退出
启动snmp
#/etc/init.d/snmpd start
修改计划任务,使CACTI每5分钟获得一次数据:
#crontab -e -u 用户名
添加如下内容:
*/5 * * * * /usr/local/php/bin/php /usr/local/apache2/htdocs/cacti/poller.php > /dev/null 2>&1
保存退出
#chown -R rra/ log/
这样cacti就基本配置完成了
在浏览器里输入IP/cacti初始进入的时候需要告诉cacti你的PHP的可执行文件的路径,其他默认就可以,默认的
用户名和密码是admin和admin。进去后要马上修改密码,保存后就进入漂亮的cacti界面。
安装前的准备:由于cacti需要net-snmp和rrdtool两个工具来配合使用,所以需要安装这两个工具,默认完全安装RedHat AS4的情况下这两的工具是都安装好的,如果没有安装这两个工具,那么建议去http://rpmfind.net去找相关的rpm包来安装,在这个网站你只要输入工具的名字,就能把rpm包匹配的系统版本的所有rpm包列出来,很方便,rpm包的安装,我这里就不赘述了。
以下的配置是默认安装好了上述两个工具的配置
解压cacti的软件包,进行如下操作:
#mv cacti-0.8.6j /usr/local/apache2/htdocs/cacti
#cd /usr/local/apache2/htdocs/cacti
#/usr/local/mysql/bin/mysql -uroot -p你的密码
mysql> grant all privileges on *.* to '你的用户名[email=]'@'localhost'[/email] identified by '为这用户添加的密码'
with grant option;
mysql> create database cacti;
mysql> exit
#/usr/local/mysql/bin/mysql -u用户名 -p你的密码 cacti < cacti.sql
#vi include/config.php
修改如下段落:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser";
$database_port = "3306";
改为:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "用户名";
$database_password = "你的密码";
$database_port = "3306";
修改snmp的配置文件:
#vi /etc/snmp/snmpd.conf
修改下面几部分内容:
1.)com2sec notConfigUser default public
改为:com2sec notConfigUser localhost public
2.)access notConfigGroup "" any noauth exact systemview none none
改为:access notConfigGroup "" any noauth exact all none none
3.)#view all included .1 80
去掉注释
保存退出
启动snmp
#/etc/init.d/snmpd start
修改计划任务,使CACTI每5分钟获得一次数据:
#crontab -e -u 用户名
添加如下内容:
*/5 * * * * /usr/local/php/bin/php /usr/local/apache2/htdocs/cacti/poller.php > /dev/null 2>&1
保存退出
#chown -R rra/ log/
这样cacti就基本配置完成了
在浏览器里输入IP/cacti初始进入的时候需要告诉cacti你的PHP的可执行文件的路径,其他默认就可以,默认的
用户名和密码是admin和admin。进去后要马上修改密码,保存后就进入漂亮的cacti界面。
