Cacti是一款优秀的开源监控软件,使用php实现,主要特点是使用snmp服务获取数据,然后用rrdtool存储和更新数据,当用户查看数据的时候,rrdtool生成图表呈现给用户。在CentOS7后,默认数据库为MariaDB,其为MySQL的一个分支,用其存储变量并进行调用。MariaDB数据库并不存储snmp捕获到的数据,snmp捕获到的数据,存在于rrdtool生成的rrd文件中,这些文件位于cacti目录下的rra目录中。
一、相关软件的安装
多数使用yum即可安装:
1
2
3
4
5
6
|
yum
install
httpd* ----安装Web服务器Apache相关服务
yum
install
php* ----安装PHP相关服务
yum
install
mariadb* ----安装MariaDB数据库相关服务
yum
install
net-snmp* ----安装SNMP相关服务
yum
install
rrdtool rrdtool-devel rrdtool-php rrdtool-perl ----安装rrdtool以生成图像
yum
install
gd gd-devel php-gd ---rrdtool绘制图像需要的图形库
|
二、配置SNMP
1
|
# vi /etc/snmp/snmpd.conf
|
①将41行(各有不同,请自行查找)下的default更改为127.0.0.1
②将62行(各有不同,请自行查找)下的systemview更改为all
③将85行(各有不同,请自行查找)下的#注释掉
④启动snmp
1
|
# systemctl start snmpd.service
|
三、MariaDB数据库配置
①启用MariaDB数据库
1
|
# systemctl start mariadb.service
|
②为root用户设置密码(以wang为例),并修改登录权限,默认密码为空
1
2
3
4
5
|
# mysql –u root –p 回车后输入密码(空)
MariaDB [(none)]> use mysql;
MariaDB [mysql]> update user
set
password=password(
'wang'
) where user=
'root'
;
MariaDB [mysql]>grant all privileges on *.* to root@localhost identified by ‘wang’ with grant option;
MariaDB [mysql]>flush privileges;
|
③添加cacti用户和cacti数据库,并为其设置权限
1
2
3
|
MariaDB [mysql]>create database cacti default character
set
utf8;
##数据库字符集设置utf8,否则乱码
MariaDB [mysql]>grant all privileges on cacti.* to cacti@localhost identified by ‘cacti’ with grant option;
MariaDB [mysql]>flush privileges;
|
四、Cacti配置
①下载cacti
1
2
3
|
# wget http://www.cacti.net/downloads/cacti-0.8.8f.tar.gz ##下载cacti
# tar -zxvf cacti-0.8.8f.tar.gz ##解压cacti
# mv cacti-0.8.8f /var/www/html/cacti ##移动至/var/www/html/cacti下
|
②将cacti的表内容导入创建的数据库
1
2
|
# cd /var/www/html/cacti
# mysql -ucacti -pcacti cacti < /var/www/html/cacti/cacti.sql
|
③分别编辑两个.php文件
1
2
|
# vi /var/www/html/cacti/include/config.php
# vi /var/www/html/cacti/include/global.php
|
修改内容相同,内容如下:
④修改文件属性:
1
2
3
|
# useradd –r –M cacti
# chown –R cacti /var/www/html/cacti/rra/
# chown –R cacti /var/www/html/cacti/log/
|
⑤建立调度任务:
1
2
|
# crontab –e 【输入以下内容】
*
/5
* * * * php
/var/www/html/cacti/poller
.php >
/dev/null
2>&1
|
⑥启用http服务
1
|
# systemctl start httpd.service
|
⑦浏览器输入 http://localhost/cacti或者127.0.0.1/cacti 访问cacti管理页面
如出现:
Forbidden
You don't have permission to access /cacti on this server.
这是因为开启了SeLinux导致权限问题
1).查看SELinux状态:
1
2
3
|
# /usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
# getenforce ##该命令也可检查
|
2).关闭SELinux:
a、临时关闭(不用重启机器):
1
2
|
# setenforce 0 ##设置SELinux 成为permissive模式 (关闭SELinux)
# setenforce 1 ##设置SELinux 成为enforcing模式 (开启SELinux)
|
b、修改配置文件需要重启机器:
1
|
# vi /etc/selinux/config
|
将SELINUX=enforcing 改为SELINUX=disabled
重启机器即可
再次输入 http://localhost/cacti,进入Web页面继续安装
注:如关闭后还是提示问题,可能是防火墙问题:
1
2
|
# systemctl status firewalld.service ##查看防火墙状态
# systemctl stop firewalld.service ##关闭防火墙
|
五、安装Spine
由于默认cmd.php来轮询数据,速度会很慢,特别是在监控节点比较多的情况下,cmd.php就更显不足了,因此我们采用Spine来轮询数据。cacti-spine是一个由C语言开发的,用于替代cmd.php的快速获取速度的引擎。
①下载并编译安装
1
2
3
4
5
6
|
# wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8f.tar.gz
# tar -zxvf cacti-spine-0.8.8f.tar.gz
# cd cacti-spine-0.8.8f
# ./configure
# make
# make install
|
②修改访问数据库的用户名密码信息
1
2
|
# cp /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf
# vi /usr/local/spine/etc/spine.conf
|
注:spine默认配置文件需要放在/etc才会生效,否则测试时会报如下错误:
SPINE: Poller[0] FATAL: Unable to read configuration file! (Spine init)
③测试是否正常
1
2
|
# /usr/local/spine/bin/spine
SPINE: Using spine config
file
[..
/etc/spine
.conf]SPINE: Version 0.8.8f startingSPINE: Time: 2.0130 s, Threads: 1, Hosts: 2
|
④进入Cacti页面设置spine路径
Console -> Configuration -> Settings -> Paths -> Alternate Poller Path -> Spine Poller File Path
/usr/local/spine/bin/spine
⑤修改Cacti使用的Poller Type
Console -> Cacti Settings->Poller->Poller Type
在下拉中选择spine
不能出图的几个问题:
①安装Cacti后,完全无图,这是因为rrdtool没有完全安装
②如不能出图,可能是时钟问题,如下:
1
|
# cat /var/www/html/cacti/log/cacti.log
|
1).
1
|
# timedatectl ##CentOS7统一的时间管理命令
|
1
2
3
|
# timedatectl set-local-rtc yes ##yes表示使用本地时间,no则表示是UTC时间
# rm -rf /var/www/html/rra/* ##删除/var/www/html/rra/下面的所有文件
# /usr/bin/php /var/www/html/cacti/poller.php --force ##强制执行poller程序重新生成文件
|
2).cron的时间与poller.php的时间设置错误
一般poller.php的更新时间为60s,所以cron里边也要设置成每分钟更新一次
1
2
|
# crontab –e 【输入以下内容】
*
/1
* * * * php
/var/www/html/cacti/poller
.php >
/dev/null
2>&1
|
3).
1
|
# cat /var/www/html/cacti/log/cacti.log
|
OK,数据采集已经正常啦。
4.)进入Cacti查看,已经OK了
本文转自 结束的伤感 51CTO博客,原文链接:http://blog.51cto.com/wangzhijian/1680278