
Estoy ejecutando el check_mysql
complemento usando NRPE en un servidor de base de datos remoto y, aunque puedo obtener datos satisfactorios sobre si el servidorprocesoestá funcionando según sea necesario, veo que el complemento genera mucha más información:
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;;;
Lo que me hace pensar que puedo afirmar cosas como la cantidad de subprocesos o consultas lentas para generar estados de alerta.
La pregunta es, ¿cómo hago eso? Los complementos -w
y -c
parámetros solo se ocupan de la deriva del reloj maestro-esclavo, pero ninguno de los otros parámetros.
¿Necesito crear algún script de shell personalizado para analizar el resultado y luego devolver su propio resultado? ¿O hay una instalación integrada en Nagios Core para realizar ese tipo de manipulación?
Respuesta1
Al final, decidí que el mejor curso de acción sería crear un script personalizado siguiendo las especificaciones del complemento y modificar algunas cadenas con awk
. Para futura referencia (implementador de advertencias):
#! /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
En el caso de uso previsto, llamaría a esto mediante un comando personalizado en la configuración NRPE y pasaría las métricas y los umbrales. Antes de llamar, deberá cambiar la conexión según lo requiera su instalación.
Comentarios y opiniones son bienvenidos.