cacti配置及使用

   

   cacti是一套基于php、mysql、snmp以及rrdtool开发的网络流量检测图形分析工具。cacti通过snmp来获取数据,使用rrdtool存储数据和绘图,它是使用php语言开发的一个软件。snmp获取的数据被存储在cacti根目录中的rra文件夹下,而不是存储在mysql中。


   cacti最新稳定版本是0.8.8a,要使用此版本的cacti,需要在系统中安装一些软件:

  •    RRDTool 1.0.49或者1.2.x或最新的版本

  •    net-snmp

  •    MySQL 4.1或5.x或最新的版本

  •    PHP 4.3.6或5.x或最新的版本

  •    需要一个支持php的web server如apache或iis


   可以直接安装以下rpm包来完成cacti运行环境的搭建:httpd、php、php-mysql、php-snmp、mysql、mysql-server、net-snmp,可以直接使用yum安装。也可以在编译安装的lamp环境上安装cacti。这里使用编译安装的lnmp环境,编译过程前面已经介绍http://asange.blog.51cto.com/7125040/1229976


1、先安装snmp

   在被监控的服务器上安装snmp,会获得被监控的机器的各种资源状态,当监控端发起查询时,返回给监控端。被监控端工作在 udp/161 端口,监控端也要运行一个服务,工作在udp/162端口,随时接收客户端发送来的信息。snmp是应用层协议,和操作系统无关,只要能够安装server和agent就能实现监控。



[root@ASANGE ~]# yum install net-snmp net-snmp-utils     //net-snmp-utils是一些客户端工具,通过这些工具可以监控别的服务器.ranh



要对snmp的配置文件进行修改

[root@ASANGE ~]# vim /etc/snmp/snmpd.conf     //修改一下内容
com2sec notConfigUser  default       public    //将default改为允许哪台主机来监控,这里改为127.0.0.1,即本机自己监控。
********************************************************************
access  notConfigGroup ""      any       noauth    exact  systemview none none     //将systemview改为all,此选项定义监控主机具有的权限,systemview表示只对系统视图有权限。
**********************************************************************
#view all    included  .1                               80    //将#去掉


启动服务

[root@ASANGE ~]# service snmpd start
正在启动 snmpd:                                           [确定]


查询一下:

[root@ASANGE ~]# snmpwalk -v 2c -c public localhost
SNMPv2-MIB::sysDescr.0 = STRING: Linux ASANGE 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (6475) 0:01:04.75
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: ASANGE
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
......


2、安装rrdtool

   下载软件rrdtool-1.4.7.tar.gz

   编译安装rrdtool

[root@ASANGE ~]# tar xf rrdtool-1.4.7.tar.gz
[root@ASANGE ~]# cd rrdtool-1.4.7
[root@ASANGE rrdtool-1.4.7]# ./configure --prefix=/usr/local/rrdtool
[root@ASANGE rrdtool-1.4.7]# make && make install
[root@ASANGE ~]# ln -sv /usr/local/rrdtool/bin/* /usr/local/bin/
"/usr/local/bin/rrdcached" -> "/usr/local/rrdtool/bin/rrdcached"
"/usr/local/bin/rrdcgi" -> "/usr/local/rrdtool/bin/rrdcgi"
"/usr/local/bin/rrdtool" -> "/usr/local/rrdtool/bin/rrdtool"
"/usr/local/bin/rrdupdate" -> "/usr/local/rrdtool/bin/rrdupdate"


3、安装cacti

   下载cacti-0.8.8a.tar.gz

 

[root@ASANGE ~]# tar xf cacti-0.8.8a.tar.gz -C /usr/html/
[root@ASANGE ~]# cd /usr/html/
[root@ASANGE html]# ls
50x.html  cacti-0.8.8a  index.html  index.php
[root@ASANGE html]# ln -sv cacti-0.8.8a/ cacti
"cacti" -> "cacti-0.8.8a/"
[root@ASANGE html]# ls
50x.html  cacti  cacti-0.8.8a  index.html  index.php
[root@ASANGE html]# cd cacti
[root@ASANGE cacti]# useradd -r cacti
[root@ASANGE cacti]# chown -R root:root *
[root@ASANGE cacti]# chown -R cacti:cacti rra log


4、导入cacti.sql

mysql> create database cacti; 
Query OK, 1 row affected (0.12 sec)
mysql> grant all on cacti.* to cacti@localhost identified by 'cacti';
Query OK, 0 rows affected (0.08 sec)
[root@ASANGE cacti]# mysql cacti < cacti.sql    //在/usr/local/cacti目录执行命令



5、配置include/config.php

   配置此文件指定数据类型、用户名、密码等信息

[root@ASANGE cacti]# vim include/config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
$database_ssl = false;


6、添加任务计划

   cacti获取数据需要poller.php脚本,可以在任务计划里设置每5分钟执行一下此脚本以获得最新数据.

[root@ASANGE ~]# vim /etc/crontab
*/5 * * * * cacti /usr/local/php/bin/php /usr/html/cacti/poller.php > /dev/null 2>&1

   **************************************

   如果执行poller.php时报错(或者从浏览器访问IP/cacti/时报错Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/html/cacti-0.8.8a/include/global_constants.phpon line 165等信息),是因为时区的问题。修改php的主配置文件php.ini,添加 [Date] date.timezone = ASIA/Shanghai,然后重启php即可。


7、浏览器安装cacti

   此时在浏览器上输入cacti所在主机的IP和cacti就可以安装cacti了,如下图:

​cacti配置及使用_cacti、snmp、rrdtool

   点击下一步,选择新安装new install,继续点击下一步,在cacti安装向导里会查找各个二进制命令和日志的位置,如果不正确,就手动修改,例如这里的php路径需要修改为/usr/local/php/bin/php:


​cacti配置及使用_cacti、snmp、rrdtool_02


修改之后点击finish就会进入登录界面,第一次输入用户名admin和密码admin:

​cacti配置及使用_cacti、snmp、rrdtool_03

接着会提示修改密码:

​cacti配置及使用_cacti、snmp、rrdtool_04

然后会进入cacti界面:

​cacti配置及使用_cacti、snmp、rrdtool_05





使用cacti监控nginx:

1、在nginx的主配置文件中的server段中添加如下内容:

# vim /etc/nginx/nginx.conf
location /status {
                stub_status on;
                access_log off;
        }


2、重新加载配置文件

# kill -HUP `cat /var/run/nginx/nginx.pid`



在浏览器中访问一下:

​cacti配置及使用_cacti、snmp、rrdtool_06


3、下载监控nginx的摸板:cacti-nginx.tar.gz

[root@ASANGE ~]# tar xf cacti-nginx.tar.gz
[root@ASANGE ~]# cd cacti-nginx
[root@ASANGE cacti-nginx]# ls
cacti_graph_template_nginx_clients_stat.xml  get_nginx_clients_status.pl
cacti_graph_template_nginx_sockets_stat.xml  get_nginx_socket_status.pl
cacti-nginx-readme

里面有5个文件,其中cacti-nginx-readme里已经说明了配置cacti监控nginx的方法了,可以看一下。


4、将get_nginx_clients_status.pl和get_nginx_socket_status.pl文件复制到/usr/html/cacti/scripts/中:

[root@ASANGE cacti-nginx]# pwd
/root/cacti-nginx
[root@ASANGE cacti-nginx]# cp get_nginx_* /usr/html/cacti/scripts/
[root@ASANGE cacti-nginx]# cd /usr/html/cacti/scripts/
[root@ASANGE scripts]# chmod 755 get_nginx_clients_status.pl get_nginx_socket_status.pl


5、在Import Templates中导入摸板:

​cacti配置及使用_cacti、snmp、rrdtool_07


选择文件cacti_graph_template_nginx_clients_stat.xml和cacti_graph_template_nginx_sockets_stat.xml并导入,导入成功后显示如下:

​cacti配置及使用_cacti、snmp、rrdtool_08


6、New Graphs,在Create中选择 Nginx Clients Stat:


​cacti配置及使用_cacti、snmp、rrdtool_09


在URL of nginx stub status中输入http://192.168.2.106/status,并点击Create:

​cacti配置及使用_cacti、snmp、rrdtool_10


在graphs里会显示nginx的监控图像。