- 帖子
- 7
- 积分
- 21
- 技术
- 0
- 捐助
- 0
- 注册时间
- 2017-12-26
|
多tomcat监控脚本问题 20元
一台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 "delims=""" %%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}'
复制代码
现在遇到了一些问题,由于本人基础太差,修改了几天的脚本,依旧无法解决
特求助各位大佬,望大家有空能帮忙看看
问题一:wmic process where (name="java.exe" and CommandLine like "%%%i%") get Handle |gawk -F "Handle" '{print $NF}' >E:\soft\t_id.txt
获取的值开头和行尾,最后,有空格和空行,导致bin\jstat -gc "%t_id%" 参数错误,无法执行
问题二:bin\jstat -gc "%t_id%" > E:\soft\"%tomcat_name%".gc 这里的两个变量只能取到最后一次的值,放到变量赋值内执行又报错
QQ图片20171227100226.png
问题三:E:\soft\"%tomcat_name%".gc 写入这个问题的参数,是两横排的数据,如何去改成两竖排的数据
从 227101308.png 变成 27101354.png
最后说明下后面的步骤
定时任务jstat.bat每分钟去获取一次状态
然后再zabbix-agent中配置监控
UserParameter=jvm.name,E:\soft/jvm_name.sh
UserParameter=jvm.status
,E:\soft/jvm_status.sh $1 $2
后面的还没测试验证过
各位大佬,跪求帮助,万分感谢!!!
联系Q:276834758
20红包奉上 |
|