Script um die Aggregation einer whisper Datenbank zu überprüfen und bei Bedarf zu korrigieren.
Hilfe
Changelog
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
Exit Log
Das Script erstellt ein Exit Log file zur weiteren automatischen Verarbeitung der Ergebnisse:
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.