Metriken mit Graphite, Grafana und Collectd – Teil 3 Collectd

2. August 2016


Sascha Kranz ist Softwareentwickler bei EsPresto

In meinen letzten beiden Blog-Beiträgen habe ich begonnen, über den Metrik-Stack zu berichten, den wir in verschiedenen Kundenprojekten zum Erfassen und Visualisieren von Metriken aus dem Betrieb von Webanwendungen erfolgreich einsetzen.

Dieser basiert auf den Komponenten Collectd, Graphite und Grafana zum Erheben, Speichern und Visualisieren von Serverdaten und Anwendungskennzahlen.

Nachdem ich in den vorangegangenen Beiträgen erläutert habe, wie man Graphite als Metrik-Datenbank auf Debian 8 aufsetzen und initial konfigurieren sowie Grafana installieren und erste Dashboards und Graphen erstellen kann, möchte ich den Metrik-Stack heute mit Collectd abrunden. Diese Komponente setzen wir zur Erhebung der wirklich interessanten Servermetriken, wie zum Beispiel Last oder Speichernutzung, ein.

Collectd

Nun wollen wir anfangen, richtige Metriken zu erheben. Dazu installieren wir unseren ersten Kollektor. Collectd ist stabil, klein, einfach auszurollen und bringt trotzdem schon viele Funktionalitäten mit. Wir installieren es einfach via apt. Der Einfachheit halber tun wir dies komplett mit allen Plugin-Abhängigkeiten (und das sind einige).

Wer es schmaler haben will, kann es auch ohne diese installieren, muss dann aber immer mal wieder nachvollziehen, warum das eine oder andere Plugin nicht läuft und händisch nachinstallieren. Dabei hilft meistens das Studium der Logs und Google.

# complete install
apt-get install collectd
# without all the plugin-dependencies
# apt-get install --no-install-recommends collectd

Nun müssen wir Collectd noch beibringen, seine Metriken in unser Carbon zu schreiben. Dazu aktivieren wir in der Collectd-Konfiguration unter /etc/collectd/collectd.conf das Graphite Plugin und deaktivieren das RRDtool-Plugin. Die Default Config von Collectd ist ziemlich umfangreich, da viele auskommentierte Beispiele vorhanden sind, also nicht erschrecken:

# /etc/collectd/collectd.conf
LoadPlugin write_graphite
#LoadPlugin rrdtool

<Node “example”>
Host “localhost”
Port “2003”
Protocol “tcp”
LogSendErrors true
Prefix “collectd.”
StoreRates true
AlwaysAppendDS false
EscapeCharacter “_”

Alles weitere lassen wir vorerst so wie es ist.

Nun noch Collectd starten

systemctl enable collectd.service
systemctl start collectd.service

Nun sollte es beim Anlegen eines neuen Dashboardgraphen möglich sein, neben „carbon“ auch „collectd“ auszuwählen:

Nun ist es soweit: Wir können auf Grundlage der durch Collectd erfassten und in Graphite abgelegten Metriken Graphen bauen. Großartig!
Wie geht’s nun weiter?

Wie zu Beginn dieser Blog-Reihe bereits geschrieben, ist dies hier nur der Anfang, und es gibt noch einiges zu tun, um einen wirklich guten und umfassenden Überblick über den Betrieb einer Webanwendung und der eingesetzten Infrastruktur zu bekommen. Hier einige ToDos, die im Nachgang angegangen werden sollten:

  •     Grafana Zugang nur über SSL zulassen
  •     mehr Metriken erfassen
  •     wirklich sinnvolle Graphen und Dashboards bauen
  •     Metriken weiterer Server sinnvoll zusammenführen
  •     weitere Kollektoren wie z.B. statsd ausprobieren
  •     zusätzliche BI Kennzahlen z.B. mittels Datenbankabfragen umsetzen
  •     …

All das und noch viel mehr kann nun aufbauend auf dem beschriebenen Metrik-Stack erfolgen. Hierzu möchte ich in Zukunft an dieser Stelle auch einige weitere Beispiele aus unserer Praxis beschreiben.

Viel Erfolg und interessante Erkenntnisse beim Ausprobieren.

Anmerkung der Redaktion: Gern bieten wir Ihnen unsere Dienstleistungen im Bereich Managed Hosting an – nehmen Sie mit unserem Vertrieb Kontakt auf.