2013-03-14 9 views
5

के रूप में बैश का उपयोग करके जेस्टैट मेट्रिक्स नहीं ले सकता है मैंने बैश स्कर्ट बनाया है जो मेरे जेवीएम उदाहरणों के जेएसटी मेट्रिक्स लेता है!सेंस प्लगइन

यहाँ उत्पादन उदाहरण है:

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 से संलग्न नहीं हो सकता है "गायब हो जाता है!

उत्तर

3

हाँ आप सही सेंसु सेंसर उपयोगकर्ता के रूप में सभी स्क्रिप्ट चलाते हैं। Jstat का उपयोग करने के लिए आपको एक सूडोर्स को सेंसू जोड़ना होगा।

चूक:: sensu requiretty

चूक:

सिर्फ /etc/sudoers.d/sensu

उदाहरण फ़ाइल जोड़ने sensu secure_path = /usr/स्थानीय/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

सेंसू सभी = NOPASSWD:/आदि/सेंस/प्लगइन्स/जेएसएटी-मेट्रिक्स.आरबी

8

मैं जावा या सेंसू उपयोगकर्ता नहीं हूं, लेकिन मुझे लगता है कि क्या होता है।

अधिकतर, सेंस-क्लाइंट मैन्युअल रूप से परीक्षण करते समय उपयोगकर्ता द्वारा आपकी स्क्रिप्ट को अलग करता है, जिसमें आपके जेवीएम उदाहरणों के लिए "संलग्न" (जो भी इसका मतलब है) की अनुमति नहीं है।

यह सत्यापित करने के लिए आप अपनी स्क्रिप्ट पर "व्हामी" का आविष्कार जोड़ सकते हैं, इसे सेंस-क्लाइंट से फिर से चलाएं, देखें कि यह कौन सा उपयोगकर्ता आपकी स्क्रिप्ट चलाता है और यदि यह अलग है, तो उस उपयोगकर्ता के रूप में अपनी स्क्रिप्ट को चलाने का प्रयास करें ।

+0

आप सही थे स्क्रिप्ट उपयोगकर्ता के तहत चल रहा था (यह मेरे लिए आश्चर्यचकित था) !!! तो मुझे jstatd का उपयोग करना पड़ा !!! यह एक deamon है जो अन्य उपयोगकर्ता को jstat मीट्रिक दूरस्थ रूप से लेने के लिए दे सकते हैं! –

+0

बढ़िया! यह सुनकर खुशी हुई :) – spbnick

+0

jstat सबसे अच्छी तरह से रूट के रूप में चलाया जाता है जैसा कि आपको पता चला .... कोई अन्य उपयोगकर्ता संभवतः प्रक्रिया से कनेक्ट करने में असमर्थ होगा। – np0x

संबंधित मुद्दे