q987654 发表于 2019-1-11 07:02:41

Cacti自定义OID监控windows指定进程内存

  因为公司要对在线服务器的关键进程进行监控,用于分析应用是否有内存溢出和其他情况出现。
  应用平台有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  将以下内容复制到新建文件中

counter=LogicalDisk\Free Megabytes\_Total

type=string counter=this is a test

type=exec
counter=cscript /nologo
c:\test.vbs  

  完成保存,以后重启snmp服务就可以在counters.ini文件中实现自定义OID了。
  我这里使用批处理360se.bat获取一个测试进程,脚本如下:

[*]  @echo off
[*]  Rem pro是定义要检查的内存进程名,必须带exe
[*]  set pro1=360se.exe
[*]  for /f "tokens=5,6" %%a in ('tasklist /FI "MEMUSAGE ge 0" /FI "IMAGENAME eq %pro1%"^|findstr " K"') do (
[*]  set tlista=%%a
[*]  set tlistb=%%b
[*]  )
[*]  Rem echo 获取到进程%pro1%的占用: %tlista%%tlistb%
[*]  Rem echo %tlista%
[*]  

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

[*]  for /f "tokens=1,2 delims=," %%a in ("%tlista%") do (
[*]  set num1=%%a
[*]  set num2=%%b
[*]  )
[*]  echo %num1%%num2%
[*]  Rem pause
  然后到 counters.in文件中添加如下一行,其中exec表示执行一个程序。
type=exec counter=c:\360se.bat  完成以后到cacti服务端(192.168.10.10)执行如下命令
  


[*]  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。



页: [1]
查看完整版本: Cacti自定义OID监控windows指定进程内存