这里继上次写的搭建环境而来http://allanfan.blog.51cto.com/520839/377545,由于我们需要根据自己的需求进行个性化定制,这里环境是基于CENTOS 4.7版本

先到CentOS里面装samba服务,用命令联网在线安装:yum –y install samba

image

装完以后配置samba服务相关设定,(这里不再说明,请自行配置好)让winxp系统可以访问得到CentOS共享目录,为什么要这样做?我在虚拟环境,CentOS跑的是命令行环境,那么当增加Cacti相关插件的时候,需要复制相关文件到CentOS相关Cacti安装目录下,这时我就通过winxp把相关文件复制到CentOS共享目录下面喽,所以就要搭建Samba服务.

image 

大家可以访问Cacti论坛,可以学到更多东东,不过我觉得CACTI建图的基本原理是先创建数据模板,然后创建图形模板,而图形模板是调用数据模板而来,意思就是将数据转换到图形上来输出,这样便于我们直观查看到,然后我们可以把相应的图形模板加到主机模板里面去,这样我们就可以在创建设备监控的时候就可以选择相应的主机模板来创建图形喽,说了这么多不知道你明白了没有?这是CATCI精髓之所在,你一定要搞明白,其时我们导入的这些模板可以在数据模板里面找得到,你可以深入研究它究竟是怎样写公式来得到相关数据滴.

Cacti脚本及模板论坛:http://forums.cacti.net/forum-12.html

一个完整的cacti脚本及模板列表:http://forums.cacti.net/about15067.html

进阶应用之一:增加advance ping模板

我觉得监控端口是不是down掉了还是有必要的,但是ping会产生arp包,arp包会消耗设备cpu哦

插入Advance Ping 脚本及模板

下载地址:http://forums.cacti.net/about10049.html

1)功能:此模板用来监控一个TCP/UDP端口、ICMP的延时情况和丢包情况。

2)下载ss_fping.php脚本并放到/var/www/html/scripts/目录下,下载cacti_graph_template_ping_advanced_ping_v1_3.xml模板,用cacti的模板导入页将此模板导入,(通过XP系统把文件拷贝到CentOS里面来哈)这里我把ss_fping.php按照说明复制的时候发现此目录下已存在此文件,所以我没有覆盖.

image

接下来导入模板,我们通过XP系统进入到CentOS里的Cacti WEB控制台来做操作,方便快捷,如下图操作导入此模板先.

image

在左边点device---add device的时候就可以看到advanced ping图形模板了

image

这里我们假设一次发20个探测包ping主机的80端口,确认对外提供的internet服务是否正常

image

完成以后的效果图如下:

image

应用之二:多核CPU绘制到一张图

到这里下载相应的模板,这里分别有2,4,8,16核的CPU模板,http://forums.cacti.net/about29832-0-asc-135.html,导入模板跟上面一样哈,完了之后在DEVICE-ADD DEVICE添加此图形模板,如下图所示,我这里用双核的CPU来测试(在虚拟机XP下面启用双CPU有点跳侦的感觉,但可以使用,但win7下面启双CPU根本启动不起来)

image

添加完图形模板以后,现在来为主机添加此图形模板的监控图,点右上角的create graph for this host,然后按如下图操作

image

接着弹出以下图面,这里什么都不要填写,直接点创建即可

image

关键点到了,点graph management找到你要最监控主机的此选项点击进去

image

在数据源里选择对应CPU数据模板就OK

image

完成以后可以看到双核CPU的每一个CPU的使用率了.

image

这里我说明了两个例子,论坛上有很多模板自己可以去找,如 juniper netscreen/cisco router and switch/sql server等相关监控模板

我找到一个好模板附上来共享给大家Cacti_SNMP_INFORMANT_STD_W32_Metrics_V9.zip的包,里面包含的文件就是脚本文件,其中snmp_informant_.xml开头的文件是需要放到cacti服务端的snmp_queries目录下,我这里目录地址是/var/www/html/resource/snmp_queries/。

image

cacti_data_query_snmp开头的文件全都通过cacti页面导入,然后关联对应的主机模板如下图:

image

OK,下面放几张监控美图出来(这些模板里面有些出不来图,不知什么原因需要研究)

image

 image

image  
这里需要说明的是,除了windows自带安装的snmp之外,还需要安装SNMP Informant-STD 1.6,要不然出不来图,安装完成以后不需要做什么设置. 
软件下载地址:http://www.wtcs.org/informant/download.htm

差点忘记了我在导入模板的时候出错啦~!把经验分享给大家

image

用百度一搜原来是将新版本到处的cacti模板导入到旧版本的时候,就会报Error: XML: Hash version does not exist.,解决的办法是修改xml里面的相关hash值就可以了。

以下是cacti xml hash的一些说明:

Take the following example: <hash_040018258d1c9487a6c58dd804f4a012007664> 
The first 2 digits are the type of the template. 
The next 4 digits are the Cacti version it was created on. 
The next 32 digits are a random number.

List of Versions

  1. "0.8.4"  =&gt; "0000",  
  2. "0.8.5"  =&gt; "0001",  
  3. "0.8.5a" =&gt; "0002",  
  4. "0.8.6"  =&gt; "0003",  
  5. "0.8.6a" =&gt; "0004",  
  6. "0.8.6b" =&gt; "0005",  
  7. "0.8.6c" =&gt; "0006",  
  8. "0.8.6d" =&gt; "0007",  
  9. "0.8.6e" =&gt; "0008",  
  10. "0.8.6f" =&gt; "0009",  
  11. "0.8.6g" =&gt; "0010",  
  12. "0.8.6h" =&gt; "0011",  
  13. "0.8.6i" =&gt; "0012",  
  14. "0.8.6j" =&gt; "0013",  
  15. "0.8.7"  =&gt; "0014",  
  16. "0.8.7a" =&gt; "0015",  
  17. "0.8.7b" =&gt; "0016",  
  18. "0.8.7c" =&gt; "0017",  
  19. "0.8.7d" =&gt; "0018"
  20. "0.8.7e" =&gt; "0019"

For the example above, this template was exported with Cacti 0.8.7d.

所以需要导入新版cacti模板的时候,只需要修改hash里面的version相关字段即可。

参考:http://docs.cacti.net/howto:determine_cacti_template_version

知道原因,当然要解决问题,先确认Cacti当前所用的版本,我用的是0.8.7C,那么对应是0017

image

下载open xml Editor 1.6软件下载地址:http://philo.de/xmledit/

安装完成以后,打开XML文件以后发现当前版本应该是0.8.7.e,按当前自己所有的版本的hash值全部查找替换然后保存即可.这样模板就可以成功的导入了.

image

接下来我再教大家怎么手动建立自己的模板,先要介绍一个软件GetIf

GetIf 
===== 
GetIf是一个运行于WINDOWS平台的SNMP工具。功能非常强大,可以查询WINDOWS很多设备的MIB码和其他网络设备,如思科等的MIB码。有了这些MIB码就可以方便的对设备进行监测了。

GetIf可以在:http://www.wtcs.org/snmp4tpc/getif.htm 下载。

安装GetIf的方法如下: 
1、下载GETIF2.3 
http://www.wtcs.org/snmp4tpc/FILES/Tools/SNMP/getif/getif-2.3.1.zip

2、下载MIB库 
http://www.wtcs.org/snmp4tpc/FILES/Tools/SNMP/getif/GETIF-MIBS.ZIP

3、解压GETIF2.3后进行安装,按照默认设置安装即可。

4、删除GETIF2.3安装目录中MIBs子目录里的.index文件。

5、解压GETIF-MIBS.ZIP到上步中.index文件所在的目录。

6、运行GetIf2.3

输入主机的IP地址点开始就可以看得到主机相关的信息了

image

现在正式开始建立数据模板"data templates----Add”如下图方法填写相关数据,|host_description|在这里相当于会自填写你要监控的主机名称.

image

通过Getif查看到我们想要监控项目的OID值,这里我们找网络接口收到总的字节数,可以在下面找到对应的OID值复制到如下图所示位置处.

image

我们到Cacti主机通过SNMPWALK命令查看返回数据也没有问题,看到了这里返回的数据类型为Counter32,下面有用

image

如果返回值是Counter这里就要选数据源类型为counter

image

添加图形模板,Graph templates----Add

image

接着会弹出以下画面点Add

image

记住这里的Data source要选刚才我们创建的数据模板,按如下图设定即可

image

接着再多Add一项,如下图设定

image

完成后如下图所示

image

在DEVICE里在相应的主机下面添加图形模板如下图所示

image

添加完成以后点"Create this host for graph”----选中此项点CREATE即可

image

出来的效果图

image

最后谈谈Cacti数据采集方式,总结如下表

方式        非SNMP        数据     重点     难易度
snmp get         不支持 单个      OID和类型         易
data queries        不支持 多个  编写XML         难
脚本        支持 多个        编写脚本         难

Cacti有三种数据采集方式,snmp get / data queries /script,从以上表格我们可以看出snmp get方式最简单也是最容易,但灵活性有限,比如说我们主机有多个CPU,而用snmpget方式只能监控单个CPU数据,想要输出多个CPU的数据到一张图,我们只能用data queries或脚本方式来实现,当某些设备不支持SNMP我就可能通过脚本的方式,把数据收集计算以后返回给Cacti然后以图形的方式显示出来,这也显示出了Cacti强大的扩展性和灵活性.