cacti是实时显示服务器的状态, Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
它通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。
用户可以通过自己开发cacti的php页面自己开发对设备的监控代码
nagios是对服务器的状态进行监控, 当达到设定的阈值后出发报警,
ZABBIX也是一款开源的性能监控程序
cacti侧重实时展示服务器的状态, 而nagios则侧重监控服务器状态。
如果在运行过程当中提示找不到某个类库, 如果可以通过find命令找到这个库,
则可以编译 /etc/ld.so.conf文件, 将这个库所在的目录添加到该文件当中, 然后运行ldconfig命令让其生效。
还可以将将这个库所在的目录添加到LD_LIBRARY_PATH环境变量当中
cacti有可能需要用到libxml jpeg6 freetype zlib libpng fontconfig gd等公共库, 建议最好都安装上
1. 安装mysql
有些说法是只需要装 mysql-standard就可以了。
a. 创建mysql group和mysql用户和权限目录(本步骤为可选)
groupadd mysql
useradd -g mysql mysql
#修改mysql目录权限
hown -R root /usr/local/mysql
chgrp -R mysql /usr/local/mysql
chown -R mysql /usr/local/mysql/data
b. 安装mysql服务器
rpm -ivh MySQL-server-5.0.45-0.i386.rpm
c. 安装mysql客户端
rpm -ivh MySQL-client-5.0.45-0.i386.rpm
d. 初始化mysql数据库(一般不需要执行这一步骤)
/path/to/script/mysql_install_db --user=mysql&
e. 启动mysql数据库
/usr/bin/safe_mysqld --user=mysql& 或 /etc/init.d/mysql start
如出现 Starting mysqld daemon with databases from /usr/local/mysql/data 代表正常启动mysql服务了.
f. 安装 MySQL-devel
rpm -ivh MySQL-devel-5.0.45-0.i386.rpm
如果不安装MySQL-devel的话, php生成编译脚本时有可能报错说找不到mysql头文件
g. 安装MySQL-shared
rpm -ivh MySQL-shared-5.5.8-1.rhel5.i386.rpm
如果不安装MySQL-shared的话, 编译cacti-spine 有可能报 libmysqlclient_r.so找不到的错误
// 源码安装, 可以参考 http://wenku.baidu.com/view/837a27fc700abb68a982fb7c.html
./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql
#prefix=/usr/local/mysql mysql安装的目标目录
#sysconfdir=/etc my.ini配置文件的路径
#localstatedir=/var/lib/mysql 数据库存放的路径
2. 安装apahce
a. 新建apche安装目录
mkdir -p /usr/local/apache2
b. 生成makefile文件
./configure --prefix=/usr/local/apache2 --enable-module=so [--enable-rewrite] 或
./configure --prefix=/usr/local/apache2 --enable-module=so --enable-module=alias --enable-module=all --enable-shared=max --enable-module=vhost_alias --enable-shared=vhost_alias --enable-deflate --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache --enable-rewrite --enable-static-support
c. make && make install
d. 启动apache
当apache没有找到默认的启动页面时, 使用/etc/httpd/conf.d/welcome.conf中指定的默认页面, 有时是/var/www/error/noindex.html
启动脚本 /usr/local/apache2/bin/apachectl start|stop|restart,
配置脚本 /usr/local/apache2/conf/httpd.conf
3. 安装Net-SNMP
./configure --prefix=/usr/local/net-snmp --enable-developer; make; make install
// 运行snmpget -V, snmpwalk -V 命令测试是否安装成功
4. 安装php
a. 生成编译脚本
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/lib --enable-sockets --with-snmp[=DIR] --with-mysql[=/var/lib/mysql/] 或
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-mysqli --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --enable-gd-native-ttf --enable-gd-jis-conv --enable-xml --enable-mbstring --enable-sockets --enable-soap [--with-ttf]
b. 编译与安装
make; make install
c. 拷贝配置文件
cp php.ini-dist /usr/local/php/lib/php.ini
d. 测试安装是否正确
安装完php后, 在/usr/local/apache2/bin/htdocs目录下创建index.php文件, 内容如下:
<?php
phpinfo();
?>
然后启动apche, 打开http://10.46.142.56/index.php, 检查php是否正常
注意:
安装php的时候, 有可能提示找不到libmysqlclient.so文件, 这时可以尝试通过源码安装mysql-5.0.20a.tar.gz(./configue; make; make install)
php的session存在哪里?
php的配置文件通常位为 php.ini
因为cacti-0.8.7不少接口在php5.3环境当中已经不支持, 运行当中可能存在问题, 建议最好安装php5.2版本
5. 配置apache, 让其支持php
# vi /usr/local/apache2/conf/httpd.conf
找到AddType application/x-gzip .gz .tgz, 添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
找到DirectoryIndex index.html, 修改成
DirectoryIndex index.html index.php index.html.var
6. 安装rrdtool
./configure –prefix=/usr/local/rrdtool; make; make install;
装完后,执行rrdtool看是否正确,如果执行不成功,提示命令不存在,则建立rrdtool到执行目录的符号连接或者直接拷贝
cp /usr/local/rrdtool/bin/* /usr/local/bin
ln –s /usr/local/rrdtool/bin/* /usr/local/bin/
7. spine(rrdtoold)
./configure --with-snmp=/usr/local/net-snmp/ --with-mysql
运行spine命令检查安装是否成功
8. 安装cacti
a. 拷贝cacti到apache的安装目录
tar -zxvf cacti-0.8.7b.tar.gz
cd cacti-0.8.7b
mv cacti-0.8.7b /usr/local/apache2/htdocs/cacti
cd /usr/local/apache2/htdocs/cacti/
b. 增加cactiuser用户以及授权
useradd cactiuser
chown -R cactiuser rra
chgrp -R cactiuser /usr/local/apache2/htdocs/cacti/
c. 配置数据库以及执行初始化脚本
shell>mysql –u root –p
mysql>create database cactidb; (新建一个数据库)
mysql>grant all privileges on cactidb.* to cactiuser@localhost identified by "cactipw";(新增一个数据库用户并授权)
mysql>quit;
shell>mysql -u cactiuser -pcactipw (以cactiuser用户登录)
mysql>use cactidb; (使用cactidb数据库)
mysql>source cacti.sql(执行数据库初始化脚本)
d. 增加性能采集的定时任务
crontab -ucactiuser -e
*/5 * * * * /usr/local/php/bin/php /usr/local/apache2/htdocs/cacti/poller.php > /dev/null 2>&1
忘记cacti admin密码
进入mysql
mysql> show databases;
mysql> use cacti;
mysql> show tables;
mysql> update user_auth set password=md5("newpassword") where id='1';
9. 安装cactid
shell>tar -zxvf cacti-cactid-0.8.6g.tar.gz
shell>cd cacti-cactid-0.8.6g
shell>./configure --with-mysql=/usr/local/mysql
shell>make; make install;
shell>cp cactid cactid.conf /usr/local/cactid/
php
用户名/密码输入正确、数据库的user_log表中正确记录了登录信息,并且result为1(验证成功),
但是页面始终停留在index.php,不能进入. 可能存在以下原因:
1. 因为php的session异常。
经检查发现,在这台机器上,由于另一服务的日志突然暴增,导致/分区的磁盘容量用尽,session无地方可写。
删除异常的日志文件后,问题得到了解决。
2. 还有可能是php编译选项不够全, 可以参照如下编译选项
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-mysqli --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir--with-zlib-dir --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv--enable-xml --enable-mbstring --enable-sockets --enable-soap
3. /var/lib/php/session 对当前运行apache的账户nobody无写权限。
chmod 777 session 后。问题消失。
手工编译安装php后,如果一切顺利解决了的话,重启apache时,libphp5.so: cannot restore segment prot after reloc: Permission denied 错误:
有可能是因为开了seliunx,将其关闭即, 或者用chcon命令修改libphp5.so文件的标签。
如果 没有开selinux 的话,找到libphp5.so,然后chmod 777 libphp5.so
chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so
<chcon是selinux有关的命令,更改文件的标签。ls命令在命令后加个 -Z 或者加 –context 查看标签>
关闭SELINUX的方法:
方法1.
vi /etc/selinux/config 将SELINUX=enforcing 改成SELINUX=disabled 需要重启
这个方法可能会对服务器带来风险。
方法2. 开启SELINUX的方法:
shell> setenforce 0 | 1
0 关闭, 1 开启selinux