导读 | Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。在三大开源工具中,cacti的网络监控能力是非常强的,通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。今天我们介绍下cacti的安装与配置 |
Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图。
cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。
snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。关于RRDTool的知识请参阅RRDTool教学。
snmp(Simple Network Management Protocal, 简单网络管理协议)在架构体系的监控子系统中将扮演重要角色。大体上,其基本原理是,在每一个被监控的主机或节点上 (如交换机)都运行了一个 agent,用来收集这个节点的所有相关的信息,同时监听 snmp 的 port,也就是 UDP 161,并从这个端口接收来自监控主机的指令(查询和设置)。
如果安装 net-snmp,被监控主机需要安装 net-snmp(包含了 snmpd 这个 agent),而监控端需要安装 net-snmp-utils,若接受被监控端通过trap-communicate发来的信息的话,则需要安装net-snmp,并启用trap服务。如果自行编译,需要 beecrypt(libbeecrypt)和 elf(libraryelf)的库。
RRDtool是指Round Robin Database 工具(环状数据库)。Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直往下走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。RRDtool处理RRD数据库。它用向RRD数据库存储数据、从RRD数据库中提取数据。
Cacti整个系统的架构是这样的:基于SNMP协议,被监控端是服务器,或一些网络设备,网络管理工作站,采用Linux(或Freebsd)操作系统,并且安装Net-SNMP工具,使用RRDTOOL采集数据,存储数据,并用Cacti调用rrdtool显示出来。
CACTI采用PHP编写,基于B/S结构。
1)网络设置 2)主机系统 (1)网络接口流量(进与出的带宽) (2)监控CPU的负载、内存等等 (3)监控磁盘的空间、进程数等等 3)cacti常见的监测对象 (1)服务器资源:CPU、内存、磁盘、进程、连接数等 (2)服务器类型:WEB、Mail、FTP、数据库、中间件 (3)网络接口:流量、转发速度、丢包率 (4)网络设备性能、配置文件(对比与备份)、路由数 (5)安全设备性能、连接数、攻击数 (6)设备运行状态:风扇、电源、温度 (7)机房运行环境:电流、电压、温湿度
以下使用CentOS release 6.7 (Final)进行安装,将cacti根目录放置在/web/vhosts,并配置web服务器使用http://cacti.feiyu.com/进行访问,首先在主监控机上安装LAMP的web环境,此处直接使用yum进行安装。
[root@localhost ~]# yum install -y yum install php php-mysql php-snmp mysql mysql-server php-pdo perl-DBD-MySQL [root@localhost ~]# vim /etc/httpd/conf/httpd.conf #配置cacti访问路径 ServerName cacti.feiyu.com DocumentRoot /web/vhosts/cacti <directory "/web/vhosts/cacti"> Options Indexes AllowOverride none Order allow,deny Allow from all ErrorLog "logs/cacti-error_log" CustomLog "logs/cacti-access_log" common
然后安装snmp:
[root@localhost ~]# yum install net-snmp net-snmp-utils -y
再安装rrdtool:
[root@localhost ~]# yum install -y rrdtool rrdtool-devel rrdtool-php
下载cacti:
[root@localhost ~]# wget http://www.cacti.net/downloads/cacti-0.8.8f.tar.gz [root@localhost ~]# mkdir /web/vhosts -p [root@localhost ~]# tar xf cacti-0.8.8f.tar.gz -C /web/vhosts/ #cacti根目录放置处 [root@localhost ~]# cd /web/vhosts/ [root@localhost vhosts]# ls cacti-0.8.8f [root@localhost vhosts]# ln -sv cacti-0.8.8f cacti [root@localhost ~]# service httpd start [root@localhost ~]# service mysqld start
cacti文件中有创建表的sql语句,但是没有创建数据库,需要手动创建。
[root@localhost cacti]# mysqladmin create cactidb [root@localhost cacti]# mysql cactidb < cacti.sql [root@localhost cacti]# mysql -e "grant all on cactidb.* to cactiuser@localhost identified by 'cactiuser'" [root@localhost cacti]# mysqladmin flush-privileges [root@localhost cacti]# mysql -u cactiuser -p Enter password: Welcome to the MySQL monitor. Commands end with ; or /g. Your MySQL connection id is 7 Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '/h' for help. Type '/c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | cactidb | | test | +--------------------+ 3 rows in set (0.00 sec) mysql> /q Bye
编辑cacti配置文件,修改根目录:
[root@localhost cacti]# cd include/ [root@localhost include]# vim config.php $database_type = "mysql"; $database_default = "cactidb"; #修改为自己创建的数据库 $database_hostname = "localhost"; $database_username = "cactiuser"; $database_password = "cactiuser"; $database_port = "3306"; $database_ssl = false; $url_path = "/";
cacti获取数据需要用普通用户执行脚本获取。
[root@localhost cacti]# useradd cactiuser [root@localhost cacti]# chown -R cactiuser.cactiuser log rra
安装好cacti后,首先校对时间。
[root@localhost log]# date 0122203616
定义定时任务执行数据收集脚本
[root@localhost cacti]# echo '*/5 * * * * /usr/bin/php /web/vhosts/cacti/poller.php &> /dev/null' > /var/spool/cron/cactiuser
执行此脚本会报许多错,原因是php时区有问题
[root@localhost cacti]# php /web/vhosts/cacti/poller.php
修改时区:
[root@localhost cacti]# vim /etc/php.ini 947 date.timezone = Asia/Shanghai [root@localhost cacti]# service php-fpm restart
然后开始在浏览器中访问cacti,指定 rrdtool、 php、 snmp 工具的 Binary 文件路径,确保所有的路径都是显示”FOUND”,没有 “NOT FOUND”的,点击 Finish 完成安装。默认账号和密码都是admin,首次登陆首先需要修改密码。
点击 graphs ,查看cacti 监控本机的图表。
下面开始添加自定义监控项,需要自己编写脚本实现。
[root@cacti ~]# vim tcpconn.sh #!/bin/bash # #$1:hostname or IP #$2:snmp community(public) SNMPNETSTAT=/usr/bin/snmpnetstat ESTABLISHED=`$SNMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1|grep -i 'established'|wc -l` echo -n "established:$ESTABLISHED" [root@cacti ~]# cp tcpconn.sh /web/vhosts/cacti/scripts/ #复制脚本到cacti目录中
添加步骤如下所示:
Data Input Methods -> Input Fields(添加所需要的参数) -> Output Fields(输出字段,名字要与脚本所定义的名字保持一致) -> Data Templates(定义数据模板)-> Data Sources(定义数据源)-> Graph Templates(定义图像模板并添加图像) Graph Template Items -> 并为每一个图像添加GPRINT(需要为每个数据源添加Current,Average,Max)-> Graph Management (添加图片)-> Export Templates(导出模板)
(1)在Data Input Methods中添加脚本,并需要在Input Fields中添加用户需要传的参数,http://cacti.feiyu.com/,进入cacti图形窗口,点击Data Input Methods–>add,如下所示:
(2)然后在 Iutput Fields定义输入字段2个,与脚本中的输入保持一致:
(3)然后在Output Fields定义输出字段,与脚本中的输出保持一致:
定义完成后如下图所示:
(4)数据收集后需要保存在RRD文件中,然后创建RRD文件,在Data Templates中添加数据模板:
有了数据模板然后创建数据源,点Data Sources
数据文件定义完成如下所示:
(5)然后创建模板,将模板应用到主机上就能生成图片了:
(6)然后添加图片格式:
图片格式添加完成后如下所示:
(7)然后点Graph Management关联设备:
(8)关联主机后并关联数据源:
(9)然后再添加对图片的说明(图片下面的彩色方块):Console -> Graph Templates -> (Edit) -> Graph Template Items,将Current,Average,Max都添加上去:
[root@cacti scripts]# vim tcp3.sh #!/bin/bash # #$1:hostname or IP #$2:snmp community(public) SNMPNETSTAT=/usr/bin/snmpnetstat TEMPFILE=`mktemp /tmp/\_tcpconn.XXXXXXXXXX` $SNMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1 > $TEMPFILE ESTABLISHED=`grep -i "ESTABLISHED" $TEMPFILE|wc -l` TIMEWAIT=`grep -i "TIMEWAIT" $TEMPFILE|wc -l` SYNRECEIVED=`grep -i "SYNRECEIVED" $TEMPFILE|wc -l` echo -n "established:$ESTABLISHED timewait:$TIMEWAIT synreceived:$SYNRECEIVED" [root@cacti scripts]# cp tcp3.sh /web/vhosts/cacti/scripts/
然后在浏览器中进行定义,定义的步骤与上面的相同的。
定义完成后的数据模板如下所示:
添加图像完成后如下所示:
最终生成的图像如下 :
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/111528.html