Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。Cacti是通过 snmp get来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界面友好。软件 Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图。

Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。即如果想监控一台主机,需要在被监控主机上安装net-snmp相关软件包,在监控主机上安装rrdtool和cacti

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

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

利用cron定期执行php脚本代码,通过snmp读取指定监控项目的snmp信息,然后将结果保存到rrdtool数据文件中。在web监控界面中通过php读取rrdtool并生成指定监控项目和指定时间段的监控曲线图

Data Retrieval
Cacti首先要做的工作就是收集数据,cacti使用Poller(轮询器)收集数据。Poller是操作系统scheduler的扩展,如在类Unix系统中的crontab。现在的IT设施中会有许多不同的设备,如服务器、网络设备等,cacti主要使用SNMP协议来从远端的设备上收集数据,所有可以使用SNMP协议的设备都可以被cacti监控。

Data Storage
存储收集到的数据有许多方法,可以使用数据库、平面文件等,cacti使用的是RDDTool。RRD是Round Robin Database(环形数据库)的缩写,RRD用来存储和显示时间序列数据,如网络带宽、机房温度、服务器负载等,RRD使用非常紧凑的方式存储数据,数据不会随着时间的推移而增大,RRD还可以生成美观的图形。这些特性使得cacti没有存储需求。RRD也做一席位其他的工作,如RRD会将原始数据与已整合的数据进行合并,以使得历史数据的存储节省空间,RRD支持的整合功能包括:AVERAGE, MAXIMUM, MINIMUM和LAST。

Data Presentation
Cacti最大的一个特点是内置了RRDTool画图功能,将其与通用的web服务器相结合,可以实现在任意平台上使用浏览器就可以查看监控画面。

安装RRDTool和SNMP

#安装RRDTool
yum install rrdtool rrdtool-devel rrdtool-php rrdtool-perl #安装 snmp,因为此事例中监控和被监控主机是同一台,所以在此主机中安装net-snmp相关软件包
yum -y install net-snmp* #安装其他依赖,Spine依赖
yum -y install mysql-devel openssl-devel #启动snmp
service snmpd start #开机启动snmp
chkconfig snmpd on

下载Cacti和Spine

  Cacti: wget http://www.cacti.net/downloads/cacti-0.8.8h.tar.gz

  Spine: wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8h.tar.gz

  由于默认cmd.php来轮询数据,速度会很慢,特别是在监控节点比较多的情况下,cmd.php就更显不足了,因此我们采用Spine来轮询数据。cacti-spine是一个由C语言开发的,用于替代cmd.php的快速获取速度的引擎。

#解压cacti,需要使用sql
tar -xzf cacti-0.8.8h.tar.gz

MySQL中创建给Cacti使用的数据库,帐号等信息,并导入Cacti数据表信息

#登录
mysql -u root -p #创建数据库
create database if not exists 数据库名 default charset utf8 COLLATE utf8_general_ci; #创建用户,并设置对数据库的访问权限
grant all on 数据库名.* to '用户名'@'%' identified by '密码'; #刷新系统授权表,使设置生效
flush privileges; #导入cacti数据库文件
use 数据库名
source 解压后的cacti目录/cacti.sql

安装Cacti

#把已经解压的 cacti-0.8.8h 挪到 nginx 指定的网站目录,可以作为一个网站,也可以作为一个网站目录
mv cacti-0.8.8h /网站目录/cacti #修改cacti的MySQL配置信息
vim /网站目录/cacti/include/config.php #如果用的cacti作为一个网站,非某网站的子目录,需要修改include/global.php,否则一直跳转url,且跳转地址错误
vim /网站目录/cacti/include/global.php #把 $url_path = '/cacti/' 改为 $url_path = '/';
#修改 Nginx 配置,添加 cacti 网站 vim /Nginx配置文件路径/nginx.conf #重启 Nginx service nginx restart

访问Cacti

#会提示安装,安装完登录,初始帐号密码都是 admin
http://xxx.xxx.xxx/

安装Spine

#编译安装Spine
tar -xzf cacti-spine-0.8.8h.tar.gz cd cacti-spine-0.8.8h ./configure
make && make install #拷贝配置文件
cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf #修改配置文件中的给Spine使用的数据库信息
vim /etc/spine.conf

测试Spine

#执行此命令会输出如下:
#SPINE: Using spine config file [/etc/spine.conf]
#SPINE: Version 0.8.8h starting
#SPINE: Time: 0.1129 s, Threads: 5, Hosts: 2 /usr/local/spine/bin/spine

配置Cacti与Spine

#cacti的web配置界面选择setting 

settings->paths->Spine Poller File Path [/usr/local/spine/bin/spine]
settings->poller->Poller Type [spine]
console->settings->poller->Maximum Threads per Process []

定时采集,每分钟采集一次

#把如下内容加入crontab
* * * * * /PHP执行文件所在目录/php /cacti网站所在目录/poller.php

配置被监控主机的snmp

  参考:http://www.cnblogs.com/JohnABC/p/6073445.html

添加被监控主机

添加完主机,如果成功,则可以通过snmpget获取到可以监控的项(与主机模版相关的“数据查询”、“图形模版”)。必须至少选择一个数据查询或图形模板与新设备关联,否则无法在下一步创建图表。如果没有可用的图形模板或数据查询适用设备,可以官网查询模板库或自己创建。

cacti 是时间序列展示工具

nagios 状态监控工具

snmp 有三个版本。被监控端启动snmp服务,监听snmpget请求,根据请求响应指定结果,有CPU,内存等信息。中间认证机制是靠community(共同体)实现的。监控端:“老子是aaa团伙的,你要是认可aaa团伙就给放行”,被监控端:“aaa团伙我放心”。community相当于密码。

snmp与MIB库。

a

Cacti-安装和使用详解的更多相关文章

  1. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  2. zookeeper的安装(图文详解。。。来点击哦!)

    zookeeper的安装(图文详解...来点击哦!) 一.服务器的配置 三台服务器: 192.168.83.133   sunshine 192.168.83.134   sunshineMin 19 ...

  3. 转AjaxControlToolkit的安装与使用详解

    AjaxControlToolkit的安装与使用详解 AjaxControlToolkit下载http://ajax.asp.net/downloads/default.aspx?tabid=47ht ...

  4. 学习笔记--Grunt、安装、图文详解

    学习笔记--Git安装.图文详解 安装Git成功后,现在安装Gruntjs,官网:http://gruntjs.com/ 一.安装node 参考node.js 安装.图文详解 (最新的node会自动安 ...

  5. Mac下安装HBase及详解

    Mac下安装HBase及详解 1. 千篇一律的HBase简介 HBase是Hadoop的数据库, 而Hive数据库的管理工具, HBase具有分布式, 可扩展及面向列存储的特点(基于谷歌BigTabl ...

  6. Ubuntu下安装JDK图文详解

    很详细的在Ubuntu中安装JDK图文详解教程,我们选择的是jdk1.6.0_30版本.安装文件名为jdk-6u30-linux-i586.bin. 1.复制jdk到安装目录 (1)假设jdk安装文件 ...

  7. CentOS7/RHEL7安装Redis步骤详解

    CentOS7/RHEL7安装Redis步骤详解 CentOS7/RHEL7安装Redis还是头一次测试安装了,因为centos7升级之后与centos6有比较大的区别了,下面我们就一起来看看Cent ...

  8. RedHat 7.1 下安装 Zabbix监控程序详解(适合linux初级用户)

    RedHat 7.1 安装 Zabbix 监控程序详解(适合对linux初级用户)2017-05-02 安装步骤: 1.zabbix需要安装LAMP架构 2.安装zabbix服务 3.初始化zabbi ...

  9. Vmware12安装centos系统详解

    vmware12安装centos7系统详解 用虚拟机12安装centos7系统详细安装过程,后附centos7下载地址. 工具/原料 虚拟机12 centos7系统镜像 方法/步骤 1 1.百度搜索c ...

  10. (转)windows 下安装配置 Nginx 详解

    windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...

随机推荐

  1. openfire聊天消息记录插件关键代码

    package com.sqj.openfire.chat.logs; import java.io.File; import java.util.Date; import java.util.Lis ...

  2. applicationContext.xml简单笔记

    applicationContext.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <bean ...

  3. node.js基础 1之 URL网址解析的好帮手

    URL和URI的区别: URL是统一资源定位符 URI是统一资源标识符 URL是URI的子集(URL一定是URI,但URI不一定是URL) node中的URL中的url.parse protocol: ...

  4. div水平居中与垂直居中的方法【摘自美浩工作室官方博客 】

    大家往往在写页面中会遇到不固定宽和高的div如果水平和垂直都居中呢?在写css的时候经常遇到的一个问题,当div没有固定的宽度或者高度的时候,如何才能让div水平或者垂直居中显示.如果div有固定宽度 ...

  5. C#日常总结1

    Rows:行的集合: Columns:列的集合: Gridview:用来显示数据的表格{ //设置 AutoGenerateColumns="false":表示不允许自动产生列,列 ...

  6. 用c语言编写二分查找法

    二分法的适用范围为有序数列,这方面很有局限性. #include<stdio.h> //二分查找法 void binary_search(int a[],int start,int mid ...

  7. 错误信息:System.Resources.MissingManifestResourceException: 未能找到任何适合于指定的区域或非特定区域性的资源。请确保在编译时已将“****.****.Resource.resources”正确嵌入或链接到程序集"****",或者确保所有需要的附属程序集都可加载并已进行了完全签名

    在网上搜索了N久都没看到几篇解决的文章,最后在不懈的努力下终于解决了,所以决定写下解决方法方便以后遇到同样问题的朋友: 其实这个错误的主要问题就是没有找到需要的资源文件(该文件为Resources.r ...

  8. Windows与Linux主机之间的连接和交互工具

    1.Putty 远程连接Linux主机 Windows主机上安装putty,工具打开后显示如下: 输入要连接的Linux主机的IP地址,点击Load,连接主机后输入用户名密码,即可登录Linux主机 ...

  9. enmo_day_03

    安装 装载点 : /u01 (第一个挂载点 LUN1) /u01 (第二个挂载点LUN2) /disk01 目录 : /u01/app/oracle /u01/app/app 文件 : 控制文件 :c ...

  10. Android 4.2以上的手机USB调试设置

    今天遇到一个问题,我手上有两部手机一部是红米.一部是中兴的青漾QY N986,两部手机的Android系统都是4.2.1的,连接到电脑测试,找了半天没有找到设置开发者选项,后来在网上找了半天,才发现g ...