InGraph – The ultimate guide 1/5

This entry is part 1 of 5 in the series The ultimate guide to inGraph

In den nächsten Tagen geht die neue InGraph Release 1.0.1 an den Start. Trotz der Verspätung lassen wir uns es nicht nehmen mit unserer Ingraph Serie zu starten.

Erster Teil: Installation.

InGraph selbst ist eine flexible Charting Lösung für Icinga/Nagios. Entweder mit eigenem Frontend oder nahtloser Integration in Icinga-Web. Die extrahierten Daten werden in einer MySQL gespeichert. Gegenüber RRD erhalten wir den Vorteil längere Vorhaltezeiten zu wählen, Reports zu fahren oder Trendanalyse zu betreiben. Aber genug des Chacka Lackas – los gehts:

1. Vorbereitung

Damit die Installation sauber Läuft müssen einige Vorbereitungen sein, insbesondere Abhängigkeiten von Software Komponenten:

  • PHP Version >= 5.2
  • Apache2
  • Python 2.6 (Version 3 nicht unterstützt)
  • Python SQLAlchemy >= 0.6.0
  • Aktuelle Mysql 5er Version
  • Icinga oder Nagios

2. Installation

Als erstes laden wir eine aktuelle InGraph Version von netways.org auf den Server unserer Wahl

# sudo useradd -N -M -r ingraph
# aptitude install python-mysqldb
# wget -q https://www.netways.org/attachments/download/558/inGraph.1.0.tar.gz
# tar -xzf inGraph.1.0.tar.gz
# cd ingraph
# python setup.py install

Abhängigkeiten werden selbst aufgelöst und der inGraph ist einsatzfähgig.

3. Konfiguration

Nach der Installation liegen die Konfigurationsdateien in /etc/ingraph. Anpassen sollte man hier auf jeden Fall die ingraph-xmlrpc.conf und die
enthalten Passwörter welche aus Sicherheitsgründen geändert werden sollten.

4. MySQL Datenbank

Hier benötigen wir noch einen Benutzer und eine Datenbank:

CREATE DATABASE ingraph;
GRANT USAGE,SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,INDEX ON ingraph.* TO ingraph@localhost IDENTIFIED BY 'ingraph';

SQLAlchemy kümmert sich selbst um die Anlage des Datenbankschema weshalb diese Rechte benötigt werden.

5. Starten der Dienste

# /etc/init.d/ingraph start
# /etc/init.d/ingraph-collector start

Die Startskripte sind auch gleichzeitig die Konfiguration für die Systemumgebung. Ändern sich z.B. Pfade, Formate oder Benutzer findet man hier die richtigen Einstellungen.

6. Konfigurieren von Icinga/Nagios

Damit wir Performance Daten bekommen müssen wir noch Icinga oder Nagios entsprechend Konfigurieren. Der inGraph verarbeitet Textdateien mit den Daten im Spool verfahren. Die genaueren Kommandos kann man im Wiki nachlesen.

7. Installieren des Webinterfaces

Um die schönen Graphen auch zu sehen brauchen wir noch ein Frontend. Beim inGraph stehen zwei Varianten zur Auswahl: Standalone oder Icinga-Web. Beide User Interfaces kommen mit Installer daher für schnellen Erfolg:

# cd ingraph-web/
# ./setup-ingraph-web.sh --install --prefix=/usr/local/ingraph --with-web-path=/ingraph
# cp ingraph.conf /etc/apache2/conf.d/
# service apache2 restart

Und ist nach Angabe keiner weiteren Konfigurationsschalter unter http:///ingraph erreichbar.


Dieser Guide ist nur ein kleiner Abriss was Konfiguration und Bedienung ermöglichen. Mehr Informationen findet man im Wiki unter netways.org. Für Feedback und Bugs geht man am besten in das monitoring-portal.org Forum oder auf den Bugtracker der Projektseite.

Marius Hein

Autor: Marius Hein

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

InGraph – The ultimate guide 2/5

This entry is part 2 of 5 in the series The ultimate guide to inGraph

Nachdem wir im ersten Teil des Guides eine Einführung bezüglich der Installation von InGraph geboten haben, beschäftigen wir uns im zweiten Teil weiterführend mit dem Tool.

Zweiter Teil: Bedienung.

InGraph bietet eine Vielzahl an nützlichen Features, um intuitiv und schnell sein Ziel erreichen zu können. Es gibt zwei Möglichkeiten, um auf die Performance-Daten zuzugreifen. Der einfachste Weg ist dabei direkt auf die Grid-Icons im Cronk von Icinga-Web zuzugreifen.

Das linke Icon öffnet einen InGraph-Popup und ermöglicht dem Nutzer so, direkt einen Vergleich der Graphen durchzuführen, ohne dafür die jeweilige View verlassen zu müssen. Das rechte Icon hingegen öffnet ein neues Tab mit der Standardansicht für den gewählten Service und Host.

Zusätzlich zu den Grid-Icons erstellt InGraph auch eine eigene Kategorie über die man direkt auf die Cronks zugreifen kann. Um auf die Übersicht zu kommen klickt man auf den InGraph-Button, wählt “Host und Service” und öffnet den Cronk mithilfe des “Anzeigen”-Buttons.

Bei der allgemeinen Übersicht eines Services sind standardmäßig fünf verschiedene Graphen dargestellt. Der erste Graph ist die sogenannte “Quickview”, indem der Verlauf über die gesamte Dauer angezeigt wird. Die restlichen vier Graphen beschreiben unterschiedliche Zeitintervalle: täglich, wöchentlich, monatlich, jährlich. Jedes dieser Graphenfelder besitzt ein einheitliches Menüfeld. um in ein vordefinierten Zeitintervall zu wechseln oder eine bestimmte Zeitspanne mithilfe eines Kalender-Popups auszuwählen.

Die Übersicht von InGraph

Mithilfe der Einstellungen lassen sich weitere Linien und Achsen in die Grafik hinzufügen und anpassen. Es ist außerdem noch möglich Kommentare zu genauen Datenpunkten einzufügen. Dafür muss man lediglich auf den Kommentar-Button klicken und den genauen Punkt auswählen, simple as that.

Das Editieren der Graphen Einfügen eines Kommentars 1/2 Einfügen eines Kommentars 2/2

In der rechten Ecke des Menüs wird eine Möglichkeit geboten, den Graphen in XML oder CSV zu exportieren oder normal ausdrucken zu lassen.

Als weiteres nützliches Feature bietet InGraph die Möglichkeit, innerhalb der Graphen hinein- oder herauszuzoomen. Möchte man sich also einen bestimmten Abschnitt eines Verlaufs genauer anschauen, muss man nichts weiter tun als mit einem Linksklick den gewünschten Bereich zu markieren. Daraufhin wird der bisherige Graph durch den ausgewählten und vergrößerten Bereich ersetzt. Um wieder zur ursprünglichen Ansicht zu kommen genügt ein Rechtsklick.

InGraph bietet noch viele zusätzliche Features und Möglichkeiten, welche im späteren Verlauf des Guides weiter erläutert werden. Mehr Informationen dazu findet man bereits jetzt wie gewohnt im Wiki unter netways.org.

InGraph – The ultimate guide 3/5

This entry is part 3 of 5 in the series The ultimate guide to inGraph

Im dritten Teil unseres InGraph Guides, wollen wir uns mit Views beschäftigen:

InGraph ermöglicht es Ansichten von Graphen als Views zu speichern um sie immer wieder aufrufen zu können. Vorallem wenn sehr viele Plots gleichzeitig dargestellt werden sollen, können einem vorgefertigte Views sehr viel Aufwand ersparen. Am besten lässt sich das erstellen von Views anhand eines einfachen Beispiels erklären.

Unser Ziel:

Wir wollen eine Übersicht über die CPU-Auslastung und den Speicherverbrauch eines Hosts über den Zeitraum einer Woche.

Erstellen der neuen Ansicht

Zuerst öffnen wir eine neue Ansicht und wählen dazu den Host und den Service aus, den wir beobachten wollen:

 

Hinzufügen zusätzlicher Graphen

Um jetzt zusätzlich noch die CPU-Auslastung darzustellen, muss die erste Ansicht mit der Schaltfläche Clone this panel geklont werden. Im neuen Graphen werden nun die alten Plots entfernt und die neuen hinzugefügt. Zusätzlich ändern wir die Darstellung des neuen Plots so, dass der Raum unterhalb der CPU-Auslastung ausgefüllt wird.

(Tipp: Falls sich die dargestellten Zeiten bei beiden Graphen unterscheiden sollten, kann man diese mit der Funktion synchronisieren bequem anpassen. )

Ausblenden unwichtiger Parameter und Speichern

Um eine bessere Übersichtlichkeit zu erreichen kann man außerdem noch ungewollte Plots ausblenden. In unserem Beispiel wollen wir dass nur die prozentuale Belegung des Hauptspeichers dargestellt wird. Dies erreichen wir indem wir unter Settings den Haken bei Active entfernen.

Wenn die View nun zu unserer Zufriedenheit angepasst ist, können wir diese nun in der Toolbar unter Template und Save As View speichern. Jetzt kann man das View in der linken Seitenleiste, unter InGraph und Views jederzeit wieder aufrufen.

Matthias Jentsch

Autor: Matthias Jentsch

Aktuell studiert Matthias Informatik an der Ohm und arbeitet als Werkstudent bei uns. Seinen hohen Kaffeeverbrauch kompensiert er mit Javascript und NodeJS und erstellt für uns interne Tools zur Ressourcenverwaltung.

InGraph – The ultimate guide 4/5

This entry is part 4 of 5 in the series The ultimate guide to inGraph

Im vorletzten Teil unseres großen InGraph Reiseführers geht es nicht direkt um das Graphing an sich, sondern um das Monitoring Plugin check_ingraph, das InGraph mitliefert.

Viele Probleme sind zum Glück schnell erklärt, aber leider auch genauso schnell verursacht: Switch kaputt, Festplatte tot, Zahlendreher beim ‘kill’.

Gelegentlich gibt es aber Situationen, die nicht einfach ad-hoc erscheinen, sich für das Adlerauge eines Sysadmins jedoch am Graphen erkennen lassen. Wenn normale, zeitlich begrenzte Lastanstiege im Lauf der Zeit immer stärker ausschlagen, kann man das im Wochenverlauf des Graphen erkennen – noch bevor es kritisch wird.
Aber: Schön und gut wenn man solche Probleme an den Werten des Graphen erkennt – nur wer vergleicht schon jeden Tag die aktuelle Last mit der Last von letzter Woche (vor allem wenn die Maschinen keine Probleme bereiten) ?

Ich weiß wer: check_ingraph!

Der kleine Streber ist simpel, aber effizient: Das Plugin vergleicht bestimme Werte (hier z.B. die Serverlast) aus einem Interval mit den Werten eines Intervals aus der Vergangenheit und geht auf Warning/Critical wenn sich zu starke Abweichungen zwischen den Intervallen ergeben. Man kann so z.B. überprüfen, ob die Lastwerte der letzten 2 Stunden sich stark von den Lastwerten der letzten zwei Stunden vor einer Woche unterscheiden. Im Falle des Falles kann das Plugin dann präventiv darauf hinweisen, dass die Last im Vergleich ungewöhnlich hoch ist (selbst wenn Sie noch nicht im kritischen Rahmen für das System ist).

In der unteren Grafik ist ein check_ingraph Check grafisch dargestellt, der prüft ob die Werte der letzten Woche sich stark von denen dieser Woche unterscheiden:

Screen Shot 2012 11 22 at 11.49.05 AM

Der Aufruf ist dabei wie folgt:

check_ingraph -H http1 -S "Current Load" -P load1 -F average -f -360 -g -192 -s -192 -t 0 -w 10 -c 20

Und, damit ich nicht einfach die tolle Dokumentation kopiere, etwas genauer:

  • -H http1 -S “Current Load” : -H ist der Parameter für den Host, -S für den Service. Hier überprüfen wir also den Current Load check vom Host ‘http1’
  • -P load1 : Perfdaten können ja beliebig viele Parameter enthalten, hier entscheiden wir uns für die Werte, die als load1 bezeichnet sind
  • -F average: Gibt an, dass der Durchschnitt der Intervalle verglichen wird. Hier kann man auch ‘trend’ für Trendwerte, ‘stddev’ für die Standardabweichung oder ‘hw’ für Holt-Winters Forecasting verwenden
  • -f -360: Das erste Interval beginnt vor 15 Tagen  (= -1 (da in der Vergangenheit) * 15  * 24 (Stunden))
  • -g -192: Das erste Interval endet vor 8 Tagen
  • -s 192: Das zweite Interval beginnt vor 8 Tagen
  • -t 0 : Das zweite Interval endet genau jetzt
  • -w 10: Bei 10% Abweichung wird ein warning zurückgegeben
  • -c 20: Bei 20% Abweichung wird ein critical zurückgegeben

Das sind zugleich auch die wichtigsten Parameter für die meisten Checks.

Zwar ist das Plugin recht einfach zu bedienen, die Effizienz hängt jedoch stark vom individuellen Anwendungsfall ab. Hier ein paar Fragen, die man sich beim Konfigurieren gerne stellen kann:

  • Ist meine Intervallgröße passend gewählt? Zu große Intervalle neigen dazu Abweichungen zu verschlucken, zu kleine Intervalle geben kleinen Abweichungen zu viel Gewicht.
  • Ergeben meine Intervalle Sinn? Wenn ein Datenbankserver nur unter der Woche belastet wird ergibt ein Vergleich zum Vortag keinen Sinn, da Samstage und Montage immer Alarm schlagen werden.
  • Ergibt Forecasting einen Sinn? Wenn ja – ergibt es einen Sinn bei meinem Intervall?

Check_ingraph bietet damit eine sinnvolle Ergänzung zum visuellen Monitoring mit Graphen. Der ein oder andere schleichende Ausfall lässt sich beim richtigen Einsatz des Plugin früh erkennen und der Admin schläft damit mal wieder etwas ruhiger.

Also runterladen und ausprobieren!

Jannis Mosshammer

Autor: Jannis Mosshammer

Nachdem Jannis als Softwareentwickler in Vollzeit bei NETWAYS angefangen hat, studiert er aktuell Informatik und arbeitet weiter als Werkstudent bei uns. Er ist erstklassiger Gitarrist und vermutlich mit Santana in 23 Generation verwandt. Hauptsächlich arbeitet er bei uns an Icinga Web, LConf oder der EventDB.

inGraph – The ultimate guide 5/5

This entry is part 5 of 5 in the series The ultimate guide to inGraph

Nachdem inGraph in der Version 1.0.1 vor ein paar Tagen released wurde, geht die Entwicklung von neuen Features weiter. Einen genauen Release-Termin für die 1.2 gibt es aber leider nocht nicht. Auf jeden Fall wird momentan fleißig an der 1.0.2 gearbeitet, die sich wie die letzte Version, auf Fehlerbehebungen konzentriert.
Zusammengefasst geht es im fünften und letzten Teil unserer inGraph-Serie um einen kleinen Ausblick.

Worauf kann ich mich freuen?

Templates
Geplant ist die Überarbeitung des Template-System – keine Angst, wir stellen nicht auf XML-Dateien um, sondern wollen es weiter verbessern. Momentan werden Templates anhand von Regulären Ausdrücken zugewiesen, was in dem ein oder anderen Setup zu Problemen führt. Deshalb soll auch das Check-Kommando für die Zuweisung gelten. Beide Möglichkeiten sind dann einzeln oder in Kombination nutzbar.

Die 1.0.x-Versionen haben noch keinen richtigen check_multi-Support, was bei der Anzeige quasi in einen undefinierten Brei aus vielen, vielen Linien endet. Das ändern wir natürlich.

PNG und PDF
Die Erstellung von PNGs via Node.js ist zur Zeit nur prototypisch implementiert und dokumentiert. Daran und an PDF-Generierung wird noch gefeilt.

Blick in die Zukunft
Zukunft prognostizieren anhand der vorhandenen Daten, das wird klasse!
Holt-Winters Forecast with forecast.js

Die komplette Roadmap findet sich auf netways.org.

Eric Lippmann

Autor: Eric Lippmann

Eric kam während seines ersten Lehrjahres zu NETWAYS und hat seine Ausbildung bereits 2011 sehr erfolgreich abgeschlossen. Seit Beginn arbeitet er in der Softwareentwicklung und dort an den unterschiedlichen NETWAYS Open Source Lösungen, insbesondere inGraph und im Icinga Team an Icinga Web. Darüber hinaus zeichnet er sich für viele Kundenentwicklungen in der Finanz- und Automobilbranche verantwortlich.