Cacti监控平台搭建

                                                                                        

一、概述                                                    (2013.3.21)

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

因此,snmprrdtoolcacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。

Cacti监控平台搭建_第1张图片

 

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

snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。

rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。关于RRDTool的知识请参阅RRDTool教学。

(1)mysql安装

[root@monitor_server ~]#rpm -qa | grep mysql

//检查系统是否安装自带的rpmmysql

[cacti@monitor_server ~]$mkdir pkgs

[cacti@monitor_server ~]$cd pkgs

[cacti@monitor_server pkgs]$tar -zxvf mysql-5.0.45.tar.gz

[cacti@monitor_server pkgs]$cd mysql-5.0.45

[root@monitor_server mysql-5.0.45]$useradd mysql

//转为root用户,添加mysql用户来运行mysql

[cacti@monitor_server mysql-5.0.45]$./configure --prefix=/home/cacti/mysql --with-charset=gb2312

[cacti@monitor_server mysql-5.0.45]$make && make install

然后将源配置文件拷贝到目的路径下

[root@monitor_server ~]#cp /home/cacti/mysql/share/mysql/my_medium.cnf /etc/my.conf

Mysql的目录权限进行设置

[root@monitor_server ~]#chown -R cacti.cacti /home/cacti

[cacti@monitor_server ~]$/home/cacti/mysql/bin/mysqld_safe --user=mysql&

//Mysql以后台方式运行起来

[cacti@monitor_server ~]$/home/cacti/mysql/bin/mysqladmin -u root -password 'mysql'

//MysqlRoot用户的密码进行更改

[cacti@monitor_server ~]$/home/cacti/mysql/bin/mysql -u root -p

//连接到数据库,测试密码是否更改成功,若连接到说明已成功。

 

2apache安装

[cacti@monitor_server pkgs]$tar -zxvf  httpd-2.2.17.tar.gz

[cacti@monitor_server pkgs]$cd httpd-2.2.17

[cacti@monitor_server httpd-2.2.17]$./configure --prefix=/home/cacti/httpd \\

--enable-modules=most \

--enable-mods=most \

--enable-cache \

--enable-disk-cache \

--enable-mem-cache \

--enable-file-cache \

--enable-nonportable-atomics \

--enable-rewrite-shared

[cacti@monitor_server httpd-2.2.17]$make && make install

[cacti@monitor_server httpd-2.2.17]$vim ~/httpd/conf/httpd.conf

//修改apache配置文件。把servername去掉注释,并把后面改成本机的ip地址和端口,端口1024前除root用户不可用,所以最好改成9090端口。

cacti@monitor_server httpd-2.2.17]~/httpd/bin/apachetcl -t   //检查配置文件的语法是否正确。

Syntax ok    

cacti@monitor_server httpd-2.2.17]~/httpd/bin/apachetcl -k start

在浏览器访问:http://192.168.16.137:9090 若能成功,则说明没有问题。(作者本机ip192.168.16.137 Cacti监控平台搭建_第2张图片

 

3)安装必须的库文件

安装好GD jpeg libpng freetype 

使用rpm qa | grep PACKAGENAME (如果无则需下载包安装,或者mount系统盘,通过rpm -ivh按装)

zlib-devel zlib libpng-devel libpng freetype-devel freetype libjpeg-devel libjpeg fontconfig-devel fontconfig libxml2-devel libxml2 libxml2-python gd-devel gd libart_lgpl libart_lgpl-devel

//着实为装php&rrdtool的环境而准备

4)安装PHP

[cacti@monitor_server pkgs]$tar -zxvf php-5.1.6.tar.gz

[cacti@monitor_server pkgs]$cd php-5.1.6

[cacti@monitor_server php-5.1.6]$./cofigure --prefix=/home/cacti/php5 \

--with-apxs2=/home/cacti/httpd/bin/apxs \

--with-mysql=/home/cacti/mysql \

--enable-gd-jis-conv \

--enable-xml \

--enable-sockets

[cacti@monitor_server php-5.1.6]$make && make install

[cacti@monitor_server php-5.1.6]$cp php.ini-recommended /home/cacti/php5/lib/php.ini

//将源模板配置拷贝到目的路径下

编辑apache配置文件,使能使用php

[cacti@monitor_server php-5.1.6]$vim ~/httpd/conf/httpd.conf 

//查找AddType application/x-compress .z

      AddType application/x-gzip .gz .tgz

在下面加入AddType application/x-tar` .tgz

          AddType application/x-httpd-php .php

          AddType application/x-icon .ico

Cacti监控平台搭建_第3张图片

修改DriectoryIndex行,添加index.php

然后进入Apachehtdocs目录下建立一个Php文件

[cacti@monitor_server htdocs]$vim index.php

Index.php内容如下:

phpinfo();

?>

Apache关闭再重新启动

[cacti@monitor_server htdocs]$~/httpd/bin/apachetcl -k restart

PHP安装成功后效果如下图

 

Cacti监控平台搭建_第4张图片

(5)安装rrdtool

需要检查系统安装好以下开发包,如果缺少从光盘中找到Rpm安装好

Zlib zlib-devel libpng-devel libpng freetype freetype-devel libart_lgpl libart_lgpl-devel (以上都已在装php之前安装好)

rrdtool需要cgilib的库文件和头文件

[cacti@monitor_server pkgs]$wget http://www.scriptroute.org/source/cgilib-0.5.tar.gz

[cacti@monitor_server pkgs]$tar -zxvf cgilib-0.5.tar.gz

[cacti@monitor_server pkgs]$cd cgilib-0.5

[cacti@monitor_server cgilib-0.5]$make 

//make之后才会产生这个库文件libcgi.a

[root@monitor_server cgilib-0.5]#cp libcgi.a /usr/local/lib

[root@monitor_server cgilib-0.5]#cp cgi.h /usr/include/

[cacti@monitor_server pkgs]$tar -zxvf rrdtool-1.4.4.tar.gz

[cacti@monitor_server pkgs]$cd rrdtool-1.4.4

[cacti@monitor_server rrdtool-1.4.4]$make && make all

验证rrdtool的安装可用性

[cacti@monitor_server rrdtool-1.4.4]$~/rrdtool/bin/rrdtool -v 

(6)安装net-snmp

Net-snmp要使用root用户安装,因为snmp侦听的端口是161,若使用其他用户,可能造成s启动不了161端口或权限问题。现使用mount到主机,利用rpm包安装,把图中的所有文件都安装。

Cacti监控平台搭建_第5张图片

  [root@monitor_server Sever]#rpm -ivh net-snmp-5.3.2.2-7.el5.i386.rpm 

  [root@monitor_server Sever]#rpm-ivh net-snmp-devel-5.3.2.2-7.el5.i386.rpm 

  [root@monitor_server Sever]#rpm -ivh net-snmp-libs-5.3.2.2-7.el5.i386.rpm 

  [root@monitor_server Sever]#rpm -ivh net-snmp-perl-5.3.2.2-7.el5.i386.rpm 

  [root@monitor_server Sever]#rpm -ivh net-snmp-utils-5.3.2.2-7.el5.i386.rpm 

  [root@monitor_server Sever]#rpm -ivh php-snmp-5.1.6-23.2.el5_3..i386.rpm

(7)安装cacti

Cacti不需要编译,只需要解压后将其移到htdocs下就OK,作者在这里使用的是0.8.8a版本,因为0.8.8版本之后cacti的架构包已经整合到cacti中,所以不需要安装架构包就可以直接安装使用cacti的其他插件(若需要使用其他插件的话,这要看用户的需求了),至于cacti的插件安装,后面会提到。

[cacti@monitor_server pkgs]$tar -zxvf cacti-0.8.8a.tar.gz

[cacti@monitor_server pkgs]$mv cacti-0.8.8 ~/httpd/htdocs/cacti

[cacti@monitor_server pkgs]$cd ~/httpd/htdocs/cacti

[cacti@monitor_server cacti]$vim include/config.php

config.php修改之后如下图

Cacti监控平台搭建_第6张图片

确保cacti目录的所有权是cacti用户

 

数据库配置

[cacti@monitor_server bin]$./mysql -u root -p

登陆进去后:

A.创建一个之前在snmpcacti的配置文件里面设定的cacti数据库;

B.并给cacti用户通过密码cacti在本机登陆赋予cacti数据库的所有表有所有权限;

如下图

Cacti监控平台搭建_第7张图片

 

[cacti@monitor_server cacti]$~/mysql/bin/mysql -u root -p cacti  <  cacti.sql

导入前与导入后的对比

Cacti监控平台搭建_第8张图片

 

完成cacti页面的安装

A、在浏览器中输入:http://192.168.16.137:9090/cacti/

默认用户名:admin 密码:admin

B、更改密码

C、设置cacti用到的命令路径

Next->new install 然后next->相关参数然后finish

Cacti监控平台搭建_第9张图片

//红色代表路径获取不了,需要输入安装该软件的正确路径。

 

Cacti监控平台搭建_第10张图片

Cacti监控平台搭建_第11张图片

 

进入cacti 后需确认更改以下位置:(如下图)

Console->Setting->general

 

Console->Setting->paths

Cacti监控平台搭建_第12张图片

(8)监控机和被监控Net-snmp的调试

//如果是通过snmp来获取数据的话,则监控机和被监控机都需要配置snmp.

[root@monitor_server  ~]#vim /etc/snmp/snmp.conf

我们这里使用的是snmpV2,所以在配置文件中应该加入其声明,并还要修改一处地方,让监控机能够access。修改后如下图

Cacti监控平台搭建_第13张图片

  Net-snmp端口检查

//监控机和被监控机的snmp端口都需要启动(port161),default161

//另外每当修改snmpd.的配置文件时都需要重启来应用。 Cacti监控平台搭建_第14张图片

被监控机server01192.168.16.138)的snmp.conf配置 ,配置里default必须写上监控机IP192.168.16.137,并且read方式要配置成all不然不能通信.

Cacti监控平台搭建_第15张图片

测试监控机snmp的获取数据是否正常,如下是正常的。

//-v 为版本号,--c 指定彼此通信的群体,然后接上snmp要获取数据的机子ip

Cacti监控平台搭建_第16张图片

检查~/httpd/htdocs/cacti/rra是否存在rra文件,如没有以下的类似rra文件,则有可能是snmp没有获取到数据或者没有权限,请确认前面设置的权限和测试snmp的通讯。

问题解析:

(1)rra中的rrd文件没有成功生成

解答:由于cacti只是一个静态的页面,把snmp获取到的数据通过rrdtool画出来在页面显示,没有rra数据的生成或者更新的原因可能有三个(这个本人搭建cacti时遇到的)。第一就是snmp没有处于运行状态,161端口没有开启和侦听请利用root用户查看。第二原因就是snmp通信不成功,这个可以利用snmpwalk来运行查看。第三个就是cactipoller没有写入到crontab中,利用crontab解决,这也是必须的,最为重要的。

[cacti@monitor_server ~]$ crontab -e

*/5 * * * * /home/cacti/php5/bin/php /home/cacti/httpd/htdocs/cacti/poller.php --force > /dev/null 2>&1

可以定时将snmp的数据pollerrrdtoolrra中,就是rrd的文件

(2)出图但图数据显示nan

这个问题其实主要原因是:1.延迟问题,rrdtoolrra中的rrd文件画图,虽然有rrd问题,但要显示到cacti前端会有一定的延时。2.虽然有rrd文件,但可能也是最有可能的原因就是rrd文件中没有任何数据。利用如下方法可以查看

Rrdtool fentch xxx.rrd AVERAGE这语句,其中xxx.rrd就是要查看有没有数据的rrd文件。

若全部OID显示NAN,即证明没有任何数据。此时要检查cactipoller intervalcrontab中的poller时间是否一致。默认都是5分钟较好。

Cacti监控平台搭建_第17张图片