snmptools基本的实现思路很简单,性能计数器->SNMP->cacti,第一步是计数器到SNMP,第二步是SNMP到cacti。
第一步计数器到SNMP,snmptools提供了一个SNMP Service的扩展Agent Dll,与windows自带的SNMP Service集成。这个Agent Dll的主要功能就是通过一个配置文件自定义OID,以及对应的计数器映射。
网上的文档基本上就说到这里了,没有具体说明如何安装snmptools,以至于我在64位系统上安装时走了一些弯路,现在总结一下经验。
标准的 32 bits 系统安装过程:
1. Copy snmptools.dll to system32
2. Register the snmp agent by using the reg file "regagent.reg"
3. Restart the snmp service
标准的 64 bits 系统安装过程:
1. Copy snmptools64.dll to windows folder, not system32
2. Register the snmp agent by using the reg file "regagent64.reg"
3. Restart the snmp service
安装完成后,拷贝counters.sample文件到C盘根目录,重命名为counters.ini,参考里面的格式修改为你需要监控的性能计数器中的字段,此Dll用的MIB根节点是1.3.6.1.4.15,可以在此节点下定义自己所需要的counter对应的OID。
例如我想监控Web和SQL的连接数:
[1.3.6.1.4.1.15.1]
counter=Web Service\Current Connections\_Total
[1.3.6.1.4.1.15.2]
counter=SQLServer:General Statistics\User Connections\_Total
一旦snmptools安装配置完毕,可通过cacti所在机器使用linux命令测试一下:
# snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.4.1.15
此命令会遍历此节点所有使用到的OID值。如果出现类似的数值则说明获取到了信息,第一步操作已成功。
SNMPv2-SMI::enterprises.15.1 = INTEGER: 32
SNMPv2-SMI::enterprises.15.2 = INTEGER: 244
我在64bit系统上操作时,发现获取到的信息总是为0,而32bit系统就没有问题,于是上网开始找类似的原因,在英文的海洋里游了半天,终于找到了解决方法,后来回头一看,发现官方的文档里其实就有类似的操作说明,只是我没耐心仔细看到而已。如果有人遇到类似问题,也一样可以使用这种 64 to 32 bits mode
1. Copy snmptools.dll to windows folder, not system32
2. Register the snmp agent by using the reg file "regagentwow6432.reg"
3. Restart the snmp service
如果你已经按照64bits的方法安装了,那么你需要先停掉SNMP服务,然后删除注册表中的项,再按照正确方法重新安装一次。
第二步是从SNMP到Cacti,有人说软件里提供了很好的模板,可惜我没搞明白,索性自己创建了。先创建Data Templates,再创建Graph Template,里面的内容我基本上是参考Host MIB - Processes这个模板来填写的,只是别忘了修改OID的值就好。
创建好以后,可以在相应的主机Associated Graph Templates中添加你自定义的模板,当然也可以在Host Templates中直接添加好,一劳永逸。
下面是我监控的SQL Server的用户连接数信息,呵呵呵。
参考文档: