Metriken mit Graphite, Grafana und Collectd – Teil 2 Grafana

12. Juli 2016


Sascha Kranz ist Softwareentwickler bei EsPresto
Vor einiger Zeit hatte ich an dieser Stelle ja begonnen, von unseren Erfahrungen im Bereich der Erfassung und Aufbereitung von Metriken aus dem Betrieb von Webanwendungen zu berichten.

Der Metrik-Stack, den wir in verschiedenen Kundenprojekten einsetzen, basiert auf den Komponenten Collectd, Graphite und Grafana zum Erheben, Speichern und Visualisieren von Serverdaten und Anwendungskennzahlen.

Nachdem ich im vorangegangenen Beitrag erläutert habe, wie man Graphite als Datenbank zur performanten Speicherung und Abfrage der Daten auf Debian 8 aufsetzen und initial konfigurieren kann, möchte ich heute mit Grafana zur Visualisierung fortsetzen.

Grafana

Nach meinen Recherchen zum Thema Visualisierung der Metriken habe ich mich aus verschiedenen Gründen für Grafana entschieden. Neben der ansprechenden und intuitiven Oberfläche hat mich vor allem die Flexibilität von Grafana überzeugt. Neben dem von uns verwendeten Graphite bietet Grafana auch die Möglichkeit, weitere Datenquellen anzuschließen, so dass zum Beispiel ein späterer Umstieg auf influxdb oder die zusätzliche Einbindung z.B. von Elasticsearch einfach möglich ist. Die aktuelle Version von Grafana bietet hierbei auch die Möglichkeit, die verschiedenen Quellen in gemeinsamen Graphen zusammenzuführen.

Weiterhin sind die Grafana-Entwickler – allen voran Torkel Ödegaard – sehr aktiv in der Weiterentwicklung und der Github Issue Support rund um Grafana ist sehr bemerkenswert.

Kommen wir nun endlich zum interessanten Teil – dem Aufsetzen von Grafana.

Seit kurzem kommt Grafana mit einem eigenen Debian Repo daher, was die Installation aber auch die Aktualisierung sehr vereinfacht. Also zuerst einmal das Repo hinzufügen:

echo "deb https://packagecloud.io/grafana/stable/debian/ jessie main" > /etc/apt/sources.list.d/grafana.list
Jetzt die Repo Keys hinzufügen:
curl https://packagecloud.io/gpg.key | sudo apt-key add -
Und nun updaten und installieren:
apt-get update
apt-get install grafana

Für weitere Informationen zur Installation sowie den Konfigurationsoptionen empfiehlt sich hier auch ein Blick in die offizielle Doku unter http://docs.grafana.org/ sowie das Config-File /etc/grafana/grafana.ini.

Gestartet wird auch dieser Service mit systemctl:

systemctl start grafana-server.service

Jetzt sollte es möglich sein, die carbon Daten, die wir mit dem zuvor installierten Graphite bereits sammeln, via Graphite-api in Grafana zu integrieren. Dazu erstmal das eben installierte Grafana im Browser ansurfen und mit dem User admin:admin einloggen.

Nun kann folgendermaßen eine erste Datenquelle hinzugefügt werden:

Die Auswahl der Quelle erfolgt über einen Klick auf das Grafana Symbol links oben und dann auf „Data Sources“. In diesem Menüpunkt kann dann über den Button „Add data source“ die zuvor aufgesetzte Graphite-API angebunden werden.

Als nächstes brauchen wir noch ein Dashboard:

Dazu auf das Grafana Symbol -> Dashboards -> New klicken. Um ein erstes Testdashboard und einen ersten Graph anzulegen, einfach das Menü über den grünen Button am linken oberen Rand einblenden und hier „Add Panel“ -> „Graph“ wählen.

Für den Test nutzen wir hier erstmal die carbon internen Metriken, da wir bisher noch keine anderen Daten erheben. Dazu ein Klick auf die Datasource und „graphite“ auswählen. Als Test nun noch ein kleiner sinnloser Graph, um zu sehen, dass auch wirklich Daten aus Graphite rauspurzeln. Hier zu kann eine Query ganz einfach via Klick auf die Felder neben dem blauen „A“ erstellt werden. In dem hier gezeigten Beispiel nicht über den kryptischen Teil (8c90…) in der Query wundern, ich habe das testweise in einem Docker Container mit einem solch unsprechenden Hostnamen aufgesetzt.

Hier das ganze Beispiel noch einmal in bewegten Bildern zum Nachvollziehen:

Nun haben wir unseren Metrik-Stack um eine grafische Oberfläche erweitert, die uns später bei der Visualisierung unserer Daten unterstützt.

Im nächsten Blogbeitrag – der in Kürze an dieser Stelle folgt – stelle ich dann die dritte wichtige Komponente des Stacks vor: Collectd zur Erhebung der wirklich interessanten Servermetriken, wie zum Beispiel Last oder Speichernutzung.