xuanhao 发表于 2017-6-29 22:48:00

Windows zabbix监控远程进程实现机制

  最近负责zabbix监控部署方面的工作,需要完成本地服务端监控远程虚拟机的运行状态(CPU、打开的进程等),与大家分享下我的实现方法。
  (1) 首先,需要实现记录zabbix客户端的进程的批处理:zabbix_task.bat;
  zabbix_task.bat内容如下:
  @echo off
  chcp 65001
  tasklist /v |findstr "%username%" > c:/zabbix_temp.txt#进程路径根据个人习惯设置
  pause
  (2) 其次,实现实时监控远程的进程的批处理,使用VBS脚本调用脚本1实现定时刷新进程,脚本命名为:zabbix_monitor.vbs
  本地电脑远程创建远程电脑的计划任务程序(当每次登陆时自动运行脚本zabbix_monitor.vbs),进行实时监控电脑进程
  zabbix_monitor.vbs内容如下:
  Set ws = CreateObject("Wscript.shell")
  do
  ws.run left(Wscritp.Scritpfullname,instrrev(wscript.Scriptfullname,"\")-1)&"\zabbix_task.bat",vbhide
  Wscript.sleep 5000
  loop
  (3) 最后,实现过滤筛选zabbix服务端需要监控的进程脚本:zabbix_tasklist.bat
  @echo off
  setlocal enabledelayedexpansion
  chcp 65001
  echo {
  echo "data" :[
  for /f "tokens = 9*" %%i in (c:\zabbix_temp.txt)
  do(
  set "str=%%j"
  set "str=!str:\=\\!"
  if"!str!"=="!str:暂缺=!" if"!str!"=="!str:Wnd=!" if"!str!"=="!str:N/A=!" if"!str!"=="!str:MCI=!" if"!str!"=="!str:dwn=!" if"!str!"=="!str:taskeng=!"   if"!str!"=="!str:KSafeTray=!" if"!str!"=="!str:6EBF21D6BA1F=!" if"!str!"=="!str:jusched=!" if"!str!"=="!str:HwUvPUpgrade=!"                 if"!str!"=="!str:SPES=!" if"!str!"=="!str:Windows Update=!" if"!str!"=="!str:cmd.exe=!" if"!str!"=="!str:SysFader=!"
  echo {"{#TASK_NAME}":"!str!"},
  )
  echo {"{#TASK_NAME}":"NULL"}
  echo]
  echo
  }
  PS:本地电脑访问远程电脑创建计划任务程序,可以使用批处理schtask命令完成访问远程电脑 

yyfq521 发表于 2018-11-15 01:06:17

666666666666

a22124497 发表于 2018-12-17 09:02:49

谢谢楼主分享
页: [1]
查看完整版本: Windows zabbix监控远程进程实现机制