了解Cacti监控安装与配置.md

Posted by Yancy on 2014-10-21

什么是Cacti?

Cacti, 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图。

Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。

Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。

snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。关于RRDTool的知识请参阅RRDTool教学。

什么是SNMP?

snmp(Simple Network Management Protocal, 简单网络管理协议)在架构体系的监控子系统中将扮演重要角色。大体上,其基本原理是,在每一个被监控的主机或节点上 (如交换机)都运行了一个 agent,用来收集这个节点的所有相关的信息,同时监听 snmp 的 port,也就是 UDP 161,并从这个端口接收来自监控主机的指令(查询和设置)。

如果安装 net-snmp,被监控主机需要安装 net-snmp(包含了 snmpd 这个 agent),而监控端需要安装 net-snmp-utils,若接受被监控端通过trap-communicate发来的信息的话,则需要安装net-snmp,并启用trap服务。如果自行编译,需要 beecrypt(libbeecrypt)和 elf(libraryelf)的库。

什么是RRDtools?

RRDtool是指Round Robin Database 工具(环状数据库)。Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直往下走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。RRDtool处理RRD数据库。它用向RRD数据库存储数据、从RRD数据库中提取数据。

Cacti是基于nginx,rrdtool,mysql,php,snmp来运行的.

1.安装操作系统centos6.0以上版本

2.配置好网络IP和DNS

3.修改系统时区和时间,使用上海时区

备份原有的时区文件

1
cp /etc/localtime /etc/localtime.bak

用上海时区文件替换系统时区文件

1
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改/etc/sysconfig/clock文件,修改为:

1
2
3
ZONE="Asia/Shanghai"
UTC=false
ARC=false

同步时间

1
ntpdate time.nist.gov

4.安装epel源

1
rpm -Uvh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

5.安装基础支持软件

1
yum install -y openssh-clients telnet wget nginx php-cgi php-cli spawn-fcgi mysql-servermysql rrdtoolnet-snmp net-snmp-utils net-snmp-devel php-mysql php-snmp

6.配置PHP管理器

(1)cd /etc/sysconfig 进入sysconfig文件夹

(2)vi spawn-fcgi 在文件改位置添加如下命令

1
2
3
4
#SOCKET=/var/run/php-fcgi.sock
#OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi"
SOCKET=/var/run/php-fcgi.sock
OPTIONS="-u nginx -g nginx -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi"

(3)/etc/init.d/spawn-fcgi restart 重启php管理器

(4)chkconfig spawn-fcgi on 设置开机启动服务

7.补充创建/var/lib/php下 session 目录

1
2
3
mkdir -p /var/lib/php/session
chown -R nginx.nginx /var/lib/php/session
chmod 777 /var/lib/php/session

8.修改PHP文件配置

vi /etc/php.ini

(1)修改PHP时区为Asia/ShangHai,在文件如下位置添加该句命令

1
2
3
4
5
6
7
8
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
;date.timezone =
date.timezone = Asia/Shanghai

(2)修改PHP调用内存限制,在文件如下位置修改如下添加:

date.timezone = Asia/Shanghai memory_limit = 512M

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
; Maximum execution time of each script, in seconds
; http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time
max_execution_time = 30
; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://www.php.net/manual/en/info.configuration.php#ini.max-input-time
max_input_time = 60
; Maximum input variable nesting level
; http://www.php.net/manual/en/info.configuration.php#ini.max-input-nesting-level
;max_input_nesting_level = 64
; Maximum amount of memory a script may consume (128MB)
; http://www.php.net/manual/en/ini.core.php#ini.memory-limit
#memory_limit = 128M
memory_limit = 512M

10.修改nginx配置文件增加对cacti的支持(对应自己的nginx安装目录)
vi /usr/local/nginx/conf.d/nginx.conf在文件末尾大括号内添加如下配置
server {
listen 8080;
server_name 127.0.0.1;
root html;
index index.html index.php;

   location ~ \.php$ {
   root html;
   fastcgi_buffer_size 128k;
   fastcgi_buffers 8 128k;
   fastcgi_pass unix:/var/run/php-fcgi.sock;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  #fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
  include fastcgi_params;
  }
       }
chkconfig nginx on 设置nginx开机启动
service nginx restart重启nginx服务

11.安装catic

catic是无需编译安装的,直接下载其源包解压即可使用
(1)下载cacti

1
2
cd /tmp
wget http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz

(2)解压cacti

1
2
tar zxvf cacti-0.8.8b.tar.gz
mv cacti-0.8.8b /usr/local/nginx/html #将解压出的cacti文件夹移动到nginx的

web目录下(对应自己安装的nginx)

(3)修改cacti的使用者和组权限为nginx用户和nginx组

1
2
cd /usr/local/nginx/html
chown -R nginx:nginx cacti/

12.创建数据库,存储cacti数据

1
2
3
启动mysql
/etc/init.d/mysqld start
chkconfig mysqld on

(1)使用root账户登录mysql

mysql -uroot

(2)创建cacti数据库表

create database cacti;

(3)建立用户cacti,密码cacti123(可自行定义)

mysql> insert into mysql.user(host,user,password) values ('localhost','cacti',password('cacti123'));

(4)重载mysql授权表

mysql> flush privileges;

(5) 把数据库cacti授权于用户cacti

mysql> grant all on cacti.* to cacti@'localhost' identified by 'cacti123';
mysql> quit

(6)将cacti数据库与mysql中的数据对应起来

cd /usr/local/nginx/html/cacti
mysql -ucacti -pcacti123 cacti<cacti.sql

13.修改CACTI配置文件

(1) 切换至cacti下的include目录(对应自己安装的nginx)

cd /usr/local/nginx/html/cacti/include/

(2)编辑config.php文件,修改如下位置的配置

vi config.php
1
2
3
4
5
6
7
8
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";#mysql数据库里所创建的表名
$database_hostname = "127.0.0.1";
$database_username = "cacti";#mysql数据库里为cacti数据表所创建的用户名
$database_password = "cacti123";#mysql数据库里为cacti数据表所创建的密码
$database_port = "3306";
$database_ssl = false;

14.配置cacti的循环任务

1
2
crontab -e
*/5 * * * * php /usr/local/nginx/html/cacti/poller.php > /dev/null 2>&1#请对应自己的nginx安装目录

:wq 保存退出

可直接先运行一遍php /usr/local/nginx/html/cacti/poller.php 好让cacti产生图片

1
php /usr/share/nginx/html/cacti/poller.php

15.安装完成

使用浏览器打开如下地址http://本机IP/cacti/install

会显示安装向导,点击NEXT即可,到下面如下界面是,注意查看所有的文件路径是否都为绿色,不是绿色请找到自己安装的目录,一一对应点击Finsh即可到达cacti的登陆界面

输入用户名密码,cacti默认的用户名和密码都为admin,输入一次后会提示在一次输入,这个时候是让你设置新的admin密码.然后就能进入cacti的图形界面了.

点击左上角graphs,就能查看本机所监控的所有设备默认存在一个localhost,监控本机的内存使用,活动用户等信息.