के रूप में बैश का उपयोग करके जेस्टैट मेट्रिक्स नहीं ले सकता है मैंने बैश स्कर्ट बनाया है जो मेरे जेवीएम उदाहरणों के जेएसटी मेट्रिक्स लेता है!सेंस प्लगइन
यहाँ उत्पादन उदाहरण है:
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" ]
}
}
}
का उदाहरण है जब sensu-ग्राहक इस स्क्रिप्ट चलाता है और मेरी बैश स्क्रिप्ट का टुकड़ा
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 के साथ है और मैंने /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/jstat -gc $pid|tail -n 1
जैसे पूर्ण jstat पथ लिखने की कोशिश की लेकिन इससे मदद नहीं मिली!
वैसे तो अगर मैं इस पंक्ति पर टिप्पणी करूंगा तो "" आउटपुट 8584 से संलग्न नहीं हो सकता है "गायब हो जाता है!
आप सही थे स्क्रिप्ट उपयोगकर्ता के तहत चल रहा था (यह मेरे लिए आश्चर्यचकित था) !!! तो मुझे jstatd का उपयोग करना पड़ा !!! यह एक deamon है जो अन्य उपयोगकर्ता को jstat मीट्रिक दूरस्थ रूप से लेने के लिए दे सकते हैं! –
बढ़िया! यह सुनकर खुशी हुई :) – spbnick
jstat सबसे अच्छी तरह से रूट के रूप में चलाया जाता है जैसा कि आपको पता चला .... कोई अन्य उपयोगकर्ता संभवतः प्रक्रिया से कनेक्ट करने में असमर्थ होगा। – np0x