cacti功能比较强大,模板插件的,要学习,内容比较多,根据实际情况选择性学习了。

第一篇 安装

1、安装LAMP

[root@cacti ~]# yum -y installhttpd mysql-server php php-mysql mysql-devel

[root@cacti ~]# chkconfig httpd on

[root@cacti ~]# chkconfig mysqld on

[root@cacti ~]# /etc/init.d/httpdstart

[root@cacti ~]#/etc/init.d/mysqld start

安装完成后,可通过以下程序测试

[root@cacti html]# cat inex.php

<?php

phpinfo();

?>


2、安装rrdtool

Rrdtool安装需要cairolibxml2pango库支持,可通过yum安装

[root@cacti ~]# yum -y installcairo-devel libxml2-devel pango-devel

[root@cacti ~]# tar zxvfrrdtool-1.4.7.tar.tar

[root@cacti ~]# cd rrdtool-1.4.7

[root@cacti rrdtool-1.4.7]#./configure --prefix=/usr/local/rrdtool

[root@cacti rrdtool-1.4.7]# make&& make install

[root@cacti rrdtool-1.4.7]# ln -s/usr/local/rrdtool/bin/* /usr/local/bin/


3、安装net-snmp(这个服务可以简单安装,直接用系统的,yum安装)

[root@cacti ~]# vim/etc/snmpd.conf 修改如下

(1)com2sec notConfigUser IP public

注:此IP为监控主机的IPsnmp安装在被监控的主机上。通过此协议采集数据。

(2)access notConfigGroup "" any noauth exact all none none

(3)view all included .1 80 去掉注释

重启服务,service snmpd restart,加入开机启动chkconfig snmpd on

检测:snmpwalk -v 2c -c public IP if

如果出现Timeout: No Response from localhost,检查进程和端口161

snmpd –f –Le 另一种启动方法,看到出错原因,root运行


4、安装cacti

[root@cacti ~]# tar zxvf cacti-0.8.7 -3.1.tar.gz

[root@cacti ~]# mv cacti-0.8.7-3.1/* /var/www/html

#cacti中的内容移到 web目录

[root@cacti ~]# useradd cacti

[root@cacti ~]# passwd cacti

[root@cacti ~]# chown -R cacti:cacti/var/www/html/cacti 这个步骤不一定需要,但是rralog的一定要照此修改权限,都为cacticacit要能读写,不然会出现出不了图的情况,这个一定注意,不然像我一样,搞了半天,明明看到数据文件更新了,图像就是出不来。


导入cacti的数据库

mysql在这里的作用是记录rrd文件位置等,如果cacti网页的密码忘了,也可以在数据库里想改相应的表。

[root@cacti ~]# mysql –u root

#连接到mysql创建数据库

mysql> create database cacti;

#创建cacti数据库

mysql> insert into mysql.user(host,user,password) values('localhost','cacti',password('cacti123'));

#建立用户cacti,密码cacti123

mysql> flush privileges;

#重载mysql授权表

mysql> grant all on cacti.* to cacti@'localhost' identified by 'cacti123';

#把数据库cacti授权于用户cacti

[root@cacti ~]# cd /var/www/html/cacti

[root@cacti cacti]# mysql –u cacti -pcacti123 cacti<cacti.sql #cacti数据库导入

修改网站配置文件,使用正确连接数据库参数

[root@cacti cacti]# viminclude/config.php

$database_type ="mysql";

$database_default ="cacti";

$database_hostname ="localhost";

$database_username ="cacti";

$database_password ="cacti123";

$database_port ="3306";

使用浏览器打开http://IP/cacti

然后会开始安装,只需要点next就可以了,最后完成。

首次登录账号密码均为adminadmin,登录后会要求修改

安装完成。


第二篇应用


第一 cacti的使用

1.界面介绍

登陆Cacti后,可以看到左上角是两个选项卡,“console”和“graphs”。console表示控制台,在此进行所有的配置等操作;而graphs则是用来查看所有服务器的性能图像的界面。将来安装的插件将会显示在graph的右边。


2.console菜单

Create

New Graphs——创建新图像的快捷方式;

Management

Graph Management——图像管理。可以在此删除、复制图像,Cacti会自动创建图像。不过如果我们有特殊的需要,比如将几张图上的数据合并在一张图像上的话也可以在此手工新建图像;

Graph Trees——图像树。在graphs界面里,图像或devices是树状结构显示的,可以在此设置树的结构;

Data Sources——管理rrd文件。一般无需修改,Cacti会自己创建rrd文件,在自定义时需要添加。

Devices——设备管理。这是我们最经常需要修改的地方,可以在此创建新的设备或修改其名称等信息。

Collection Methods

Data Queries Data InputMethods是采集数据的方式,一般我们无需对这两项进行修改;

Templates 模板

Graph Templates HostTemplatesData Templates 分别是图像模板、主机类型模板和数据模板。这些模板可以导出、导入也可以自己编写,一般无需修改。后面会讲到如何自定义模板。

Import/Export

Import Templates ExportTemplates,对上述模板的导入、导出。我们可以在Cacti的官方网站上找到这些模板,不过需要注意模板对于的Cacti的版本。

Configuration

Settings ——Cacti的主要配置菜单;

可以在此重新设置对应的程序的路径、版本等信息。也可以设置图像的输出方式(允许ftp)、显示效果、登陆方式(允许使用LDAP)等。

Utilities

System Utilities ——显示Cacti系统的一些cachelog信息,如果log文件太大建议直接到后台查看;

User Management ——用户管理。可以在此添加、删除用户,并对每个用户设置详细的权限;

Logout User ——注销用户。


3.创建监测点

假设被监测的服务器名叫“Test Host”,添加IP,SNMPcommunitypublicsnmp设置里的密码)。

1进入Cacticonsole面板->点击“Devices”进入设备面板->点击“Add”添加新设备->

填写要监测服务器的各种信息:

Description : 自定义

Hostname :被监控主机的IP

Host Template:选择一个合适的主机模板,一般选择Local LinuxMachine”或“ucd/net SNMP Host

Downed DeviceDetection:根据情况自选,一般不修改

其他的根据需求修改,一般不用修改。

2)点击“Create”保存信息如果SNMP连接没有问题,左上角会出现该服务器的信息,否则会出现“SNMP error”的红色字样

3)为该设备创建需监测的内容,在页面底部修改(或点击上部的“Create Graphs for this Host ”)。

监测的内容分两种,“GraphTemplates”和“Data Query,区别在于“Data Query”能根据SNMP信息列出监测项目的信息。例如Data Query里的“Interface Statistics”可以看到该主机所有网卡的信息,这样我们可以选择需要监测的网卡。点击右侧的正方形选择框勾选上要监测的项目

点击“Add Graph Template:”复选框,选择要监测的内容,点击”add”已选择的内容,可点击最后的红叉进行删除。

Cacti会自动创建该监测点的rrd文件(在rra目录中)、“DataSource”和“graph”条目。

最后save,似乎也可以不用(修改(1)中的内容就以一定要save)。创建监测点完毕。


4.查看监测点

点击“Graph Management”可以看到刚才创建的监测点对应的图像,注意由于Cacti默认每5分钟到监测服务器上取一次数据,所以刚创建的监测点会出现图像不能显示的现象,需要等几分钟查看才会正常显示。

为了方便查看,可以将刚才新创建的设备或图像加入到“图像树”上:

点击“Graph Tree”进入“图像树”面板->点击分支名称

或“Add”新的分支->点击“Add”,添加新的“TreeItems(此处有几个选项)->然后create,然后“Tree Itemtype->add中选择“Host”,“Tree Item Value”的“host”中选择刚才新添加的主机“Test Host”->点击“Create”。

直接在ViewTree中添加一个host节点进行监控无疑是一个简单的方法,但随监控图的增多,将所有的图像放到一个host节点上,当查看图像时图像的显示速度会变慢,而且监控图的条理也不清除,所以通常可以根据监控图监控的功能和监控服务的类型等进行分类,整理出一棵有条理的图像树。可以按下面步骤添加节点。

首先添加一个root节点,“Tree Itemtype”中选择“Header”,“Title”中填写一个合适的描述性信息,如本例填写“Host Monitor”,Host Monitor节点的图像主要是和主机性能相关的一些图像,如CPU、内存、磁盘空间等;

点击刚创建的root节点(HostMonitor)后面的Add链接来添加一个Graph

在“Tree Item Type”中选择“Graph”,在“graph”中选择加入想要加入的监控图,重复此过程加入所有你想加入的监控图。

你还可以添加Tree Items,如MySQLMonitor,此节点用来监控与MySQL服务相关的信息,重复上面的过程直到一颗有条例的树创建完成。

这样,我们就可以在“graphs”界面中查看“TestHost”的所有监测图像了。


5.为已有host添加新的监控图

console控制台下点击“NewGraphs”,选择要添加监控图的主机。在Graph Templates中选择一个Graph模板,本例选择SNMP - Ceneric OID Template,点击create按钮。

填写以下信息,在“Title”文本框中填写Graph的名字,在“VerticalLable”文本框中填写描述信息或是所绘图片使用的单位等,显示在所绘图片的左侧,在“name”文本框中填写此数据源的名字,在“LegendColor”中选择画图使用的颜色,在“Legend Text”填写图例的名字,在“OID”文本框中填写要监控的主机的OID信息,点击“create”按钮完成Graph的创建。



6.合并多个数据源到一张图上

console控制台下点击“GraphManagement”,然后点击Add链接。

在“Select GraphTemplate”下拉框中选择None,在“Host”下拉框中选择None,然后点击create按钮。

在“Title”文本框中输入Graph的名字。

点击Add链接,添加GraphItems

添加多个数据源,将所选的多个数据源画到一张监控图上。

完成后将所画的监控图放到GraphTrees中。



第二 自定义脚本和模板

1、编写脚本,采集数据

数据格式:

key1:value1 key2:value2 key3:value3 ………

可以将不同图上的数据都一起读入,在下一步区分开就行了。只要保证这个格式输出即可,应该没得顺序要求,反正我的两三百个数据很乱。然后应该不能加入换行符换行,反正我没搞定。

2、建立数据源

方法: Console – > Collection Methods ->Data Input Methods -> Add


第一个: Name 自定义

第二个: Input Type == Scripts/Command

第三个: Input String == /bin/sh<path_cacti>/scripts/test.sh

然后点击create


这个地方注意了,test.sh就是你自己的脚本,前面的照写(可以使用内部变量 <path_php_binary> <path_cacti>等能在config.phpsetting->path 里看到的路径。)果你需要添加命令行参数的话,可以在脚本名字后面添加。应该写绝对路径也可以行。

例如

/bin/sh <path_cacti>/scripts/test.sh<hostname> <ip_add>


如果没有添加命令行参数的话,对应的InputFields保持无内容就可以了,如果有添加命令行参数的话,在“Input Fields”模块里,需要修改一下

第一个: Field[Input] 选择对应的那个

第二个: FriendlyName 自定义

第三个: RegularExpression Match 空着就可以

第四个: AllowEmpty Input 根据实际选择

第五个: SpecialType Code 自选


无论有没有命令行参数都要修改的“OutputFields

第一个: Field[Output] 这个就是最关键的一个参数了,你shell脚本对应的key1是什么名字,这里就须写什么名字,不需要冒号。

第二个: FriendlyName 自定义

第三个: Update RRDFile 勾上

然后有几个参数,就一一重复添加进去,名字记得跟shell脚本输出对应起来

3、添加数据模板

方法:“Console” == “Data Templates” == “Add”

第一个: Name 自定义

第二个 Name 基本也是随便取,但是格式是这样|host_description|- yourname

第三个: DataInput Method 这个就是选择你上一步数据输入方法中的名字

第四个:Associated RRA's 默认也可以,把每分钟加上去也可以

第五个: Step 默认也可以,但是第四个如果把每分钟加上去的话,这个值必须从300变成60

第六个: DataSource Active 把它勾上


下面就是DataSource Item

Data SourceItem第二次添加点击new,然后重复以下步骤,这样做,如果添加了十个Item,会将10Item的数据都写入一个数据文件,如果要一个Item一个数据文件,则要重复添加数据模板,很麻烦

第一个: Internal Data Source Name 这个名字也很重要,填key1的名字,就是第一步中提到的很关键的那个栏的名字

第二个: MinimumValue Maximum Value Data Source Type Heartbeat 这几个根据情况来,关于DataSource Type ,是rrdtool的内容,对图形呈现很关键,后面说明。


如何选择 DST 看下面的描述

ACOUNTER :必须是递增的,除非是计数器溢出(overflows)。在这种情况下,RRDtool 会自动修改收到的值。例如网络接口流量、收到的 packets 数量都属于这一类型。

BDERIVE:和 COUNTER 类似。但可以是递增,也可以递减,或者一会增加一会儿减少。

CABSOLUTE ABSOLUTE 比较特殊,它每次都假定前一个interval的值是0,再计算平均值。

DGAUGEGAGUE 和上面三种不同,它没有“平均”的概念,RRDtool 收到值之后字节存入 RRA

ECOMPUTE COMPUTE 比较特殊,它并不接受输入,它的定义是一个表达式,能够引用其他DS并自动计算出某个值。


第三个: Output Field 这个地方是选择的,就是选择第一步里key1对应的friendly name

这里也是所有参数对应一一添加上去


还有一栏就是Custom Data,这个不用做任何添加或修改

修改完成,保存


4、添加图像模板

4.1 Console->Templates->GraphTemplate->Add

Template Name 这个是模板名,当我们将模板应用于某个机器时使用这个

Title 图的标题

Unit Grid Value (--unit/--y-grid) Y轴的单位

Vertical Label 就是图左侧的说明

各个选项,根据情况自定义即可

4.2 Graph Template Items Data TemplateGraphTemplate进行绑定。

点击Graph Template Items右侧的Add.

1Data Source,选择我们之前创建的DataTemplate,因为可能有多个输出,因此它也可能有多个,我们一一创建即可。

当后面选择的GraphItem TypeCOMMENT, VRULE, and HRULE,则不用选择Data Source

2Color是用于显示的颜色,GraphItem TypeAREA, STACK, LINE1, LINE2, and LINE3才能选择颜色

3Graph Item Type是显示的类型,比如Area就是显示成块,line的都是线形

A:官方解释:Types such as AREA, STACK, LINE1, LINE2, and LINE3 are used torepresent data on the graph, while COMMENT and GPRINT are used put on thelegend. The LEGEND type is specific to Cacti only and can be used if you wantto Cacti to automatically create a GPRINT-LAST/GPRINT-AVERAGE/GPRINT-MAXIMUMgraph item for you.

BYou must always put an AREA item before using STACK or your graphwill not render.

4Consolidation Function选项:

This tells RRDTool which consolidation function to use when representingthis data on the graph. You will typically use AVERAGE for most things on thegraph area, and LAST/MAXIMUM as well for GPRINT items.

5value值:

This field is only used with the HRULE/VRULE graph item types. Typeany valid integer to draw the line at for HRULE or the time of the day HH:MMfor VRULE.

6Text Format就是给这个输出一个名字.LEGEND类型不用。

7Insert Hard Return是换行,选择后该Item会有个<HR>标识,图上会在该Item后换行。

创建后,如果你还想为这个输出创建一个Legend,那就是再Add选择Graph Item Type->Legend即可。可以参考load average模板。

注意上面的Graph Item InputsItemData source关联,自动创建的,一般不用处理。如果选择了legend,可以参考load averge模板。

到此,GraphTemplates已经完成,接下来就是应用了。


5、应用GraphTemplates

5.1 添加devices Console->Management->Devices–>add…..

填好前面的选项,最后AssociatedGraph Templates,选择要添加的模板àadd

然后点击最上面的createGraphs for this Host,选中要添加图像的模板,create,马上就可以在graph里看到你的图了

5.2添加data source Console-> Data Source-> add 不过一般都已经自动添加,不用修改。如果有图没出,可在data source里打开bug,复制rrdtool命令去手动建立

5.3添加graph trees console-Graph Trees -> add 建立后tree Items->add

详细步骤参考前文

5.4graph management ,将data source一一添加。详细步骤先参考前文。



第三 常用插件的安装

1、开启Plugin

Configuration下是否有pluginmanagement

如果没有,打开“Console-----UserManagement---admin”——最后“Plugin Management”(勾选此选项),单保存”save

2、上cacti官网上下载相关插件:

3、下载后解压后放到插件目录

例子:

[root@cacti ~]#tar zxvf monitor-v1.3-1.tgz

[root@cacti ~]# mvmonitor /var/www/html/plugins/

[root@cacti ~]# cd/var/www/html/plugins/monitor/

[root@cactimonitor]# mysql –u cacti –pcacti123 cacti<monitor.sql

打开Cactiweb页面“PluginManagement”,激活插件(顺序点击“action”下的图标)。

常用的插件:monitor以图形方式显示设备状态

Setting(用于邮件报警)

Thold(用于设备异常预警、阀值报警)

第四 Cacti轮询时间(关于spine,由于这里是摘抄的,我安装好我的cacti后,在Configuration->settings->poller,poller type就有spine,选择后,将poller interval和cron interval修改,crontab里修改,就可以了。以下内容作为参考)

Cacti默认的轮询时间为5分钟,可通过安装spine将时间变成一分钟

下载:http://cacti.net/spine_download.php

1.安装spine

[root@cacti ~]# tar zxvfcacti-spine-0.8.7i.tar.gz

[root@cacti ~]# cd cacti-spine-0.8.7i

[root@cacticacti-spine-0.8.7i]# ./configure --prefix=/usr/local/cacti-spine--with-snmp=/usr/local/net-snmp/

[root@cacticacti-spine-0.8.7i]# make && make install

[root@cacticacti-spine-0.8.7i]# cd /usr/local/cacti-spine/etc/

[root@cacti etc]# cpspine.conf.dist spine.conf

[root@cacti etc]# vim spine.conf

DB_Host localhost

DB_Database cacti

DB_User cacti

DB_Pass cacti123

DB_Port 3306

DB_PreG 0

这里修改对应的mysql用户名和密码,以及连接参数

打开“console”----“settings”----“Paths”中填写spine的路径,然后“save”


2.选择轮询模式

打开“console”----“settings”----“Poller”---“save”


添加“每分钟”流量视图

打开“console”---“Data Templates”——“Interface - Traffic”


其他模板做相应修改。

最后修改crontab中的

* * * * * env/usr/bin/php /var/www/html/cacti/poller.php>/dev/null 2>&1


但是由于我做的图里有需要五分钟轮询一次的,如果修改为1分钟,会受到影响,具体看自己的要求了。


个人觉得,要用好cacti,还是要先学学rrdtool的基础知识,便于理解,在排错等问题上也很有帮助,甚至还可以自己手动添加过去的数据。了解它的语法知识,create,update,graph,last,fetch等;还要了解一些专用名词。对后期设置cacti,建图,错误分析等很有帮助。

rrdtool学习:http://blog.chinaunix.net/uid/20054105/sid-50476-list-3.html