windows服務器,上面部署了多個tomcat
現在用zabbix監控各個tomcat運行狀態
首先獲取tomcat命名:jvm_name.bat
@echo off & setlocal EnableDelayedExpansion
set j=0
for /f "delims=""" %%i in (jvm_name.txt) do (
set /a j+=1
set con!j!=%%i
call set tomcat_name=%%con!j!%%
echo !tomcat_name!
)
然后jstat.bat去獲取各個行程的狀態
@echo off & setlocal EnableDelayedExpansion
set j=0
for /f "delims=""" %%i in (E:\soft\jvm_name.txt) do (
set /a j+=1
set con!j!=%%i
call set tomcat_name=%%con!j!%%
echo !tomcat_name!
)
wmic process where (name="java.exe" and CommandLine like "%%%i%") get Handle |gawk -F "Handle" '{print $NF}' >E:\soft\t_id.txt
set j=0
for /f "skip=1" %%a in (E:\soft\t_id.txt) do (
set /a b+=1
set con!b!=%%a
call set t_id=%%con!b!%%
echo !t_id!
)
set jstat_home=%java_home%
pushd %jstat_home%
bin\jstat -gc "%t_id%" > E:\soft\"%tomcat_name%".gc
最后監控客戶端取值:jvm_status.bat
@echo off
set t=$1
set jvm_key=$2
cat E:\soft\zabbix_agent\logs\$t.gc | grep -w "$jvm_key" | gawk '{print $2}'
定時任務jstat.bat每分鐘去獲取一次狀態
然后再zabbix-agent中配置監控
UserParameter=jvm.name,E:\soft/jvm_name.sh
UserParameter=jvm.status,E:\soft/jvm_status.sh $1 $2
現在遇到了一些問題,由于本人基礎太差,修改了幾天的腳本,依舊無法解決
特求助各位大佬,望大家有空能幫忙看看
問題一:bin\jstat -gc "%t_id%" > E:\soft\"%tomcat_name%".gc 這里的兩個變數只能取到最后一次的值,放到變數賦值內執行又報錯
問題二:E:\soft\"%tomcat_name%".gc 寫入這個問題的引數,是兩橫排的資料,如何去改成兩豎排的資料
問題三:wmic process where (name="java.exe" and CommandLine like "%%%i%") get Handle |gawk -F "Handle" '{print $NF}' >E:\soft\t_id.txt
獲取的值行尾和最后,有空格和空行
for /f "skip=1" %%a in (E:\soft\t_id.txt) 的話,跳過第一行空行,最后還是有一行空行(如果第1個問題能解決,這個倒是可以忽略,只要第1個問題,能把2個變數關聯起來賦值進去執行成功,最后的空行應該沒影響吧)
uj5u.com熱心網友回復:
百度搜相關關鍵字。轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/102710.html
