我已经创建了bash,它采用jstat度量我的jvm实例!
以下是输出示例:
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但是,当Sensu客户机运行此脚本时,它会返回。
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”这样的输出消失了!
发布于 2014-02-12 04:38:38
是的,您是对的,感觉单元以感觉用户的身份运行所有脚本。要使用jstat,您必须向sudoers添加感觉。
只需添加文件/etc/sudoers.d/sensu即可
示例:
缺省值:sensu !requiretty 默认值:sensu secure_path = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin sensu ALL = NOPASSWD: /etc/sensu/plugins/jsat-emeics.rb
发布于 2013-03-15 16:55:47
我不是Java或Sensu用户,但我可以猜到会发生什么。
最有可能的情况是,感觉客户机以不同于手动测试时使用的用户身份运行您的脚本,它没有权限将“附加”(无论什么意思)“附加”到您的jvm实例。
要验证这一点,您可以将"whoami“的调用添加到您的脚本中,从感觉客户机再次运行它,查看它在哪个用户下运行您的脚本,如果它是不同的,请尝试以该用户的身份运行您的脚本。
https://stackoverflow.com/questions/15401937
复制相似问题