2009年1月21日星期三

利用snmptools实现cacti对远程性能计数器的自定义监控

Cacti可以把snmp协议提供的数据收集并展现出来,但是对于snmp没有提供的数据接口就无能为力了。从网上可以搜集到的解决方案是一些专业公司编写的复杂的工具和解决方案,下面介绍一种免费的、简单易行的解决方案――利用snmptools实现cacti对远程性能计数器的自定义监控

snmptools基本的实现思路很简单,性能计数器->SNMP->cacti。再细分一下,这个方案分两步,第一步是计数器到SNMP,第二步是SNMP到cacti。

第一步计数器到SNMP,snmptools提供了一个SNMP Service的扩展Agent Dll,与windows自带的SNMP Service集成。这个Agent Dll的主要功能就是通过一个配置文件自定义OID,以及对应的计数器映射。

  
[1.3.6.1.4.1.15.10.4]
counter=SQLServer:General Statistics\User Connections

以上是配置文件的样例,此Dll用的MIB根节点是1.3.6.1.4.15,可以在此节点下定义自己所需要的counter对应的OID。

一旦snmptools安装配置完毕,可通过cacti所在机器使用linux命令测试一下:

  snmpwalk -v 2c -c chrsnmp 192.168.0.208 .1.3.6.1.4.1.15.10.4
此命令会遍历此节点所有使用到的OID值。如果数值获取到了,说明第一步操作已成功。



首先在要监控的目标机器上安装snmptools(http://erwan.l.free.fr/snmptools),然后在Counter.ini文件里定义snmp OID对应计数器,实现从系统性能计数器到snmp的转换。
然后设置Cacti模版:

大体思路:
1. 定义数据采集模版,告诉cacti怎么采集和保存数据
2. 定义图形模版,告诉cacti如何把获取的数据展现出来
3. 定义主机模版,方便添加主机时设置新型的项目

1.1 设置Data Templates
Templates\Data Templates:[add]

[Create]

1.2 定义数据模版的采集对象



[save]

2.1 设置图形模版的信息
Templates\Graph Templates: [add]




Upper Limit (--upper-limit)
Use Per-Graph Value (Ignore this Value) => 0

2.2 设置展现的项目
[create]
Graph Template Items [edit: SQLServer UserConnections]
Graph Item [add]




[Create]
2.3增加项目(没有测试是否必须,参考cacti在线帮助设置的)



[add]


[create]

[save]

3.1 设置Host模版
Host Templates [edit: Windows 2000/XP Host]
Add Graph Template

下面是完成后的样子:



Management\Devices
选中之前已经创建好的设备,(因新内容是在设备创建后才有的,所以,要对原设备进行图形模版添加)
Associated Graph Templates

[add]
[save]
模版配置完成。

最后,与添加其他图形没有什么差别
Create Graphs for this Host

[Create]


将图形添加到图形树上:
Graph Trees

[create]


附:
snmptools下载地址:snmptools v2

参考链接:
Windows performance counters & VBS/WMI via SNMP


利用cacti和性能计数器实现自定义远程监控