1 votes

Assertion sur des informations étendues provenant du check_mysql de Nagios

J'utilise le check_mysql utilisant NRPE sur un serveur DB distant, et bien que je puisse obtenir des données satisfaisantes pour savoir si le serveur processus fonctionne comme prévu, je constate que le plugin produit beaucoup plus d'informations :

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;;;

Ce qui me fait penser que je peux faire des assertions sur des choses comme le nombre de threads ou de requêtes lentes pour générer des états d'alerte.

La question est : comment faire ? L'interface du plugin -w y -c ne traitent que de la dérive de l'horloge maître-esclave, mais aucun des autres paramètres.
Dois-je créer un Shell Shell personnalisé pour analyser la sortie puis retourner sa propre sortie ? Ou existe-t-il une fonction intégrée dans Nagios Core pour faire ce genre d'analyse ?

0voto

Zalán Meggyesi Points 111

Finalement, j'ai décidé que la meilleure solution était de créer un script personnalisé en suivant les spécifications du plugin, et de faire quelques manipulations de chaînes de caractères avec awk . Pour toute référence future ( l'auteur de l'avertissement ) :

#! /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

Dans le cas d'utilisation prévu, vous l'appelleriez via une commande personnalisée dans la configuration NRPE, et vous passeriez les métriques et les seuils. Avant d'appeler, vous devrez modifier la connexion en fonction de votre installation.

Les réactions et les commentaires sont les bienvenus.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X