最近負責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命令完成訪問遠程電腦
