您的位置:首页 > 运维架构

Cacti监控平台搭建

2013-03-22 17:32 435 查看
Cacti监控平台搭建

一、概述 (2013.3.21)

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




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

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

(1)mysql安装
[root@monitor_server ~]#rpm -qa | grep mysql
//检查系统是否安装自带的rpm包mysql
[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'
//将Mysql的Root用户的密码进行更改
[cacti@monitor_server ~]$/home/cacti/mysql/bin/mysql -u root -p
//连接到数据库,测试密码是否更改成功,若连接到说明已成功。

(2)apache安装
[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 若能成功,则说明没有问题。(作者本机ip是192.168.16.137)



(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



修改DriectoryIndex行,添加index.php



然后进入Apache的htdocs目录下建立一个Php文件
[cacti@monitor_server htdocs]$vim index.php
Index.php内容如下:
<?
phpinfo();
?>
将Apache关闭再重新启动
[cacti@monitor_server htdocs]$~/httpd/bin/apachetcl -k restart
PHP安装成功后效果如下图





(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包安装,把图中的所有文件都安装。



[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目录的所有权是cacti用户



数据库配置
[cacti@monitor_server bin]$./mysql -u root -p
登陆进去后:
A.创建一个之前在snmp和cacti的配置文件里面设定的cacti数据库;
B.并给cacti用户通过密码cacti在本机登陆赋予cacti数据库的所有表有所有权限;
如下图





[cacti@monitor_server cacti]$~/mysql/bin/mysql -u root -p cacti < cacti.sql
导入前与导入后的对比








完成cacti页面的安装

A、在浏览器中输入:http://192.168.16.137:9090/cacti/
默认用户名:admin 密码:admin
B、更改密码
C、设置cacti用到的命令路径

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




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








进入cacti 后需确认更改以下位置:(如下图)
Console->Setting->general

Console->Setting->paths




(8)监控机和被监控Net-snmp的调试
//如果是通过snmp来获取数据的话,则监控机和被监控机都需要配置snmp.
[root@monitor_server ~]#vim /etc/snmp/snmp.conf
我们这里使用的是snmpV2,所以在配置文件中应该加入其声明,并还要修改一处地方,让监控机能够access。修改后如下图




Net-snmp端口检查
//监控机和被监控机的snmp端口都需要启动(port:161),default为161
//另外每当修改snmpd.的配置文件时都需要重启来应用。


被监控机server01(192.168.16.138)的snmp.conf配置 ,配置里default必须写上监控机IP:192.168.16.137,并且read方式要配置成all不然不能通信.





测试监控机snmp的获取数据是否正常,如下是正常的。
//-v 为版本号,--c 指定彼此通信的群体,然后接上snmp要获取数据的机子ip



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

问题解析:
(1)rra中的rrd文件没有成功生成
解答:由于cacti只是一个静态的页面,把snmp获取到的数据通过rrdtool画出来在页面显示,没有rra数据的生成或者更新的原因可能有三个(这个本人搭建cacti时遇到的)。第一就是snmp没有处于运行状态,161端口没有开启和侦听请利用root用户查看。第二原因就是snmp通信不成功,这个可以利用snmpwalk来运行查看。第三个就是cacti的poller没有写入到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的数据poller到rrdtool的rra中,就是rrd的文件
(2)出图但图数据显示nan
这个问题其实主要原因是:1.延迟问题,rrdtool将rra中的rrd文件画图,虽然有rrd问题,但要显示到cacti前端会有一定的延时。2.虽然有rrd文件,但可能也是最有可能的原因就是rrd文件中没有任何数据。利用如下方法可以查看
Rrdtool fentch xxx.rrd AVERAGE这语句,其中xxx.rrd就是要查看有没有数据的rrd文件。
若全部OID显示NAN,即证明没有任何数据。此时要检查cacti的poller 的interval与crontab中的poller时间是否一致。默认都是5分钟较好。




本文出自 “学习与工作心得” 博客,请务必保留此出处http://jainjuncq.blog.51cto.com/6809474/1160501
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: