
Ich führe das check_mysql
Plugin mit NRPE auf einem Remote-DB-Server aus und kann zwar zufriedenstellende Daten darüber erhalten, ob der ServerVerfahrenwie gewünscht funktioniert, sehe ich, dass das Plugin viel mehr Informationen ausgibt:
user@server:/etc/nagios# /usr/lib/nagios/plugins/check_mysql -H localhost -P 3306 -u nagios -psnip
Uptime: 112398 Threads: 5 Questions: 10921804 Slow queries: 0 Opens: 4408 Flush tables: 1 Open tables: 416 Queries per second avg: 97.170|Connections=137481c;;; Open_files=0;;; Open_tables=416;;; Qcache_free_memory=1031832;;; Qcache_hits=0c;;; Qcache_inserts=0c;;; Qcache_lowmem_prunes=0c;;; Qcache_not_cached=9427651c;;; Qcache_queries_in_cache=0;;; Queries=10921805c;;; Questions=10917613c;;; Table_locks_waited=0c;;; Threads_connected=5;;; Threads_running=1;;; Uptime=112398c;;;
Das bringt mich auf die Idee, dass ich Dinge wie die Anzahl der Threads oder langsame Abfragen beeinflussen kann, um Warnzustände zu generieren.
Die Frage ist, wie mache ich das? Die Plugins -w
und -c
Parameter befassen sich nur mit der Master-Slave-Uhrabweichung, aber mit keinem der anderen Parameter.
Muss ich ein benutzerdefiniertes Shell-Skript erstellen, um die Ausgabe zu analysieren und dann seine eigene Ausgabe zurückzugeben? Oder gibt es in Nagios Core eine integrierte Funktion, um diese Art von Manipulation durchzuführen?
Antwort1
Am Ende entschied ich, dass es am besten wäre, ein benutzerdefiniertes Skript zu erstellen, das den Plugin-Spezifikationen entspricht, und ein paar String-Veränderungen mit vorzunehmen awk
. Zur späteren Bezugnahme (Vorbehalt Implementierer):
#! /bin/bash
parse_mysql_output(){
METRIC=`/usr/lib/nagios/plugins/check_mysql -H localhost -P 3306 -u nagios -p[REDACTED] | grep -shoP "${METRIC_NAME}: ([\d.]+)" | awk -F ': ' '{print $2}'`
if (($(echo "$METRIC <= $WARNING_THRESHOLD" | bc -l))); then
echo "OK - $METRIC_NAME: $METRIC"
exit 0
fi
if (($(echo "$METRIC > $WARNING_THRESHOLD" | bc -l))); then
if (($(echo "$METRIC <= $CRITICAL_THRESHOLD" | bc -l))); then
echo "WARNING - $METRIC_NAME: $METRIC"
exit 1
fi
fi
if (($(echo "$METRIC >= $CRITICAL_THRESHOLD" | bc -l))); then
echo "CRITICAL - $METRIC_NAME: $METRIC"
exit 2
fi
echo "INDETERMINATE STATE - $METRIC_NAME: $METRIC"
exit 3
}
if [[ -z "$1" || -z "$2" || -z "$3" ]]
then
echo "Missing parameters! Syntax: ./`basename $0` metric warning_threshold critical_threshold"
exit 3
else
METRIC_NAME=$1
WARNING_THRESHOLD=$2
CRITICAL_THRESHOLD=$3
fi
parse_mysql_output
Im beabsichtigten Anwendungsfall rufen Sie dies über einen benutzerdefinierten Befehl in der NRPE-Konfiguration auf und übergeben die Metriken und Schwellenwerte. Vor dem Aufruf müssen Sie die Verbindung entsprechend den Anforderungen Ihrer Installation ändern.
Feedback und Kommentare sind willkommen.