Script um die Aggregation einer whisper Datenbank zu überprüfen und bei Bedarf zu korrigieren.
Hilfe
*********************************
*** Check Whisper Aggregation ***
*********************************
Usage: check_whisper_aggregation.sh (--resize)
OPTIONAL:
--resize do whisper-resize for every found match
(default: no resize)
Nagios compatible exit_levels: 0=OK;1=WARN;2=CRIT;3=UNKNOWN
This script generates perfdata by default:
hosts_total metrics_total avg_number_metrics max_number_metrics metrics_error
**************************************************************
Thank you for using this script!
For more infos on our services please visit www.admin-box.de
Changelog
v1.0 2017-10-10 initial release
Installation/Voraussetzungen
Abhängigkeiten
whisper-info whisper-resize bc grep find sudo -u _graphite /usr/bin/whisper-resize
Dokumentation
Arbeitsweise
Das Script sucht alle *.wsp Dateien unter /var/lib/graphite/whisper/icinga2/ und führt
whisper-info aus, grep xFilesFactor.
Auf alle Dateien die nicht dem Sollwert entsprechen, wird (wenn der Schalter --resize gesetzt ist)
whisper-resize ausgeführt.
Wenn der Schalter nicht gesetzt ist, wird nur eine Liste der fehlerhaften Dateien ausgegeben.
Parameter und Aggregation können im Quellcode angepasst werden: --xFilesFactor=0.0 --aggregationMethod=max 1m:7d 5m:30d 15m:90d 30m:1y 1h:3y
Das Script prüft außer der Aggregation auch die Anzahl der Metriken pro Host. Schwellwert liegt standardmäßig bei 500 und
kann im Quellcode angepasst werden. Falls die Anzahl Metriken deutlich von der üblichen Anzahl abweicht, dann ist das ein
Indikator dafür dass perfdaten nicht richtig formatiert übergeben werden, und nach jedem Check-Aufruf eine neue Datenbank
mit Metriken erstellt wird. (Wer den Fehler schonmal hatte weiß was gemeint ist.)
interne Scriptfehler werden gelogt nach ERR_LOG="/tmp/${PROGNAME}.error.log" mit Timestamp
timestamp_log=$(date "+%F %T") Scriptausgabe zur weiteren Verarbeitung wird gelogt nach
EXIT_LOG="/tmp/${PROGNAME}.exit.log" (kann im Quellcode angepasst werden)
Kommandozeilenparameter
--resize
weist das Script an, auf jede fehlerhafte gefundene Datei whisper-resize auszuführen
avg_number_metrics = Durchschnittliche Anzahl Metriken pro Host
max_number_metrics = Maximale Anzahl gefundener Metriken für einen Host (absolutes MAX)
metrics_error = Anzahl gefundener fehlerhafter Metriken insgesamt
Beispielausgabe
CRITICAL - 699 metrics for services on host TEST_HOST found
| hosts_total=63 metrics_total=2867 avg_number_metrics=45.50 max_number_metrics=699 metrics_error=0
OK - no errors in whisper metrics found
| hosts_total=267 metrics_total=9715 avg_number_metrics=36.38 max_number_metrics=484 metrics_error=0
Exit Log
Das Script erstellt ein Exit Log file zur weiteren automatischen Verarbeitung der Ergebnisse:
# exit log for auto-processing of script output, persistent, each run will add a new line to log
# containing echo output and exit_level for nagios-like monitoring systems
# csv file: unix-timestamp;exit_level;message_string|perfdata
EXIT_LOG="/tmp/${PROGNAME}.exit.log"
Anwendungsbeispiele
Dieses Script verbraucht viele CPU Ressourcen, besonders wenn ein resize ausgeführt wird, und kann je nach Auslastung und Menge
der Metriken 5-30min laufen. Daher ist es ratsam, es nur 1x pro Tag, am besten Nachts per cronjob auszuführen und den
eigentlichen Check auf den Inhalt des Exit Logs auszuführen.
Download
#############################
### Copyright and License ###
#############################
#
# Copyright (C) 2017 Anton Daudrich
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free Software Foundation,
# either version 3 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with this program.
# If not, see http://www.gnu.org/licenses/.
#
#############################