Cacti安装手册

第一步、  Cacti的架构

第二步、 Cacti的工作流程

第三步、 Cacti简介

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

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

3. snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。另外,当生成图片时对采集的数据的处理方式:有gauge、counter、derive、absolute。参考以下例子:
类型:如果输入数据依序为 98 100 98:

GAUGE(个別值,像CPU loading):产生图形时画 98 100 98

COUNTER (累计值,像流量资料):产生图形时画 2 -2

DERIVE (累计值,像流量资料),小于0画0:产生图形时画 2 0

ABSOLUTE 如同 COUNTER,但 COUNTER 可能 overflow(数值过大),所以会取绝对值
     补充说明,COUNTER/DERIVE/AVSOLVTE 虽是取差值,但会再除以两次间隔间的秒数,如上 COUNTER 例,两次间隔间为 300 秒,那画出来的就是 2/300,-2/300 的值

数据采集中可以看到定义的是什么数据类型:Counter和gauge

C:\usr\bin>snmpget -v 2c -c public 192.168.224.1 .1.3.6.1.2.1.6.5.0

TCP-MIB::tcpActiveOpens.0 = Counter32: 1927

C:\usr\bin>snmpget -v 2c -c public 192.168.224.1 .1.3.6.1.2.1.6.9.0

TCP-MIB::tcpCurrEstab.0 = Gauge32: 0

4. rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。

[root@localhost rra]# ls 220_181_11_156_mem_*

220_181_11_156_mem_buffers_30.rrd 220_181_11_156_mem_cache_31.rrd 220_181_11_156_mem_free_32.rrd

(可以看出一个图形对应好几个rrd文件---即对应几个数据源---但也可以一个rrd文件包含几个数据源)

具体RRDTool的知识见以下网页:

使用Cacti监测系统与网络性能:

http://hi.baidu.com/myfreezone/blog/item/7f00fd247d2411338744f9c3.html

RRDTool应用示例:

http://hi.baidu.com/myfreezone/blog/item/4720f0f280538e13b07ec5c1.html

对RRDTool的总结

http://hi.baidu.com/myfreezone/blog/item/18973aad8ad66b094b36d6f8.html

安装rrdtool

http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.2.11.tar.gz

由于rrdtool1.2.11需要一些库文件支持,故需先安装配置支持的环境,然后编译安装。直接运行以下sh脚步就可以完成安装:

注意:将cgilib-0.5.tar.gz、zlib-1.2.2.tar.gz、libpng-1.2.8-config.tar.gz、freetype-2.1.9.tar.gz、libart_lgpl-2.3.17.tar.gz、rrdtool-1.2.11.tar.gz放到/root/rrdtool-1.2.11

将脚本保存为/root/rrdtool-1.2.11/rrdtoolinstall,并给执行权限chmod 766 /root/rrdtool-1.2.11/rrdtoolinstall。

#!/bin/sh

BUILD_DIR=/root/rrdtool-1.2.11

INSTALL_DIR=/usr/local/rrdtool

cd $BUILD_DIR

tar zxf cgilib-0.5.tar.gz

cd cgilib-0.5

make CC=gcc CFLAGS="-O3 -fPIC -I."

mkdir -p $BUILD_DIR/lb/include

cp *.h $BUILD_DIR/lb/include

mkdir -p $BUILD_DIR/lb/lib

cp libcgi* $BUILD_DIR/lb/lib

cd $BUILD_DIR

tar zxf zlib-1.2.2.tar.gz

cd zlib-1.2.2

env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb

make

make install

cd $BUILD_DIR

tar zxvf libpng-1.2.8-config.tar.gz

cd libpng-1.2.8-config

env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \

./configure --disable-shared --prefix=$BUILD_DIR/lb

make

make install

cd $BUILD_DIR

tar zxvf freetype-2.1.9.tar.gz

cd freetype-2.1.9

env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \

./configure --disable-shared --prefix=$BUILD_DIR/lb

make

make install

cd $BUILD_DIR

tar zxvf libart_lgpl-2.3.17.tar.gz

cd libart_lgpl-2.3.17

env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb

make

make install

IR=-I$BUILD_DIR/lb/include

CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"

LDFLAGS="-L$BUILD_DIR/lb/lib"

CFLAGS=-O3

export CPPFLAGS LDFLAGS CFLAGS

cd $BUILD_DIR

tar zxf rrdtool-1.2.11.tar.gz

cd rrdtool-1.2.11

./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl && make && make install

E.安装net-snmp

Unix系统安装的都是net-snmp或ucd-snmp(其实两个都是同一组人写的)。如果没有安装snmp,可以到net-snmp.sourceforge.org上下载源码编译安装。

我这里说的安装SNMP服务并不是要求安装SNMPD,其实是Cacti需要用到net-snmp中的两个命令――snmpwalk和snmpget进行数据的采集。我们可以直接在系统中运行snmpwalk和snmpget看是否有该命令,如果有则不用安装了。

http://prdownloads.sourceforge.net/net-snmp/net-snmp-5.2.1.1.tar.gz

# tar zxf net-snmp-5.2.1.1.tar.gz

# cd net-snmp-5.2.1.1

#./configure --prefix=/usr/local/net-snmp --enable-developer

# make

# make install

安装cacti

http://www.cacti.net/downloads/cacti-0.8.6f.tar.gz

# cp cacti-0.8.6f.tar.gz /usr/local/http/htdocs/

# cd /usr/local/http/htdocs/

# tar zxvf cacti-0.8.6f.tar.gz

# mv cacti-0.8.6f cacti

安装cacti-cactid

http://www.cacti.net/downloads/cactid/cacti-cactid-0.8.6f-1.tar.gz

CACTID 的安装需要以下支持:

· net-snmp-devel   (需要编译安装net-snmp时添加--enable-developer选项)

· mysql

· mysql-devel       (mysql源文件编译安装后默认支持)

· openssl-devel     (redhat9.0默认安装)

因此需要检查是否具备安装的环境。

# tar zxf cacti-cactid-0.8.6f-1.tar.gz

# cd cactid0.8.6-f1

# ./configure ;make

这是此目录下你将看到cactid 和cactid.conf

# mkdir  /usr/local/cactid

# cp cactid cactid.conf /usr/local/cactid/

H.安装完成后配置cacti

1.配置apache

# vi /usr/local/http/conf/httpd.conf

加入 AddType application/x-tar .tgz

AddType application/x-httpd-php .php

AddType image/x-icon .ico

DirectoryIndex index.php index.html index.html.var

# /usr/local/http/bin/apachectl stop

# /usr/local/http/bin/apachectl start

编辑测试php文件 test.php内容如下:

<?

phpinfo();

?>

2.配置mysql

建立cacti需用的数据库

# /usr/local/mysql/bin/mysql

mysql> create database cactidb;

Query OK, 1 row affected (0.00 sec)

mysql> grant all on cactidb.* to root;

Query OK, 0 rows affected (0.01 sec)

mysql> grant all on cactidb.* to root@localhost;

Query OK, 0 rows affected (0.01 sec)

mysql> grant all on cactidb.* to cactiuser;

Query OK, 0 rows affected (0.00 sec)

mysql> grant all on cactidb.* to cactiuser@localhost;

Query OK, 0 rows affected (0.01 sec)

mysql> set password for cactiuser@localhost=password('cactipw');

Query OK, 0 rows affected (0.00 sec)

mysql> exit

# cd /usr/local/http/htdocs/cacti

# /usr/local/mysql/bin/mysql –u root cactidb < cacti.sql

3.配置cacti-cactid

# vi /usr/local/cactid/cactid.conf

DB_Host         localhost

DB_Database     cactidb

DB_User         cactiuser

DB_Pass         cactipw

4.配置cacti

# useradd cactiuser

# chown –R cactiuser rra/

# vi /usr/local/http/htdocs/cacti/include/config.php

$database_type = "mysql";

$database_default = "cactidb";

$database_hostname = "localhost";

$database_username = "cactiuser";

$database_password = "cactipw";

为cactiuser创建crontab

*/5 * * * * /usr/local/bin/php /usr/local/http/htdocs/cacti/poller.php > /dev/null 2>&1

5.完成配置

http://IP/cacti开始配置

默认用户名密码admin/admin

更改默认密码

设定

snmpwalk Binary Path             /usr/local/net-snmp/bin/snmpwalk

snmpget Binary Path               /usr/local/net-snmp/bin/snmpget

RRDTool Binary Path                /usr/local/rrdtool/bin/rrdtool

PHP Binary Path                       /usr/local/bin/php

Cacti Log File Path                   /usr/local/httpd/htdocs/cacti/log/cacti.log

Cactid Poller File Path                    /usr/local/cactid/cactid

另外,进入cacti后需确认更改一下位置:(如下图)

Console>Settings>General

Console>Settings>Poller

Linux下cacti的安装的更多相关文章

  1. Linux下命令行安装weblogic10.3.6

    Linux下命令行安装weblogic10.3.6 一.安装前准备工作: 1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中 ...

  2. Linux下MongoDB服务安装

    Linux下MongoDB服务安装 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ...

  3. Windows下的Memcache安装 linux下的Memcache安装

    linux下的Memcache安装: 1. 下载 memcache的linux版本,注意 memcached 用 libevent 来作事件驱动,所以要先安装有 libevent. 官方网址:http ...

  4. linux下subversion server安装手册

    linux下subversion server安装手册 安装基于的Linux版本为:Red Hat Enterprise Linux Server release 6.3. 一 准备需要的安装包. ( ...

  5. Linux下Perl的安装(转)

    原文地址:Linux下Perl的安装 今天在虚拟机测试shell脚本的时候,有些命令使用不了. 比如说 mysqlhotcopy ,它提示Perl的版本太低. 我用的 RedHat9 的Perl才5. ...

  6. 细说Linux下软件包的安装与管理

    一 源码安装方式      由于linux操作系统开放源代码,因而在其上安装的软件大部分也都是开源软件,例如apache.tomcat.php等软件.开源软件基本都提供源码下载,源码安装的方式:源码安 ...

  7. Linux下Qt的安装与配置

    参考资料:http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html Linux 下编译.安装.配置 QT 下载qt 这里用的是4.7. ...

  8. Linux下OpenSSL的安装与使用

    Linux下OpenSSL的安装与使用 OpenSSL简介 OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux.Windows.Mac OS ...

  9. Linux下Kafka单机安装配置方法(图文)

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

随机推荐

  1. TCP的保活定时器 转

    http://blog.csdn.net/zhangskd/article/details/44177475 TCP的Keepalive,目的在于看看对方有没有发生异常,如果有异常就及时关闭连接. 当 ...

  2. python web开发配置

    安装python(最好是2.*版本) 安装easyinstall 参考Windows 下 Python easy_install 的安装 完成之后注意环境变量的配置 在系统环境变量的PATH中添加ea ...

  3. php 设计数据库连接池

    摘要 之前总是以脚本面向过程的方式写PHP代码,所以很大程度上来说,既不规范,也不安全,更不容易维护.为了代码的重用,准备写一套自己的工具库,这样的话,以后写项目的时候就可以很轻松的进行使用啦. 今天 ...

  4. 【PS实例】轻松打造梦幻的照片

    本系列教程将开始讲解PS的一些制作实例,通过实例的讲解同时介绍各种工具和面板机快捷键的使用,这样能够让大家更有兴趣学习,在学习的同时能够创造出自己喜欢的东西.本人使用的教程都是根据本人多次调试制作,仅 ...

  5. Net Core网络通信

    Net Core网络通信 https://www.cnblogs.com/xxred/p/9859893.html 聊聊如何设计千万级吞吐量的.Net Core网络通信! 作者:大石头 时间:2018 ...

  6. 为什么要编写轻量级的View Controller??

    1.作为iOS项目中最大的文件,ViewControllers中的代码复用率几乎是最低的2.重量级的View COntroller加大了测试的复杂度.所以关注ViewController的瘦身,把业务 ...

  7. Yii 一些小的问题

    是否验证 ======================= $model->save()执行时,如何不要验证? 我用的是表单模型,表单模型已经验证了,保存时不想用表模型验证,如何不让表模型验证.也 ...

  8. 通过API访问Ambari的配置

    HttpClient client = new HttpClient(); Base64.Encoder encoder = Base64.getEncoder(); HttpMethod metho ...

  9. (转)android - anim translate中 fromXDelta、toXDelta、fromYDelta、toXDelta属性

    2012-03-23 15:51 16144人阅读 评论(5) 收藏 举报 android <set xmlns:android="http://schemas.android.com ...

  10. int 和 Integer 有什么区别

    原文地址:https://blog.csdn.net/chenliguan/article/details/53888018 1 int与Integer的基本使用对比 (1)Integer是int的包 ...