In diesem Blog beschreiben wir die Einbindung von Icinga2 in Graphite und Grafana unter Debian.
Graphite speichert Performancedaten über einen konfigurierbaren Zeitraum. Über eine definierte Schnittstelle können Dienste Metriken an Graphite schicken, die dann strukturiert über den gewünschten Zeitraum gespeichert werden. Mögliche Beispiele für solche Metriken sind die CPU-Auslastung oder Zugriffszahlen eines Webservers. Über die in Graphite integrierte Webschnittstelle können nun Graphen aus den verschiedenen Metriken erzeugt werden. Dies ermöglicht uns, Veränderungen an Werten über verschiedene Zeiträume zu erkennen und zu beobachten. Ein gutes Beispiel für eine solche Trendanalyse sind die Füllstände von Festplatten. Mit Hilfe eines Trendgraphen lässt sich gut erkennen mit welcher Rate der Platzbedarf wächst und wann ein Austausch des Storage ungefähr erforderlich sein wird.
Graphite bietet zwar ein eigenes Webinterface, dieses ist jedoch nicht sonderlich attraktiv und flexibel. In diese Bresche springt Grafana.
Grafana ist ein Frontend für verschiedene Speicher von Metriken. Es unterstützt beispielsweise Graphite, InfluxDB und OpenTSDB. Grafana bietet eine intuitive Oberfläche um aus Metriken repräsentative Graphen zu erstellen. Es verfügt außerdem über eine Vielzahl von Funktionen um das Aussehen und die Darstellung von Graphen zu optimieren. Anschliessend können Graphen in Dashboards zusammengefasst werden. Eine Parametrisierung von Graphen ist genauso möglich. Dadurch hat man auch die Möglichkeit sich nur einen Graph von einem bestimmten Host anzeigen zu lassen.
An dieser Stelle wird nur die Installation, die für Graphite notwendig ist beschrieben. Icinga2 Pakete in der aktuellen Version für Debian, erhält man direkt vom Debmon Projekt. Beim Debmon Projekt stellen die offiziellen Debian-Paketmaintainer aktuelle Versionen verschiedener Monitoring-Tools für Debian Releases zeitnah zur Verfügung. Um diese Pakete einzubinden sind die folgenden Befehle nötig:
# add debmon cat <<EOF >/etc/apt/sources.list.d/debmon.list deb http://debmon.org/debmon debmon-jessie main EOF # add debmon key wget -O - http://debmon.org/debmon/repo.key 2>/dev/null | apt-key add - # update repos apt-get update
Anschliessend können wir Icinga2 installieren:
apt-get install icinga2
Nachdem Icinga2 installiert wurde, können anschließend auch Graphite und Graphite-web installiert werden.
# install packages for icinga2 and graphite-web and carbon apt-get install icinga2 graphite-web graphite-carbon libapache2-mod-wsgi apache2
Icinga2 muss so konfiguriert werden, dass es alle ermittelten Metriken an Graphite exportiert. Die Graphite Komponente, die diese Daten entgegennimmt wird „Carbon“ genannt. In unserer Beispielinstallation läuft Carbon auf dem selben Host wie Icinga2 und verwendet ebenfalls den Standardport. Aus diesem Grund ist keine weiterführende Konfiguration von Icinga2 nötig, es reicht den Export einzuschalten.
Dazu genügt das Kommando icinga2 feature enable graphite
Anschliessend muss Icinga2 neugestartet werden: service icinga2 restart
Sollte der Carbonserver auf einem anderen Host, oder einem anderen Port laufen, so kann die Konfiguration von Icinga2 in der Datei /etc/icinga2/features-enabled/graphite.conf angepasst werden. Details dazu findet man in der Icinga2 Dokumentation
Wenn die Konfiguration erfolgreich war, dann sollten nach kurzer Zeit in „/var/lib/graphite/whisper/icinga“ eine Reihe von Dateien auftauchen. Wenn dies nicht der Fall ist, dann sollte man einen Blick in die Logdatei von Icinga2 werfen (diese befindet sich in „/var/log/icinga2/icinga2.log„)
Grafana benutzt das Webfrontend von Graphite als Schnittstelle für die von Graphite gespeicherten Metriken. Aus diesem Grund ist es erforderlich Graphite-web korrekt zu konfigurieren. Aus Performancegründen betreiben wir Graphite-web als WSGI Modul. Hierzu sind eine Reihe von Konfigurationschritten nötig:
graphite-manage syncdb chown _graphite:_graphite /var/lib/graphite/graphite.db
a2enmod wsgi
cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available/graphite.conf
Damit der virtuelle Host auch den Port 8000 verwendet, müssen wir in der Datei die Zeile
<VirtualHost *:80>
durch
<VirtualHost *:8000>
ersetzen.
a2ensite graphite
und starten Apache neu: systemctl restart apache2
Grafana ist derzeit nicht in Debian enthalten. Allerdings bietet der Autor ein Apt Repository an, über das Grafana installiert werden kann. Auch wenn das Repository auf Wheezy verweist, so funktionieren die Pakete auch unter Debian Jessie.
Das Repository ist nur über https erreichbar. Aus diesem Grund muss zuerst der https Supoort für apt installiert werden: apt-get install apt-transport-https
Anschliessend kann das Repository eingebunden werden.
# add repo (package for wheezy works on jessie) cat <<EOF >/etc/apt/sources.list.d/grafana.list deb https://packagecloud.io/grafana/stable/debian/ wheezy main EOF # add key curl -s https://packagecloud.io/gpg.key | sudo apt-key add - # update repos apt-get update
Anschliessend kann das Paket installiert werden: apt-get install grafana
. Damit Grafana läuft müssen wir den Dienst noch aktivieren systemctl enable grafana-server.service
und starten systemctl start grafana-server
.
Grafana ist nun unter der Adresse http://YOURIP:3000/ erreichbar. Der Standardbenutzername und das Passwort ist in unserem Beispiel ‚admin‘. Dieses Passwort sollte natürlich bei nächster Gelegenheit durch ein sicheres Passwort ersetzt werden.
Anschliessend muss Grafana so konfiguriert werden das es Graphite als Datenquelle benutzt. Der Einfachkeit halber wird die Konfiguration über einen Screencast erklärt.
Nach erfolgter Einbindung von Graphite als Datenquelle können wir unseren ersten Graphen erstellen. Auch dazu gibt es hier einen kurzen Screencast.
Herzlichen Glückwunsch, Sie haben nun erfolgreich Icinga2, Graphite und Grafana installiert und konfiguriert. Für alle weiteren Schritte sei auf die Dokumentation der entsprechenden Projekte verwiesen:
Kategorien: | HowTos |
---|---|
Tags: | Debian Grafana Graphite Icinga2 Monitoring |
über den Autor
Senior Berater
zur Person
Alexander ist seit 1996 in der Open Source-Welt unterwegs und hat bei verschiedensten Open Source-Projekten mitgewirkt. Aktuell ist er im Debian- und GRML-Projekt aktiv. Auch bei credativ zählt er seit 2004 zu den Urgesteinen. Hier bei ist er derzeit als Projekt- und Teamleiter unterwegs und versucht die Kunden mit kreativen Lösungen für schwierige Probleme zu unterstützen.