Netdata - Mit einem Befehl zur Systemüberwachung

  Paul F.   Lesezeit: 11 Minuten  🗪 3 Kommentare

Bei Netdata handelt es sich um eine einfache und schnell einzurichtende, aber dennoch mächtige Echtzeit-Monitoring-Lösung.

netdata - mit einem befehl zur systemüberwachung

Hast du dich schon einmal damit auseinandergesetzt, wie du die Systemperformance deines eigenen Web-, Mail- oder Cloud-Servers ohne grossen Aufwand überwachen könntest? Die im Folgenden vorgestellte Applikation namens Netdata bietet dir alles, was du dazu benötigst.

Doch vorab ein kurzer Disclaimer: In diesem Artikel beschränke ich mich lediglich auf den freien und quelloffenen Agent, welcher unter einer GPLv3 Lizenz zur Verfügung steht und vor allem für Heimanwender interessant ist. Er ist bei mir täglich neben der eigenen Nextcloud-Instanz im Einsatz und leistet mir gute Dienste. Somit sind vor allem meine eigenen Erfahrungswerte in diesen Artikel eingeflossen.

An dieser Stelle ist dennoch wichtig zu erwähnen, dass die Cloud-Lösung von Netdata zum Zusammenfassen von vielen verschiedenen Knotenpunkten in einer Weboberfläche nicht quelloffen ist! Mit den Änderungen der letzten Wochen zeichnet sich zudem ab, dass demnächst mit einem bezahlbaren Service ein kommerzieller Weg eingeschlagen wird - ähnlich wie es bei Nextcloud mit der Enterprise-Lösung auch der Fall war.

Dazu kommt, dass Nutzer seit einiger Zeit gezielt zu einer Registrierung der Cloud-Lösung aufgefordert werden. Diese wird nach jetzigem Stand für die einfache Nutzung von Netdata jedoch nicht benötigt! Über den Punkt Learn auf der Netdata Webseite findet man die Dokumentation des Agents. Englischkenntnisse sind dabei zwingend notwendig.

Doch nun zur eigentlichen Vorstellung von Netdata.

Netdata in Action - Der Agent

Erfassung aller Daten im Sekundentakt. Unbegrenzte Anzahl an Metriken. Nur 1 % Prozessorlast pro Kern. Ein paar MB Arbeitsspeichernutzung. Geringe Festplattenbeanspruchung. Bis zu 10.000 Metriken out of the box. Dabei jedoch null Konfigurations- bzw. Wartungsaufwand und vor allem eine atemberaubend schnelle, interaktive Visualisierung in der ansprechenden Weboberfläche. All diese Versprechen sind laut der Entwickler von Netdata zu erwarten. Doch wird das Monitoring-Tool diesen Versprechen gerecht?

Die harten Fakten sind leicht zu überprüfen. Auf meinem Intel NUC8i3BEH mit dem Core i3-8109U und 16 GB Arbeitsspeicher läuft die Anwendung bereits seit Ende 2020 neben einer Nextcloud-Installation einwandfrei. Und tatsächlich ist die Applikation sehr ressourcenschonend, wobei sie alle Daten im Sekundentakt erfasst. Die meiste Zeit bewegt sich die CPU-Nutzung des in C geschriebenen Programms zwischen 0,7 und 2 Prozent beider Prozessorkerne, was der Angabe von 1 % pro Kern entspricht. Wird begonnen in der Weboberfläche zu arbeiten, schlägt dieser Wert natürlich entsprechend nach oben aus. Im Test für diesen Artikel jedoch nicht über 8 % Auslastung eines Kerns. Erstaunlich ist, dass Netdata lediglich 204 MB Arbeitsspeicher nutzte, obwohl auf der Weboberfläche die Daten der letzten 7 Tage sichtbar gemacht wurden und der Agent insgesamt 2.257 Metriken fand. Netdata arbeitet hier dementsprechend nicht mit leeren Versprechen.

Der grösste Berührungspunkt nach der Installation ist das Dashboard der Webanwendung. Ob der Benutzer mit diesem zurechtkommt, liegt an den persönlichen Bedürfnissen. In der vorangegangenen Abbildung ist das Dashboard mit seinen Bedienelementen zu sehen. Im Folgenden wird auf die markierten Bereiche gesondert eingegangen:

  1. Diese Übersicht zeigt die grundlegenden Systemmetriken wie CPU/RAM-Auslastung, Netzverkehr und Bandbreite der Lese- und Schreiboperationen auf der Festplatte.
  2. Dieser Bereich umfasst einige Funktionen, welche die Datenverarbeitung und die Auswahl des Zeitraums betreffen. So kann im mittleren Auswahlbereich die Start- sowie Endzeit der Darstellung auf dem Dashboard bestimmt und die Datenausgabe auf dem Dashboard pausiert bzw. fortgesetzt werden. Rechts ist die Anzahl an Alarmen bzw. Warnungen zu sehen, die der Anwender sich mit Klick auf das Symbol anzeigen lassen kann. Im linken Auswahlbereich ist es möglich, neue Updates und News von Netdata zu verfolgen. Ausserdem kann der derzeitige Dashboardbereich als Snapshot mit flexibler Skalierung exportiert oder ein Snapshot in das Dashboard importiert werden. Die Ausgabe in ein PDF-Dokument ist auch möglich, funktionierte bei mir jedoch nur mit auf Chromium basierten Browsern gut. Firefox hatte Probleme bei der Darstellung.
  3. Dieser Bereich enthält eine Auflistung aller Kategorien von Metriken. Befindet sich der Nutzer in einer bestimmten Kategorie, werden dort alle Metriken dieser angezeigt. Über das Verzeichnis kann direkt zu dem entsprechenden Dashboardbereich gesprungen werden. In obigen Beispiel ist zu sehen, wie umfangreich das Monitoring ohne Konfigurationsaufwand bereits ist. Es wurde automatisch erkannt, dass BTRFS als Dateisystem, Fail2ban zur Härtung und Nginx als Webserver genutzt wird. Netdata überwacht sich ausserdem selbst.
  4. Das erste Diagramm wird in diesem Bereich dargestellt. Die Legende der fünf Metriken befindet sich am unteren Rand. Mit Klick auf eines davon werden alle anderen ausgeblendet. Ein Grossteil der Diagramme ist mit einer Erklärung versehen, die jedoch wie die Dokumentation nur in englischer Sprache formuliert ist. Mit dem Diagramm lässt sich meiner Ansicht nach intuitiv arbeiten. Per linker Maustaste kann das Diagramm zeitlich verschoben werden. Wird ALT gedrückt gehalten und gescrollt, kann der Zeitraum um den anvisierten Punkt vergrössert oder verkleinert werden. Mit der mittleren Maustaste lässt sich der genaue vertikale oder horizontale Bereich auswählen, in den gezoomt werden soll. Am rechten unteren Rand sind diese Steuerfunktionen zusätzlich mit Buttons abgebildet. Dort lässt sich das Diagramm auch in der Höhe anpassen.
  5. Hier sind Standardfunktionen angesiedelt. So kann sich bei gewünschter Cloud-Nutzung angemeldet werden. Es sind Dokumentationen zu Netdata verlinkt und die Einstellungen der Weboberfläche können angepasst werden.
  6. Dieser Bereich wird für den einzelnen Agenten nicht benötigt. Ist die Cloud in Nutzung, werden hier wahrscheinlich alle verbundenen Server angezeigt.

Das Dashboard wirkt insgesamt sehr aufgeräumt und übersichtlich. Die Benutzung ist intuitiv und durch die Echtzeitbereitstellung der Daten in Listenform sehr nützlich. Andere Systeme können dies natürlich auch und bieten häufig mächtige weitere Funktionen. Im Folgenden wird mit der Konfiguration ein weiterer Grund dargelegt, weshalb ich mich persönlich im privaten Bereich für Netdata entschieden habe.

Ein Befehl und los - Die Einrichtung

wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh --disable-telemetry

Das ist der Befehl, der zur Installation im Terminal eingegeben wird und der den grundsätzlich Dienst über den Port 19999 erreichbar macht. Mit --disable-telemetry wird der Erhebung anonymer Statistiken widersprochen. In der Dokumentation finden sich zahlreiche weitere Optionen, welche beispielsweise den Release-Channel oder automatische Updates betreffen. Letzteres funktioniert seit neuestem scheinbar auch über die systemeigene Paketverwaltung wie apt. Zuvor hat das Update-Script erfahrungsgemäß den Quellcode selbst kompiliert, was auch auf einem Raspberry Pi 4b 4GB nur wenige Minuten in Anspruch nahm.

Auch wenn die Webanwendung nun grundsätzlich aktiviert ist können noch weitere Anpassungen vorgenommen werden. Die standardmäßige Konfigurationsdatei ist wie folgt zu öffnen:

cd /etc/netdata
sudo ./edit-config netdata.conf

In der Dokumentation sind alle Werte mit entsprechenden Erklärungen hinterlegt. Die einzigen Anpassungen an meiner Installation können den folgenden Zeilen entnommen werden.

Unter der Kategorie [global] ist lediglich history auf den Wert 14400 und dbengine multihost disk space auf 700 gesetzt. Ersteres besagt, dass 4 Stunden (14400 Sekunden) Daten im Arbeitsspeicher zwischengespeichert werden sollen. Die zweite Einstellung gibt an, dass 700 MB Daten im Speicher vorzuhalten sind, bevor Daten gelöscht werden. Bei meinem System entspricht das ziemlich genau einer Woche. Mit diesem Rechner lässt sich das für jeden Anwendungsfall ausrechnen.

Im Abschnitt [web] lassen sich Restriktionen für den Webzugriff des Dienstes festlegen. Auch wenn die Webanwendung read-only ist und sie keine Änderungen am System vornimmt, sollte bei einem Server, der offen in einem Computernetz hängt, der Zugang beschränkt und verschlüsselt werden. Tut der Nutzer dies nicht, kann praktisch jeder die überwachten Systemwerte offen einsehen. Ausserdem werden über die API weitere Systeminformationen wie z. B. die verwendete Distribution bereitgestellt.

Netdata kann mit dem integrierten Webserver grundsätzlich TLS nutzen, sofern ein Zertifikat vorhanden ist. Auf dem NUC8i3BEH wurde jedoch der Parameter bind to auf 127.0.0.1 gesetzt und es wird Nginx als Reverse Proxy verwendet, um den Zugang neben TLS zusätzlich über eine Anmeldung zu beschränken.

Sei informiert - Die Benachrichtigungen

Zu einem guten Monitoring-Tool gehört die Möglichkeit, sich informieren zu lassen, sollte am System etwas nicht stimmen. Diese Funktion lässt sich auch in Netdata aktivieren.

Insgesamt stehen derzeit 26 Wege hierfür zur Verfügung. So kann sich der Anwender klassisch per Mail oder modern über Messenger wie Discort, Matrix und Slack alarmieren lassen. Auf dem Beispielsystem wird Telegram genutzt, da bereits eigene Benachrichtigungsskripte mit einem Telegram-Bot verknüpft sind und es sich somit anbot. Hierbei waren lediglich drei Zeilen in der Konfigurationsdatei health_alarm_notify.conf zu ändern und nun werden Nachrichten wie die folgende gesendet. Dieses Beispiel zeigt einen Ausfall des Nginx-Servers an.

Dabei lassen sich die Alarme auch nach eigenen Bedürfnissen festlegen und sogar neue erstellen. Auf dem Dashboard wird dafür folgender Link zur Dokumentation unter Bereich 3 in Abbildung 1 bereitgestellt. Dort ist auch eine weitere Möglichkeit zur Ergänzung von Netdata zu finden, mit der Diagramme nach den eigenen Bedürfnissen erstellt werden können.

Fazit

Netdata ist für mich das Monitoring-Tool der Wahl. Es ist einfach zu installieren, schnell zu konfigurieren und funktioniert, ohne dass es aktiv gewartet werden muss. Daneben besitzt Netdata eine großartige Weboberfläche, die mit der richtigen Konfiguration von überall erreichbar gemacht werden kann.

Wegen dieser positiven Erfahrungen und weil im deutschsprachigen Raum wenig aktuelle Artikel über Netdata zu finden sind, wollte ich mein Wissen gern an die Community weitergeben. In diesem Sinne wünsche ich viel Spass beim Ausprobieren und hoffe, dass ich dem einen oder anderen mit dieser Vorstellung ein neues Tool mit auf den Weg geben konnte. Sollte der Agent nicht den Erwartungen gerecht werden, so lässt er sich natürlich mit folgender Anleitung deinstallieren.

Tags

Netdata, Agent, Daten, NUC8i3BEH, Dashboard, Nextcloud, E-Mail, Metrik

Martin
Geschrieben von Martin am 25. März 2022 um 22:22

netdata hatte ich auch einige Jahre im Einsatz. Die simple Einrichtung und die vielen Metriken sind gut. Was mich zu einem Wechsel bewegt hat war die Tatsache, dass die meisten Metriken unter Sammel-Kategorien akkumuliert werden. So kann man zB nicht erkennen, welcher Prozess konkret die CPU auslastet, sondern wenn man Pech hat nur "Sonstiges". Nun könnte man sich zwar eine eigene Metrik basteln, die den gewünschten Prozess enthält, aber wenn nicht im Vorhinein bekannt ist, welcher das sein wird, geht das nicht.

Ich bin dann auf eine eigene Lösung gewechselt, die auf atop basiert. Dort kann man dann im Detail in der Historie stöbern, welcher Prozess der Auslöser für eine Lastspitze war. Code liegt hier: https://codeberg.org/mgellner/atopsar-plot

Norbert
Geschrieben von Norbert am 26. März 2022 um 12:26

Guter Artikel

Netdata habe ich auch genutzt bevor ich auf eine Lösung mit telegraf > influxdb > Grafana gewechselt bin

Damit lassen sich dann auch mehrere Server und Hosts überwachen

Interessent
Geschrieben von Interessent am 1. April 2022 um 13:29

Ein Punkt der mich leider von Grafana Abstand nehmen lies, war die für mich etwas undurchsichtige Darstellung von Werten (Quelle in diesem Fall collectd über influxdb) in eigens erstellten Panels in einer lesbaren Ansicht statt bspw. lediglich 1.73443342 oder 7.394238403284.

An mancher Stelle ist mir dies gelungen, bei den meisten jedoch nicht. Fertige Tamplates haben jedoch überwiegend funktioniert.

Gibt es hierzu evtl. übersichtliche HowTows, die auch die Hintergründe etwas erläutern? Mit der Doku kann ich mich jedoch nicht so ganz anfreunden...