我创建了bash scirpt,它需要我的jvm实例的jstat指标!无法使用bash作为Sensu插件使用jstat指标
下面是输出示例:
demo.server1.sms.jstat.eden 24.34 0
demo.server1.lcms.jstat.eden 54.92 0
demo.server1.lms.jstat.eden 89.49 0
demo.server1.tms.jstat.eden 86.05 0
但是当扇子,客户端运行该脚本返回
Could not attach to 8584
Could not attach to 8588
Could not attach to 17141
Could not attach to 8628
demo.server1.sms.jstat.eden 0
demo.server1.lcms.jstat.eden 0
demo.server1.lms.jstat.eden 0
demo.server1.tms.jstat.eden 0
这里是check_cron.json
{
"checks": {
"jstat_metrics": {
"type": "metric",
"handlers": ["graphite"],
"command": "/etc/sensu/plugins/jstat-metrics.sh",
"interval": 5,
"subscribers": [ "webservers" ]
}
}
}
的例子和我的bash脚本一块
jvm_list=("sms:$sms" "lcms:$lcms" "lms:$lms" "tms:$tms" "ums:$ums")
for jvm_instance in ${jvm_list[@]}; do
project=${jvm_instance%%:*}
pid=${jvm_instance#*:}
if [ "$pid" ]; then
metric=`jstat -gc $pid|tail -n 1`
output=$output$'\n'"demo.server1.$project.jstat.eden"$'\t'`echo $metric |awk '{ print $3}'`$'\t0'
fi
done
echo "$output"
我发现问题出在jstat上,我试图编写完整的jstat路径,如/usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/jstat -gc $pid|tail -n 1
,但它没有帮助!
顺便说一句,如果我会评论这一行输出像“无法附加到8584”消失!
你是对的脚本运行在sensu用户下(这对我来说是惊喜)!所以我不得不使用jstatd!这是一个可以让其他用户远程使用jstat指标的deamon! – 2013-03-19 06:46:17
太棒了!很高兴听到:) – spbnick 2013-03-19 09:32:19
jstat最好以根用户身份运行,因为您发现....任何其他用户可能无法连接到该进程。 – np0x 2014-01-14 01:31:07