分类: 系统运维
2010-07-24 15:31:43
声明:本系列文档出自石头记,如若转载请注明出处,本人保留文档的所有权,并欢迎转载。
一、概述及Cacti的工作流程
二、Cacti的安装
三、Cacti的使用
四、Cacti脚本及模板
五、Cacti插件
六、Cacti高级应用--打造自己的Cacti模板
一、概述
1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
2. Mysql配合PHP程序存储一些a变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。
3. snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。关于RRDTool的知识请参阅RRDTool教学。
二、Cacti的架构及工作流程
1. Cacti的架构
2. Cacti的工作流程
Cacti的安装
1.安装环境:RedHat AS 4
2.安装Apache、MySQL、PHP
(1).安装MySQL
下载地址:http://dev.mysql.com/downloads/mysql/5.0.html
//查看系统中是否已经安装了MySQL,如果是卸载所有以mysql开头的包。
//查找/etc/my.cnf(MySQL的选项配置文件),如果有请删除它,以免影响新安装版本的启动。
//建立符号链接,如果以后有新版本的MySQL的话,你可以仅仅将源码解压到新的路径,然后重新做一个符号链接就可以了。这样非常方便,数据也更加安全。
//添加用于启动MySQL的用户及用户组(如果以前安装过MySQl,用户及用户组可能已存在)。
//初始化授权表
//修改MySQl目录的所有权
//启动Mysql
//配置系统启动时自动启动MySQl
//修改MySQL的最大连接数
//添加以下行
//max_connections设置最大连接数为1000
//max_user_connections设置每用户最大连接数为500
//wait_timeout表示200秒后将关闭空闲(IDLE)的连接,但是对正在工作的连接不影响。
//保存退出,并重新启动MySQL
//重新启动MySQL后使用下面的命令查看修改是否成功
Password:
//可以看到以下项说明修改成功
| max_connections | 1000
| max_user_connections | 500
| wait_timeout | 200
(2).安装Apache
下载地址:
//编译时加上加载模块参数--enable-so
//修改Apache配置文件,添加ServerName 或ServerName 本机ip
//在rc.local上加入一行
系统启动时启动Apache服务。
(3).安装PHP
先安装zlib,freetype,libpng,jpeg以便于让PHP支持GD库(Cacti的WeatherMap插件必须要较新GD库的支持)
库文件下载地址:
1).安装zlib
2).安装libpng
注意,这里的makefile不是用./configure生成,而是直接从scripts/里拷一个
3).安装freetype
4).安装Jpeg
注意,这里configure一定要带--enable-shared参数,不然,不会生成共享库
./configure --prefix=/usr/local/libjpeg --enable-shared --enable-static
make && make install
5).安装Fontconfig
6).安装GD
./configure --with-freetype-config=/usr/local/freetype
make
make install
make
make install
编译时显示以下信息:
** Configuration summary for gd 2.0.34:
Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
Support for Fontconfig library: yes
Support for Xpm library: no
Support for pthreads: yes
7).编辑/etc/ld.so.conf,添加以下几行到此文件中。
并执行ldconfig命令,使用动态装入器装载找到共享库
8).安装libxml,RedHat AS 4默认安装libxml包,但版本太低,PHP5需要更高版本的libxml包。
9).安装PHP
PHP下载地址:
# make
# make install
# cp php.ini-recommended /usr/local/php/lib/php.ini
# ln –s /usr/local/php/bin/* /usr/local/bin/
# vi /usr/local/apache/conf/httpd.conf
查找
在其下加入
修改DirectoryIndex 行,添加index.php
修改为
# vi /usr/local/apache/htdocs/test.php
wq保存退出。
在浏览器中输入:http:///test.php进行测试。
对php编译选项的解释:
--prefix=/usr/local/php //指定PHP的安装目录
--with-apxs2=/usr/local/apache2/bin/apxs //支持Apache模块
--with-mysql=/usr/local/mysql //支持MySQl
--with-gd=/usr/local/libgd //支持GD库
--enable-gd-native-ttf //激活对本地 TrueType 字符串函数的支持
--with-ttf //激活对 FreeType 1.x 的支持
--with-freetype-dir=/usr/local/freetype //激活对 FreeType 2.x 的支持
--with-jpeg-dir=/usr/local/libjpeg //激活对 jpeg-6b 的支持
--with-png-dir=/usr //激活对 png 的支持
--with-zlib-dir=/usr/local/zlib //激活对zlib 的支持
--enable-mbstring //激活mbstring模块
--enable-gd-jis-conv //使JIS-mapped可用,支持日文字体
--with-mail //支持Mail函数
--enable-xml //支持XML
--enable-sockets //支持套接字
1.安装RRDTool
由于rrdtool-1.2.23需要一些库文件支持,故需先安装配置支持的环境,然后编译安装。直接运行以下bash脚本就可以完成安装:
注意:将cgilib-0.5.tar.gz、zlib-1.2.3.tar.gz、libpng-1.2.18.tar.gz、freetype-2.3.5.tar.gz、libart_lgpl-2.3.17.tar.gz、rrdtool-1.2.23.tar.gz放到/root/rrdtool-1.2.23目录下,将脚本保存为/root/rrdtool-1.2.23/rrdtoolinstall.sh,并给执行权限chmod u+x /root/rrdtool-1.2.23/rrdtoolinstall.sh。
以下链接是我重新打好的一个rrdtool-1.2.23的安装包,里面包括了所有用到的库文件和安装脚本,下载解压后执行脚本rrdinstall.sh即可以完成RRDTool的安装。
点击下载rrdtool-1.2.23.tar.gz
如果以上脚本安装失败,可以试试以下安装包:
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.23.tar.gz
cd rrdtool-1.2.23
./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl && make && make install
//完成后建立符号连接
//执行 rrdtool 看是否安装正确
2.安装net-snmp
RedHat默认安装了SNMP服务,但好象没有snmpwalk,snmpget这两个命令,所以需要编译安装NET-SNMP。
NET-SNMP官方网站:
#cd net-snmp-5.2.4
#./configure --prefix=/usr/local/net-snmp --enable-developer
#make
#make install
# ln –s /usr/local/net-snmp/bin/* /usr/local/bin/
#cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf
//修改snmpd.conf(修改COMMUNITY、允许抓取snmp数据的主机、抓取数据范围等)。
# vi /etc/rc.d/rc.local
//在 rc.local 上加入一行
系统启动时启动SNMP服务。
3.安装Cacti
Cacti官方网站:
# vi /usr/local/apache/htdocs/cacti/include/config.php
//添加cacti用户
//将rra目录的所有权给cacti用户
//修改cacti目录所属组
//为cacti用户添加cron任务
注意:首次执行poller.php时请使用cacti用户,否则生成的rrd文件cacti将没有写入权限。
4.安装Cactid
CACTID 的安装需要以下支持:
o net-snmp-devel (需要编译安装net-snmp时添加--enable-developer选项)
o mysql
o mysql-devel (mysql源文件编译安装后默认支持)
o openssl-devel (Redhat默认安装)
//这时你将在此目录下看到多出了cactid、cactid.conf两个文件
5.数据库配置
mysql>exit
# cd /usr/local/apache/htdocs/cacti
# mysql –uroot –p cacti < cacti.sql
Password:
6.完成cacti的安装
1).在浏览器中输入:http:///cacti/
默认用户名:admin 密码:admin
2).更改密码
3).设置cacti用到的命令路径
4).进入cacti后需确认更改以下位置:(如下图)
Console>Settings>General
Console>Settings>Poller
Cacti的使用
1.界面介绍
登陆Cacti后,可以看到左上角是两个选项卡,“console”和“graphs”。console表示控制台,在此进行所有的配置等操作;而graphs则是用来查看所有服务器的性能图像的界面。
2.console菜单
Create:
New Graphs——创建新图像的快捷方式;
Management:
Graph Management——图像管理。可以在此删除、复制图像,Cacti会自动创建图像。不过如果我们有特殊的需要,比如将几张图上的数据合并在一张图像上的话也可以在此手工新建图像;
Graph Trees——图像树。在graphs界面里,图像或devices是树状结构显示的,可以在此设置树的结构;
Data Sources——管理rrd文件。一般无需修改,Cacti会自己创建rrd文件;
Devices——设备管理。这是我们最经常需要修改的地方,可以在此创建新的设备或修改其名称等信息。
Collection Methods
Data Queries 和Data Input Methods是采集数据的方式,一般我们无需对这两项进行修改;
Templates
Graph Templates 、Host Templates和Data Templates 分别是图像模板、主机类型模板和数据模板。这些模板可以导出、导入也可以自己编写,一般无需修改。
Import/Export
Import Templates 和Export Templates,对上述模板的导入、导出。我们可以在Cacti的官方网站上找到这些模板,不过需要注意模板对于的Cacti的版本。
Configuration
Settings ——Cacti的主要配置菜单;
可以在此重新设置对应的程序的路径、版本等信息。也可以设置图像的输出方式(允许ftp)、显示效果、登陆方式(允许使用LDAP)等。
Utilities
System Utilities ——显示Cacti系统的一些cache和log信息,如果log文件太大建议直接到后台查看;
User Management ——用户管理。可以在此添加、删除用户,并对每个用户设置详细的权限;
Logout User ——注销用户。
3.创建监测点
假设被监测的服务器名叫“Test Host”,IP为192.168.100.110,SNMP的community为public。
进入Cacti的console面板->
点击“Devices”进入设备面板->
点击“Add”添加新设备->
填写要监测服务器的各种信息,其中Host Template请选择“Local Linux Machine”或“ucd/net SNMP Host”(选择一个合适的主机模板)->
点击“Create”保存信息,如果SNMP连接没有问题,左上角会出现该服务器的信息,否则会出现“SNMP error”的红色字样->
点击上部的“Create Graphs for this Host ”为该设备创建需监测的内容。监测的内容分两种,“Graph Templates”和“Data Query”,区别在于“Data Query”能根据SNMP信息列出监测项目的信息。例如Data Query里的“Interface Statistics”可以看到该主机所有网卡的信息,这样我们可以选择需要监测的网卡。点击右侧的正方形选择框勾选上要监测的项目->
点击“Create”创建选择的监测内容,已经选择创建的内容会自动变成灰色并且不能再点选。Cacti会自动创建该监测点的rrd文件(在rra文件夹中)、“Data Source”和“graph”条目。
创建监测点完毕。
4.查看监测点
点击“Graph Management”可以看到刚才创建的监测点对应的图像,注意由于Cacti默认每5分钟到监测服务器上取一次数据,所以刚创建的监测点会出现图像不能显示的现象,需要等几分钟查看才会正常显示。
为了方便查看,可以将刚才新创建的设备或图像加入到“图像树”上:
点击“Graph Tree”进入“图像树”面板->
点击分支名称或“Add”新的分支->
点击“Add”,添加新的“Tree Items”->
“Tree Item Type”中选择“Host”,“Tree Item Value”的“host”中选择刚才新添加的主机“Test Host”->
点击“Create”。
直接在ViewTree中添加一个host节点进行监控无疑是一个简单的方法,但随监控图的增多,将所有的图像放到一个host节点上,当查看图像时图像的显示速度会变慢,而且监控图的条理也不清除,所以通常可以根据监控图监控的功能和监控服务的类型等进行分类,整理出一棵有条理的图像树。可以按下面步骤添加节点。
首先添加一个root节点,“Tree Item Type”中选择“Header”,“Title”中填写一个合适的描述性信息,如本例填写“Host Monitor”,Host Monitor节点的图像主要是和主机性能相关的一些图像,如CPU、内存、磁盘空间等;
点击刚创建的root节点(Host Monitor)后面的Add链接来添加一个Graph;
在“Tree Item Type”中选择“Graph”,在“graph”中选择加入想要加入的监控图,重复此过程加入所有你想加入的监控图。
你还可以添加Tree Items,如MySQL Monitor,此节点用来监控与MySQL服务相关的信息,重复上面的过程直到一颗有条例的树创建完成。
这样,我们就可以在“graphs”界面中查看“Test Host”的所有监测图像了。
5.为已有host添加新的监控图
在console控制台下点击“New Graphs”,选择要添加监控图的主机。在Graph Templates中选择一个Graph模板,本例选择SNMP - Ceneric OID Template,点击create按钮。
填写以下信息,在“Title”文本框中填写Graph的名字,在“Vertical Lable”文本框中填写描述信息或是所绘图片使用的单位等,显示在所绘图片的左侧,在“name”文本框中填写此数据源的名字,在“LegendColor”中选择画图使用的颜色,在“Legend Text”填写图例的名字,在“OID”文本框中填写要监控的主机的OID信息,点击“create”按钮完成Graph的创建。
完成后监控图如下:
6.合并多个数据源到一张图上
在console控制台下点击“Graph Management”,然后点击Add链接。
在“Select Graph Template”下拉框中选择None,在“Host”下拉框中选择None,然后点击create按钮。
在“Title”文本框中输入Graph的名字。
点击Add链接,添加Graph Items。
添加多个数据源,将所选的多个数据源画到一张监控图上。
完成后将所画的监控图放到Graph Trees中。
Cacti脚本及模板
Cacti脚本及模板论坛:
一个完整的cacti脚本及模板列表:
1.Advance Ping 脚本及模板
下载地址:
注:要使用此模板,编译PHP时必须加上--enable-sockets选项来支持套接字。
1).功能:此模板用来监控一个TCP/UDP端口、ICMP的延时情况和丢包情况。
2).下载ss_fping.php脚本并放到/usr/local/apache/htdocs/cacti/scripts/目录下,下载cacti_graph_template_ping_advanced_ping_v1_3.xml模板,用cacti的模板导入页将此模板导入。
3).在Console选项卡下的左侧菜单栏中选择Devices,为要监控的主机新建一个Devices或选择已有Devices。在Associated Graph Templates中添加Advanced Pingv1.3模板。并点击最上面的Create Graphs for this Host链接。
在Graph Templates的选择框中选择PING - Advanced Ping v1.3,然后点击Create按钮,出现以下WEB页。
第一项意思是一次向要监控的端口发送多少个探测包(默认20个),第二项是使用的协议,可以是ICMP、TCP、UDP,第三项是要监控的端口号(只有第二项为TCP或是UDP时使用),填写完成后点击create按钮。
在Console控制台选项卡下的左侧菜单中选择Date Sources,选择以上新建的数据源可以修改以上填写的信息。
在控制台选项卡下左侧菜单中选择Graph Trees可以组织一个树状视图。
在graphs选项卡下浏览创建的Advanced Ping监控图。
TCP3360端口(MySQL)
TCP80端口(HTTP)
Pkt Loss:丢包数量/20 * 100%(每次ping 20个包)
Avg Loss:平均丢包情况
Latency:延时情况
Avg Latency:平均延时情况
1.MySQL stats模板
论坛讨论:
下载地址:
功能:用来监控MySQL状态,其中包括索引使用情况、查询、排序、锁定情况等。
1).将mysql_stats.php 和 dumpMemcachedStats.php脚本放到cacti脚本目录下(/usr/local/apache/htdocs/cacti/scripts/),导入模板时注意选择cacti_host_template_temysql_host-step300-heartbeat600.xml和cacti_host_template_memcached_host-step300-heartbeat600.xml模板(默认cacti 5分钟取一次数据)。
2).配置MySQL服务器,让cacti所在机器能够访问MySQL服务器的状态信息,必须拥有"process"权限。如果要监控InnoDB状态,还必须有"SUPER"权限。
GRANT PROCESS ON *.* TO cacti@'cactimachine' IDENTIFIED by 'cacti';
GRANT SUPER ON *.* TO cacti@'cactimachine' IDENTIFIED BY 'cacti';
3).创建Graph。在Console选项卡下的左侧菜单栏中选择Devices,为要监控的主机新建一个Devices或选择已有Devices。在Associated Graph Templates中添加想要监控MySQL状态的Graph Templates(如teMySQL – Index Usage模板,此套模板是以teMySQL开头的一系列模板)。并点击最上面的Create Graphs for this Host链接,在Graph Templates的选择框中选择teMySQL – Index Usage,然后点击Create按钮,出现以下WEB页。
在上面填写有权限访问MySQL数据库的用户名及密码,然后点击create按钮。
选中刚添加的Graph Templates,点击create按钮来创建Graph。
在控制台选项卡下左侧菜单中选择Graph Trees可以组织一个树状视图。
在graphs选项卡下浏览创建的MySQL监控图。
缩略图:
3.其他模板
其他模板在以后慢慢加入,敬请期待。如果各网友有什么好的模板,也请不吝赐教,大家一同提高。