Cacti是一款网络流量监测图形分析工具,把LAMP的功能都结合起来,用于网络流量监控,操作起来非常方便!让我们认识下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文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(RoundRobinArchive),它能够存储的数据笔数在创建时就已经定义。
• 是一套基于php、mysql、SNMP、RRDTool开发的网络流量监测图形分析工具。Cacti通过snmpget获取数据,使用RRDTool绘画图形。最后通过web方式呈现出来
• Cacti三层架构:
– 数据采集层:通过SNMP或自定义脚本进行数据采集
– 数据存储层:通过cacti模板等数据存放至MYSQL中
– 数据展现层:通过WEB方式呈现出来
也可以把他理解为一个php网站
Cacti各组件的功能如图1.1所示:
2、Cacti工作原理
Cacti操作可以分为以下三部分,如图2.1所示:
2.1 Data Retrieval
Cacti首先要做的工作就是收集数据,cacti使用Poller(轮询器)收集数据。Poller是操作系统scheduler的扩展,如在类Unix系统中的crontab。现在的IT设施中会有许多不同的设备,如服务器、网络设备等,cacti主要使用SNMP协议来从远端的设备上收集数据,所有可以使用SNMP协议的设备都可以被cacti监控。
2.2 Data Storage
存储收集到的数据有许多方法,可以使用数据库、平面文件等,cacti使用的是RDDTool。RRD是RoundRobin Database(环形数据库)的缩写,RRD用来存储和显示时间序列数据,如网络带宽、机房温度、服务器负载等,RRD使用非常紧凑的方式存储数据,数据不会随着时间的推移而增大,RRD还可以生成美观的图形。这些特性使得cacti没有存储需求。RRD也做一席位其他的工作,如RRD会将原始数据与已整合的数据进行合并,以使得历史数据的存储节省空间,RRD支持的整合功能包括:AVERAGE,MAXIMUM, MINIMUM和LAST。
2.3 Data Presentation
Cacti最大的一个特点是内置了RRDTool画图功能,将其与通用的web服务器相结合,可以实现在任意平台上使用浏览器就可以查看监控画面。
一、安装
1、安装必须的软件包
yum -y install httpd php php-mysql php-ldap php-xml net-snmp-utils mysql mysql-server net-snmp lm_sensors gcc gcc-c++ libart_lgpl-devel zlib-devel libpng-devel freetype-devel
2、安装rrdtool。
Rrdtool是一个绘图工具,系统光盘中没有提供,所以需要手工安装
(1)安装rrdtool编译时所需软件
(2)解压rrdtool并进行配置安装
tar xvf rrdtool-1.2.27.tar.gz
cd rrdtool-1.2.27
./configure --prefix=/usr/local/
Make && Make install
3、启动mysql数据库和httpd服务
/etc/init.d/mysqld start
chkconfig mysqld on
/etc/init.d/httpd start
chkconfig httpd on
4、安装cacti
(1)cacti本质上是一个PHP网站,只需要把它解压并拷贝到/var/www/html/目录下即可
Tar xvf cacti-0.8.7g.tar.gz
mv cacti-0.8.7g /var/www/html/cacti
cd /var/www/html/cacti/
(2)创建cactiuser用户,并设置相关目录的属主、属组
useradd cactiuser
chown -R cactiuser.cactiuser rra/ log/
其中rra目录是收集到的监控数据目录,log目录是日志目录
(3)创建数据库。因为cacti并没有把创建数据库的脚本写到网页中,所以需要管理员手工创建相关数据库。
进入Mysql数据库
Mysql
创建数据库
create database cactidb default character set utf8;
为数据库进行授权:
grant all on cactidb.* to 'cactiuser'@'localhost' identified by 'cacti';
(4)以cactiuser的身份把sql脚本导入到数据库
mysql -ucactiuser -pcacti cactidb < cacti.sql
(5)修改相关的php文件,以便于apache通过php连接mysql数据库时,可以提供正确的用户名、密码等。
vim include/config.php
26行$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cacti";
$database_port = "3306";
总结:
1、 先安装cacti需要的系统包
2、 解压安装
3、 设置数据库,导入cacti.sql
4、 修改config.php
(6)打开网页按照向导完成安装
在浏览器输入http://192.168.10.64/cacti/install/
用户名和密码都是admin,首次登陆后,要求修改admin的密码 123456
修改完后即可进入界面
二、监控自身
CACTI监控的时候,是通过SNMP实现的。
SNMP:简单网络管理协议 UDP161、162
查询方法:
轮询:监控端周期性地查询被监控端161
陷阱:被监控端主动向监控端汇报事件162
SNMP消息类型:
get-request:监控端查询被监控端
get-next-request:监控端查询被监控端某一项更详细内容
set-request:监控端设置被监控端的某些参数
get-response:被监控端回应监控端
trap:陷阱,被监控端主动向监控端汇报事件
1、配置snmp
vim /etc/snmp/snmpd.conf
2、启动服务
/etc/init.d/snmpd start;chkconfig snmpd on
3、通过WEB页面添加被监控主机
(1)删除存在的主机
(2)添加要监控的主机
(3)添加监控项
上一步点击Create后,把页面拉到底部,后面显示没有数据,那么它是无用的,点击后面的X号,将其删除。
添加上SNMP能够监控的项目
使用相同的办法,把处理器信息也添加上。最后保存
(4)为监控项绘制图形
在WEB页的最上端,点击创建图形
选项要监控的项目,然后点击Create
(5)把创建的图形加入到图形树
(6)为图形生成数据
在监控服务器上,以cactiuser的身份执行php命令
过几分钟显示下图为正常
参考链接:
https://mp.weixin.qq.com/s/_3Ocv80v8dTMQIGxhiW4Ew
链接:
cacti论坛 :http://www.cnyunwei.com/forum-59-1.html
Cacti 0.8 Network Monitoring : http://club.topsage.com/thread-379998-1-1.html
Centos6.8安装cacti教程 : https://www.jb51.net/os/RedHat/512819.html
Centos7.2部署Cacti : https://mp.weixin.qq.com/s/ONWNOZYx2JfisKgKtn-Cdg
cacti监控工具之自定数据收集方法 : http://blog.51cto.com/zhaochj/1672199
cacti监控工具之数据收集方法、模板介绍及使用 荐 : http://blog.51cto.com/zhaochj/1669081
cacti监控工具之安装篇 : http://blog.51cto.com/zhaochj/1666191
【安全运维】Cacti监控系统注入漏洞引发的内网血案 : https://mp.weixin.qq.com/s/B34IaiZ1lQfbXxcgUIuwfA
监控 SQL Server 数据库服务器实现方法(Cacti、Nagios) : https://mp.weixin.qq.com/s/nu_tPCTu_6HrpR79LEKTVQ
如何在 Cacti 中合并两幅图片 :https://mp.weixin.qq.com/s/nu_tPCTu_6HrpR79LEKTVQ