Ho creato bash scirpt che accetta le metriche jstat delle mie istanze jvm!Impossibile prendere metriche jstat utilizzando bash come plug-in Sensu
Ecco l'esempio di uscita:
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
Ma quando il Sensu-client esegue lo script che restituisce
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
Ecco l'esempio di check_cron.json
{
"checks": {
"jstat_metrics": {
"type": "metric",
"handlers": ["graphite"],
"command": "/etc/sensu/plugins/jstat-metrics.sh",
"interval": 5,
"subscribers": [ "webservers" ]
}
}
}
E parte del mio script di 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"
Ho scoperto che il problema è con jstat e ho provato a scrivere il percorso completo di jstat come /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/jstat -gc $pid|tail -n 1
ma non è stato d'aiuto!
A proposito, se commento questa riga, l'output come "Impossibile collegare a 8584" scompare!
Avevi ragione la sceneggiatura era in esecuzione sotto utente sensu (è stata una sorpresa per me) !!! Quindi ho dovuto usare jstatd !!! è un demone che può consentire ad altri utenti di prendere le metriche jstat da remoto! –
Ottimo! Sono contento di sapere che :) – spbnick
jstat è la migliore esecuzione come root come hai scoperto .... nessun altro utente probabilmente non sarà in grado di connettersi al processo. – np0x