check_whisper_aggregation.sh

Quellcode herunterladen

Name

Script name: check_whisper_aggregation
Author: Anton Daudrich
Company: ADMIN INTELLIGENCE GmbH
Version: v1.0
Release date: 2017-10-10

Beschreibung

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


Exit Codes

Nagios-kompatible exit codes: 0=OK;1=WARNING;2=CRITICAL;3=UNKNOWN
default exit code: 3=UNKNOWN

  • Falls fehlerhafte Metriken gefunden wurden, ist der exit code CRITICAL.
  • Falls die Anzahl der Metriken für einen Host den Grenzwert überschreitet, ist der exit code ebenfalls CRITICAL.
  • Wenn keine Fehler gefunden wurden, ist der exit code OK.

Perfdata

Dieses Script generiert standardmäßig Perfdaten:

  • hosts_total = Gesamtanzahl Hosts
  • metrics_total = Gesamtanzahl gespeicherte Metriken
  • 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/.
#
#############################
    
  
Quellcode herunterladen

Feedback

Haben Sie Fragen zu diesem Script oder Plugin?
Sie möchten Verbesserungsvorschläge einbringen oder haben Fehler gefunden?
Kontaktieren Sie uns gerne!

Kontaktformular