10 August 2015

[Howto] Icinga2 mit Graphite und Grafana unter Debian

In diesem Blog beschreiben wir die Einbindung von Icinga2 in Graphite und Grafana unter Debian.

Was ist Graphite

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.

Was ist Grafana

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.

Die Installation von Icinga2

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

Installation von Graphite und Graphite-Web

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

Konfiguration von Icinga2 mit Graphite

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„)

Konfiguration von Graphite-web

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:

  1. Als erstes legen wir eine Nutzerdatenbank für Graphite-web an. Da wir nicht viele Nutzer haben werden, verwenden wir an dieser Stelle sqlite als Backend für unsere Nutzerdaten. Zu diesem Zweck führen wir die folgenden Kommandos aus, die die Nutzerdatenbank initalisieren und sie dem Nutzer übereignen, unter dem das Webfrontend läuft:
    graphite-manage syncdb
    chown _graphite:_graphite /var/lib/graphite/graphite.db
  2. Anschliessend aktivieren wir das WSGI Modul im Apache: a2enmod wsgi
  3. Das Webinterface soll der Einfachkeit halber in einem eigenen virtuellen Host und auf einem eigenen Port laufen. Damit Apache auch auf diesen Port hört fügen wir in die Datei „/etc/apache2/ports.conf“ die Zeile „Listen 8000“ hinzu.
  4. Das Graphite Debian Paket liefert bereits eine Konfigurationsdatei für Apache mit, die wir für unsere Zwecke, leicht angepasst, verwenden können. 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.

  5. Anschliessend aktivieren wir den neuen virtuellen Host via a2ensite graphite und starten Apache neu: systemctl restart apache2
  6. Graphite-web sollte nun unter http://YOURIP:8000/ erreichbar sein. Sollte dies nicht der Fall sein, dann könnten die Apache Logdateien unter „/var/log/apache2/“ wertvolle Informationen liefern.

Konfiguration von Grafana

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

Alexander Wirt

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.

Beiträge ansehen


Beitrag teilen: