首页 > 代码库 > Cacti深入学习

Cacti深入学习



1、安装LAMP与Cacti环境

# yum install -y httpd php php-mysql php-snmp php-xml php-gd mysql mysql-server gd gd-devel
# tar xf cacti-0.8.8b.tar.gz -C /var/www/html/
# cd /var/www/html/
# mv cacti-0.8.8b/ cacti
# useradd cactiuser

# mysql
mysql> create database cactidb;
mysql> grant all on cactidb.* to cactiuser@‘localhost‘ identified by ‘asdasd‘;
mysql> flush privileges;
mysql> use cactidb;
mysql> source /var/www/html/cacti/cacti.sql
# cd /var/www/html/cacti/
# vim include/config.php 
    $database_type = "mysql";
    $database_default = "cactidb";
    $database_hostname = "localhost";
    $database_username = "cactiuser";
    $database_password = "asdasd";
    $database_port = "3306";
    $database_ssl = false;
# chown -R root.root .
# chown -R cactiuser.cactiuser log rra
# vim /etc/php.ini 
    date.timezone = Asia/Shanghai
# date 0624163814                    //确保时间正确,如果你可以连接ntp服务器可以使用ntpdate time.windows.com
Tue Jun 24 16:38:00 CST 2014
# service httpd restart

接下来我们可以在浏览器上使用Cacti了

wKiom1OpOzyTrC9wAAQeEJs2sgo697.jpg

wKioL1OpOzPSIMWeAAIRvhlHekg066.jpg

wKiom1OpO-fiNsT8AATkxBEPa-8315.jpg

如查是用yum安装net-snmp/net-snmp-utils/php/rrdtool的默认情况下是不需要修改的,如果你是有源码安装则需要改变相应位置;

wKioL1OpPCCxbXI_AAKZ-heKZ_Q068.jpg

# su - cactiuser
# crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null //如果我们有很多主机需要监控,我们可以在cacti官网上下载spine,它有多线程功能;
$ tail -f /var/www/html/cacti/log/cacti.log   //每执行一次,它都会产生一条日志信息;
06/24/2014 05:03:07 PM - SYSTEM STATS: Time:0.8103 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
此时,我们的Cacti己部署完成,接下来继续深入了解它的使用。



2、本机配置:

Devices->localhost

如果SNMP报错,查看communicaty与snmpd服务是否正常;

wKioL1OpQcLgJeiQAAo04yfeAX8532.jpg

刚开始部署完成数据产生是很慢的,当然了我们根据rrdtool相关知识进行跟踪与查看

首先查看本机当前时间

# date +%s
# rrdtool fetch /var/www/html/cacti/rra/localhost_mem_swap_4.rrd AVERAGE
查看最下面的一个时间戳,是否与本机当前时间戳接近了....

过一段时间我们就可以看到图像了,高兴吧!!!

wKioL1OpR-qBOCcIAAi5C6XZsNA386.jpg


实例1:自定TCP Established连接数


1、创建脚本

# snmpnetstat -v 2c -c public -Can -Cp tcp localhost
Active Internet (tcp) Connections (including servers)
Proto Local Address          Remote Address         (state)
tcp   *.22                   *.*                   LISTEN
tcp   *.111                  *.*                   LISTEN
tcp   *.3306                 *.*                   LISTEN
tcp   *.51507                *.*                   LISTEN
tcp   127.0.0.1.25           *.*                   LISTEN
tcp   127.0.0.1.199          *.*                   LISTEN
tcp   127.0.0.1.631          *.*                   LISTEN
tcp   192.168.100.14.22      192.168.100.1.49676   ESTABLISHED
# vim tcp.sh
#!/bin/bash
ES=`snmpnetstat -v 2c -c public -Can -Cp tcp $1 |grep -i ‘established‘ |wc -l`
echo -n "established:$ES"
# chmod +x tcp.sh 
# ./tcp.sh localhost
established:1[root@station14 ~]#
# cp tcp.sh /var/www/html/cacti/scripts/tcp_conn.sh


2、创建数据输入方法

Console -> Data Input Methods ->"Add"

Name:            SNMP - Connections

Input Type:      这里是自定义脚本,所以选择Script/Command

Input String:    /bin/bash <path_cacti>/scripts/tcp_conn.sh <hostname>    //这里定义脚本如何执行

点击“Save”     

wKiom1OphZmRcNrtAAOrMuVe5_U248.jpg

然后添加

Input Fields:    表示上面Input String中输入的参数

Add ->

    Field [Input]:    脚本的输入参数,这里我们只有一个参数hostname,如果你的脚本需要多个参数,则需要多次Add Input Field;

    Friendly Name:    输入一个为数据输入方法见明知意的名字,这里我们用“HostName or IP”;

    Regular Expression Match:    匹配表达式,这里我们可以不填写;

    Allow Empty Input:    允许空参数;

    Special Type Code:    如果没有填写Regular Expression Match,它会自动继承Host Templates中的选项,选择你需要参数;

wKioL1OpiN2jA983AANldczd1NU740.jpg

 点击“Create”完成脚本参数设定;  

Output Fields

Add ->

    Field [Output]: 指定脚本输出的标签名,established;

    Friendly Name:  指定一个友好的名字;  

点击“Create”

wKiom1Opi6CzPcY3AAPCExlA-Rw747.jpg

点击“Save” --> 返回“Save Successful.”

查看“Data Input Methods”是否有我们刚才添加的"SNMP - Connections"

wKiom1OpjGvDjVCWAAO6JBYbC9Y507.jpg


3、创建数据模板

接下来,我们继续创建“Data Templates”

wKiom1OpjPax7EhLAAQ-1suPYKQ378.jpg


wKiom1OpjcmAOSmpAARzQB6VqPo840.jpg

上图需要注意Name,我填入的是"|host_discription| - TCP Connections" 两竖中间带表的是一个变量:

Associated RRA‘s 需要注意你的解析度,我们默认是5分钟一次,显然1分钟一次不适用,所以不需要选;


4、创建数据源

wKiom1OpjifxZT73AAMwwIHb5LQ877.jpg

wKiom1OpjmWxR2JEAAQ9l2XEK88150.jpg


5、创建图片模板

wKiom1Opj6_TSmGfAAdWRyfRvdY498.jpg


wKiom1Opj--QG2cvAAKRLtq6Dls278.jpg

6、完成

wKiom1OpkDjDgRa2AAf4Ud3JkHc453.jpg

如果我们也要做到像系统那样,有Current,Average,Maximun等信息,我们需要继续在图像模板中创建;

wKioL1OplCfxmP38AAP98OAyRIg010.jpg

wKiom1OplK-h3-xfAAP8s1cqF8I448.jpg

wKioL1OplVqQgDQoAAgCIpZnvR8178.jpg

如果你担心数据没有,我们也可以手动看一下

# rrdtool fetch cacti_tcpestablished_8.rrd AVERAGE
1403621400: -nan
1403621700: -nan
1403622000: -nan
1403622300: -nan
1403622600: -nan
[root@station14 rra]# 
# date +%s
1403622578

如果看到rrdtool查看到最下面的数值接近date查看到的数值时,说明己经有数值记录到rrd文件当中了。

这里我们可以使用压力测试使ESTABLISHED数量增加






本文出自 “jun.wang” 博客,请务必保留此出处http://junwang.blog.51cto.com/5050337/1430537