1、Cacti简介
cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量
snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹 下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(RoundRobinArchive),它能够存储的数据笔数在创建时就已经定义。
2、Cacti 工作原理
Cacti操作可以分为以下三部分,如图所示:
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服务器相结合,可以实现在任意平台上使用浏览器就可以查看监控画面。
3、Cacti的工作结构
C/S模式,采集监测数据
B/S模式,管理监测平台
4、部署Cacti监控web和MySQL
4.1 安装Net-SNMP、RRDTool等支持软件
①构建数据库级Web平台(以使用CentOS 6.5系统光盘中的rpm包构建LAMP环境为例,所需安装的主要软件包如下所示,若还提示缺少其他依赖包,请根据提示从光盘中安装相应的软件包即可。)
1 | [root@centos1 ~]# yum -y install httpd |
②安装net-snmp-utils软件包(Cacti平台通过SNMP协议采集监测数据,这些工具程序由net-snmp-utils软件包提供,所需安装的软件包及依赖包如下所述。)
1 | [root@centos1 ~]# yum -y install net-snmp net-snmp-utils |
③安装rrdtool软件包
下载rrdtool-1.4.8.tar.gz软件包至目录/root
通过yum确认并安装相关的软件包
1 | [root@centos1 ~]# yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel libpng libpng-devel freetype freetype-devel libart_lgpl pango pango-devel perl perl-devel perl-CPAN |
4.2 部署Cacti、设置数据库连接
①部署Cacti源码包(将下载的Cacti源码包解压到Web服务器的网页目录。)
1 | [root@centos1 ~]# tar zxvf cacti-0.8.8b.tar.gz |
②建立数据库、表结构
先创建用于Cacti监测平台的数据库,并授权一个数据库用户(如Cacti),然后使用Cacti源码目录下的Cacti.sql脚本,导入预设的各种数据表。
1 | [root@centos1 ~]# mysql -u root –p //(这里因为是刚安装数据库还没设置密码、直接回车即可进入,在实际生产环境中建议设置高强度的mysql密码) |
③调整Cacti配置文件
Cacti的配置文件位于源码目录中的include/文件夹下,名称为config.php 要使Cacti系统能够正确访问并使用数据库,必须修改config.php文件,确保数据库连接参数正确无误。
1 | [root@centos1 cacti]# vim include/config.php |
4.3 Cacti的初始化安装
①调整httpd配置
修改httpd服务的主配置文件,设置好网站根目录、自动索引页、默认字符集等相关参数,然后重新加载httpd服务。
1 | [root@centos1 cacti]# vim /etc/httpd/conf/httpd.conf |
②初始化Cacti系统
添加防火墙策略
1 | [root@centos1 cacti]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT |
在浏览器中访问Cacti服务器的Web服务,初次访问时将会自动跳转至Cacti安装指南界面。
到此会检测系统配置文件,都OK即可继续下一步
登录系统,初此登录用户和密码为:admin ,系统会提示修改密码才能登录
4.4 客户机配置(被控端—-snmpd)
无论是交换机、路由器,还是Linux或Windows服务器,只要正确支持SNMP协议,并允许Cacti服务器采集数据,就能够进行集中监测。下面仅介绍Linux服务器中启用SNMP支持并设置共同体名(识别及验证字串)的简单方法。
安装并配置snmp服务
1 | [root@centos2 ~]# vim /etc/snmp/snmpd.conf |
第41行:192.168.1.101为Cacti服务器地址(默认为default),表示允许其查询本机数据;public表示SNMP共同何名称,用来识别及验证。
第62行:all表示开放所有的SNMP查询权限(默认是SystemView)。
第85行:去掉开头的注释符号,以便支持各种查询访问。
1 | [root@centos2 ~]# service snmpd start |
添加防火墙策略
1 | [root@centos2 ~]# iptables -I INPUT -p udp --dport 161 -j ACCEPT |
4.4 使用Cacti的Web控制台
4.4.1 添加被控端
①添加被控设备或主机
依次打开控制面板下的Management — Devices 完成以下操作
配置完后点击右下角的创建,并再次点击右下角的保存
成功连接被控端后会看到“Save Successful”的提示信息。
②设置要监测的项目
4.4.2 生成监测图像
在Cacti管理控制台中设置好被控端以后,需要为每个监测项目生成直观的图像,然后再将图像添加到监测树,以方便集中查看。
①创建图像(点击再次右下角Create完成创建)
依次打开控制面板下的Create — New Graphs 完成以下操作
②添加图像至监测树
依次打开控制面板下的Management — Graph Tress —- Defalt Tree 完成以下操作
添加监测主机
确认添加主机无误后,点击右下角创建
再次确认添加主机无误后,点击右下角保存
4.4.3 定期采集监测数据
Cacti系统通过poller.php页面来采集监测数据,需使用PHP程序解释执行。为了获得持续稳定的数据,应结合计划任务定期进行采集,如:每5分钟(poller.php页面默认刷新时间)。
①执行首次数据采集,会发现有发下报错(大致内容是说时区应该改成’Asia/Chongqing’)
1 | [root@centos1 ~]# /usr/bin/php /var/www/html/cacti/poller.php |
修改第946行去掉注释并改时区为’Asia/Chongqing’
1 | [root@centos1 ~]# vim /etc/php.ini |
写入任务计划
1 | [root@centos1 ~]# crontab -u cacti -e |
4.4.4 查看监测结果
4.4.5 安装percona-mysql-monitor插件,实现对MySQL服务的监控
借助 cacti+rrdtool 强大的绘图功能、加上专用的 mysql 模板、能够灵活快速的创建对多个 MySQL 实例的监测
Cacti工具默认的模板只能监控机器的CPU、内存和磁盘等信息,如果要监控MsSQL,要从percona公司的网站http:/www.percona.com/donwloads/上下载监控MySQL模板并安装。
①安装percona-mysql-monitor插件
1 | [root@centos1 ~]# tar zxf percona-monitoring-plugins-1.1.4.tar.gz |
②从本地文件导入模板(此步操作必需在主控服务器上进行)
依次打开控制面板的Import/Esport — Import Templates 完成以下操作
依次打开以下目录
1 | /root/percona-monitoring-plugins-1.1.4/cacti/templates/cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.4.xml |
点击右下角的Open 后再次点击右下角的Import完成导入
③导入完成以后,添加模板
依次打开控制面板的Templates — Host Templates 完成以下操作
打开Percona MySQL Server HT 后点击右下角Save保存
④创建图像
依次打开控制面板的 Management — Devices 完成以下操作
依次添加Percona MySQL Network Traffic GT和Percona MySQL Processlist GT
⑤添加网络图
⑥修改cacti连接mysql的用户,密码
1 | [root@centos1 scripts]# vim /var/www/html/cacti/scripts/ss_get_mysql_stats.php |
⑦在被监控主机上创建Cacti用户,密码为
Cacti(跟/var/www/html/cacti/scripts/ss_get_mysql_stats.php中用户,密码保持一致)
1 | [root@centos2 ~]# mysql -u root -p |
⑧添加防火墙策略
1 | [root@centos2 ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT |
⑨查看MySQL流量图(刚添加可能没有图像,此处需要等待几分钟……)