因为公司要对在线服务器的关键进程进行监控,用于分析应用是否有内存溢出和其他情况出现。

应用平台有windows和linux,windows相对来说需要使用工具,linux比较简单。

下面就说下windows的实现方式。

首先需要下载一个软件,snmptools。

下载链接:http://pan.baidu.com/share/link?shareid=218550&uk=1142185724


下载以后按安装包内index.html的说明,将里面的文件复制到windows的system32目录内。

然后运行复制过去的regagent.reg (32位的运行这个)或regagentWow6432.reg(64位的系统),将注册信息导入到系统。

在C盘新建一个文件

c:\counters.ini

将以下内容复制到新建文件中

[1.3.6.1.4.1.15.1]
counter=LogicalDisk\Free Megabytes\_Total
[1.3.6.1.4.1.15.2]
type=string counter=this is a test
[1.3.6.1.4.1.15.3]
type=exec
counter=cscript /nologo
c:\test.vbs


完成保存,以后重启snmp服务就可以在counters.ini文件中实现自定义OID了。

我这里使用批处理360se.bat获取一个测试进程,脚本如下:

  1. @echo off

  2. Rem pro是定义要检查的内存进程名,必须带exe

  3. set pro1=360se.exe

  4. for /f "tokens=5,6" %%a in ('tasklist /FI "MEMUSAGE ge 0" /FI "IMAGENAME eq %pro1%"^|findstr "[0-9] K"') do (

  5. set tlista=%%a

  6. set tlistb=%%b

  7. )

  8. Rem echo 获取到进程%pro1%的占用: %tlista%%tlistb%

  9. Rem echo %tlista%


  10. Rem 对获取的数据进行切割来切割,然后返回字符串,传递给cacti的时候单位是k,需要在cacti的CEDF中做次运算,也可以直接输出字节单位的数据。

  11. for /f "tokens=1,2 delims=," %%a in ("%tlista%") do (

  12. set num1=%%a

  13. set num2=%%b

  14. )

  15. echo %num1%%num2%

  16. Rem pause

然后到 counters.in文件中添加如下一行,其中exec表示执行一个程序。

[1.3.6.1.4.1.15.4] type=exec counter=c:\360se.bat

完成以后到cacti服务端(192.168.10.10)执行如下命令


  1. snmpwalk -v 2c public -c 192.168.10.10 .1.3.6.1.4.15.4

查看返回数据返回如下信息表示添加自定义OID成功

接下来是在CACTI上来进行创建数据模板,和图形模板了。

点击数据模板——>添加

点击添加,会出现自定义数据栏。

添加刚才自定义的OID

点击确定,数据模板就创建完成了。

接下来是自定义图形模板

点击图形模板——>添加

然后添加图形模板的对象

将刚才的数据源添加进去,并用GPRINT生成last,avg,max的数据。


最后到主机中添加图形模板,创建新图形,即可完成。

如果要显示成整数,修改Graph Templates下的Graph Template Items的GPRINT Type,改成Exact Number。