Seit Icinga 2 wird Graphite über ein eigenes Feature, also direkt, unterstützt. Muss man bei Icinga 1 noch den Umweg über zusätzliche Tools, wie z.B. Graphios gehen, fällt das nun weg. Standardmäßig erwartet Icinga 2 den Carbon Cache Daemon auf dem selben System (localhost) an Port 2003, also über das Plaintext Protokoll. Davon abweichende Einstellungen können in der Konfigurationsdatei „/etc/icinga2/features-available/graphite.conf“ vorgenommen werden.
Zunächst zieht der Carbon Cache Daemon die Datei „storage-schemas.conf“ zur Speicherung bzw. Aggregation der Metriken heran, die Icinga 2 Dokumentation gibt hier für den Graphite Carbon Cache Writer bereits ein allgemein gültiges Schema vor:
[icinga_internals] pattern = ^icinga\..*\.(max_check_attempts|reachable|current_attempt|execution_time|latency|state|state_type) retentions = 5m:7d [icinga_default] pattern = ^icinga\. retentions = 1m:2d,5m:10d,30m:90d,360m:4y
Damit die Verdichtung der Daten korrekt funktioniert, ist es wichtig das die angegebenen Werte mit den wirklichen Host- bzw. Servicecheckintervallen (check_interval) überstimmen. In diesem Beispiel müsste also das Intervall für Host- und Servicechecks auf eine Minute gesetzt sein. Gibt es Abweichungen davon, müssen hier entsprechend Einträge hinzugefügt bzw. abgeändert werden.
Ob die Einstellungen passen, lässt sich nach den ersten Prüfungen mit den mitgelieferten Whisper Scripts anhand der abgelegten Metriken relativ leicht überprüfen. Zuerst kontrollieren wir mit whisper-info ob die angegeben Werte korrekt übernommen wurden:
# whisper-info rta.wsp maxRetention: 126144000 xFilesFactor: 0.5 aggregationMethod: average fileSize: 191104 Archive 0 retention: 172800 secondsPerPoint: 60 points: 2880 size: 34560 offset: 64 Archive 1 retention: 864000 secondsPerPoint: 300 points: 2880 size: 34560 offset: 34624 Archive 2 retention: 7776000 secondsPerPoint: 1800 points: 4320 size: 51840 offset: 69184 Archive 3 retention: 126144000 secondsPerPoint: 21600 points: 5840 size: 70080 offset: 121024
Die angegebene retention im Archive 0 von 172800 Sekunden stimmt mit dem angegebenen Speicherintervall überein (2*24*60*60 für 2 Tage) und auch die secondsPerPoint wurden mit 60 (also 1m) richtig übernommen. Eine stichpunktartige Kontrolle der retention von Archive 2 für 90 Tage (also 90*24*60*60) zeigt, das auch hier die Werte stimmen.
So weit gut so gut, allerdings sollte man um wirklich sicher zu gehen auch noch einen Blick auf die gespeicherten Datenpunkte werfen. Das geschieht mit whisper-fetch, der Parameter pretty zeigt dabei menschenlesbare Zeitstempel an:
# whisper-fetch --pretty rta.wsp ... Tue Jul 21 09:05:00 2015 0.000083 Tue Jul 21 09:06:00 2015 0.000072 Tue Jul 21 09:07:00 2015 0.000137 Tue Jul 21 09:08:00 2015 0.000093 Tue Jul 21 09:09:00 2015 0.000102
Wenn die Einstellungen korrekt sind, sollten hier wie im gezeigten Beispiel nach Möglichkeit keine leeren Datenpunkte (Eintrag: None) vorkommen, andernfalls muss hier nochmal nachgefasst werden.
Für das aktuelle Icinga2 Schema sollte die Carbon storage-schema.conf angepasst werden:
pattern = ^icinga\.
in
pattern = ^icinga2\.
ändern.
Zusätzlich spielt die Reihenfolge in der conf-Datei eine Rolle: Steht das pattern
pattern = .*
vor der Icinga2 Konfiguration, wird nur dessen Retention verwendet.
Hi,
ich habe eurer tolles Video Tutorial zu Graphite und Grafana mit Icinga befolgt und damit erfolgreich den Server ans laufen gebracht. Dieser hat bisher auch super funktioniert.
Nun habe ich neue Checks für zB. Updateüberprüfungen in Icinga konfiguriert und bei diesen das Intervall auf 2h gestellt bzw bei ein paar anderen auf 1h. Leider bekomme ich nun in der Whisperdatei ne ganze Menge Einträge ohne Datapoints und alle 5min kommt ein neuer hinzu.
Wo muss ich die storage-schemas.conf denn anpassen? Auf meinem Icinga oder auf dem Graphite Server? Muss ich einen neuen Eintrag hinzufügen oder nur die retentions anpassen?
Sollte der [icinga_internals] Eintrag auch auf dem Icinga in der storage-schemas.conf vorhanden sein?
Ich habe auch schon versucht am Anfang einen neuen Eintrag für meinen Check hinzuzufügen
[icinga2_check_updates_apt_by_ssh]
pattern = ^icinga2\..*\.CHECK_UPDATES_APT_BY_SSH\.
retentions = 2h:5d,1d:4y,2d:10y
leider ohne Erfolg.
Viele Grüße
Ich habe das Problem gelöst indem ich die bereits vorhandenen .wsp Dateien der betroffenen Services gelöscht habe.
Hätte es wohl auch über whisper-resize hinbekommen die alten Daten zu behalten. Da aber kaum Daten vorhanden waren, war es mir in dem Fall egal