Monitoring mit Netdata

Alles im Blick

Ursprünglich als Lösung für das Monitoring von Echtzeit-Performancedaten entwickelt, hat sich Netdata zur Allround-Monitoring-Software gemausert. Weitere Pluspunkte sind die einfache Installation und Konfiguration. Wir stellen die Software vor und verraten, wie man sie in Betrieb nimmt.
Um sich als Admin einen besseren Überblick zu verschaffen, wie es um Komponenten und Dienste in der IT-Landschaft bestellt ist, müssen passende ... (mehr)

Es kommt nicht jeden Tag vor, dass ein "C-Level Executive" selbst freie Software programmiert, doch Costa Tsaousis, der COO des Payment-Providers VivaWallet, findet offensichtlich die Zeit dazu. Unter dem Dach von "FireHOL" arbeitet er nicht nur seit mehr als zehn Jahren an dem Firewall-Frontend gleichen Namens, sondern auch an dem Traffic Shaper FireQoS und dem Monitoring-Paket Netdata, um das es in diesem Artikel geht.

Netdata [1] bietet Performance- und Health-Monitoring, wobei es besonderen Wert auf die hohe zeitliche Auflösung der Überwachung mit einem Event pro Sekunde legt. Dies geht einher mit einer architektonischen Spezialität, nämlich der Tatsache, dass Netdata per Default alle Daten im Speicher hält und nicht kontinuierlich auf die Festplatte schreibt. Nur beim Beenden speichert Netdata die aktuellen Daten, um beim Neustart nicht bei Null anzufangen. Jedenfalls war das die ursprüngliche Idee, die immer noch den Schwerpunkt von Netdata darstellt, auch wenn es seit letztem Jahr die Möglichkeit gibt, die History-Daten zu speichern.

Graphen in Echtzeit

Hinsichtlich des Echtzeit-Performance-Monitorings ist Netdata mit den bekannten Commandline-Tools wie top, sysstat und so weiter vergleichbar, nur dass Netdata seine Daten ansprechend in Echtzeit im Browser präsentiert. Gleichzeitig bietet es ohne weitere Konfiguration schon eher zu viele als zu wenig Metriken wie diverse CPU-Kennzahlen, Speicherverbrauch, Netzwerkauslastung, Hardware-Überwachung und vieles mehr.

Letztes Jahr hat der Programmautor auf GitHub die User befragt, welche Features sie am liebsten implementiert hätten, und häufigste Antwort war das Alerting im Fehlerfall, also ein klassisches Monitoring-Feature, wie es etwa von Nagios bekannt ist. Und so bietet Netdata mittlerweile auch das. Darüber hinaus lässt sich Netdata in zahlreiche andere Systeme integrieren. So gibt es Backends für die Zeitreihendatenbanken Graphite, OpenTSDB, KairosDB, InfluxDB, ElasticSearch, Prometheus und Blueflood. Über Plug-ins unterstützt Netdata viele überwachbare Softwarekomponenten. Netdata selbst ist in der Programmiersprache C geschrieben, aber die Plug-ins können in Python oder auch JavaScript (Node.js) geschrieben sein. Eine beeindruckende interaktive Grafik, die jeweils auf weitere Dokumentation verweist, zeigt die vielfältigen Anschlussmöglichkeiten, die Netdata bietet (Bild 1).

Bild 1: Das komplette Ökosystem, in dem sich Netdata bewegt. Im Web ist diese Grafik interaktiv, und die einzelnen Komponenten sind mit weiteren Hilfeseiten verlinkt.

Bequeme Installation

Ende März ist die aktuellste Version 1.10.0 erschienen, in den Paket-Repositories der Linux-Distributionen ist aber oft noch die ältere Version 1.9 anzutreffen. Zur Verfügung stehen Pakete für Arch Linux, Alpine, Debian, Gentoo, OpenSUSE, Solus und Ubuntu (18.04). Für Anwender von Ubuntu 16.04 gibt es ein Third-Party-Repository, mit dessen Paket wir allerdings Probleme hatten – so funktionierten einige Python-basierte Plug-ins nicht. Auch eine Installation über Docker ist möglich, aber den kompletten Funktionsumfang auszuschöpfen, ist damit schwierig, und die Konfiguration ist umständlicher als mit einem "nativ" installierten Netdata.

Dagegen lässt sich Netdata mit einem Install-Skript sehr einfach auf allen möglichen Linux-Distributionen, FreeBSD und davon abgeleiteten Spezialdistributionen wie pfSense und FreeNAS sowie macOS installieren. Die folgenden Befehle laden das Installer-Skript herunter und führen es aus:

$ wget https://my-netdata.io/kickstart.sh
$ chmod +x kickstart.sh
$ ./kickstart.sh

Das Skript brauchen Sie nicht mit sudo aufzurufen, es fragt bei Bedarf selbst das Passwort ab. Die Installation funktioniert vorbildlich, zeigt die verwendeten Pfade an und erstellt sogar ein Skript für das Entfernen von Netdata (Bild 2). Im Verlauf der Installation holt das Skript die nötigen Third-Party-Pakete aus dem Distributions-Repository, checkt den Netdata-Code von GitHub aus (in "/usr/src/netdata.git"), compiliert ihn und verteilt die Dateien anschließend auf der Festplatte. Zudem konfiguriert der Installer ein Startup-Skript für das auf dem System vorhandene Init-System, sei es Systemd, Init-V oder auch OpenRC.

Bild 2: Das Installationsskript von Netdata gibt alle wichtigen Pfade aus und erstellt ein Skript für die Deinstallation.

Ursprünglich war die Idee, dass Netdata auf jedem zu überwachenden System läuft. Eine verteilte Architektur mit Server und Agenten gibt es bei Netdata nicht. Stattdessen speichert das Web-Dashboard im Menü jede Netdata-Instanz, die der Admin zur Überwachung auswählen kann, in einer "Registry". Dieses Konzept wurde zwischenzeitlich etwas aufgeweicht, weil es sich beispielsweise für dynamische Umgebungen mit entstehenden und vergehenden VMs und Containern nicht so gut eignet. Jetzt gibt es die Möglichkeit, einzelne Netdata-Instanzen nur zum Sammeln von Daten zu verwenden und diese an einen zentralen Netdata-Server zu schicken.

Listing 1: HAProxy-Authentifizierung



frontend https-in
      use_backend netdata if { hdr_end(host) -i netdata.mydomain.com }
…
userlist netdata_users
    user ofrommel insecure-password T0Ps3Cret
…
backend netdata
      acl AuthOkNetdata http_auth(netdata_users)
      http-request auth realm NetdataRealm if !AuthOkNetdata
      server netdata 127.0.0.1:19999

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019