Aus Linux-Magazin 02/2019

Performance-Monitoring in Echtzeit mit Netdata

© Vladimir Zhupanenko , 123RF

Was sich nicht messen lässt, das kann man nicht verbessern. Netdata kann so gut wie alles messen – jedenfalls solange es um Performance- und Gesundheitsdaten von Linux-Rechnern geht.

Vom Messen abgesehen will Netdata von vornherein gar nicht alles können. Das Monitoringtool verzichtet zum Beispiel auf eine Authentifizierung und Autorisierung seiner Benutzer. Es spart sich die Aufzeichnung einer langen Historie der beobachteten Daten. Bei Tausenden Metriken und einer so hohen Messfrequenz, wie sie das Tool verwendet, würde das zu Problemen führen. Der Admin kann es also nicht nach den Werten des letzten Tages oder auch nur der letzten Stunde fragen. Netdata weist in der Regel nur die letzten fünf Minuten aus. Dafür aber zeigt es alle Messwerte aus einem schnellen Round-Robin-Speicher im RAM mit sekündlicher Auflösung an.

Zwar kann das Werkzeug Nutzer über verschiedene Kanäle alarmieren, wenn das beobachtete System Grenzwerte überschreitet, aber ein ausgefeiltes Prozedere zum Bestätigen der Benachrichtigungen oder für deren Eskalation kennt es nicht. Netdata macht auch keine funktionalen Ende-zu-Ende-Tests und es versucht genau so wenig abzuschätzen, welche Konsequenzen die gemessenen Werte für die Applikationen haben.

Was tut es stattdessen? Es ist bemüht, bei möglichst geringer Inanspruchnahme von Rechenleistung und I/O ein möglichst vollständiges Bild der Performance und Gesundheit eines Rechners zum aktuellen Zeitpunkt zu zeichnen. Kurz und gut: Das Spezialgebiet, auf das sich Netdata als Open-Source-Programm konzentriert, ist das Performance- und Health-Monitoring in Echtzeit.

Mit Netdata starten

Netdata ist für die Plattformen Linux, Mac OS und Free BSD verfügbar. Die Installation unter Linux gestaltet sich sehr einfach. In etlichen Distributionen, darunter Ubuntu, Debian oder Open Suse, findet es sich im Repository. Wo das nicht so ist, kommt eine Installation aus den Github-Quellen [1] in Betracht, die auch einfach von der Hand geht, denn es liegt ein Installer-Skript bei.

Einmal aufgesetzt fungiert Netdata unter Linux auf dem zu beobachtenden System als Daemon, verwaltet von Systemd. Per Default ist das Netdata-Browser-GUI auch nur dort unter http://localhost:1999 zu erreichen. Um von einem beliebigen anderen Rechner darauf zugreifen, eignet sich ein SSH-Tunnel. Alternativ ist es auch möglich, Netdata hinter einem Proxy laufen zu lassen. Wie das geht, beschreibt die Dokumentation [2]. Mit einer der beiden Methoden lässt sich das Dashboard, das die Messwerte visualisiert, auf jedem anderen Rechner betrachten, der eine Netzwerkverbindung herstellen kann (Abbildung 1).

Abbildung 1: Ein beliebiger Browser stellt das Netdata-Dashboard dar, das sehr viele Messwerte visualisiert.

Abbildung 1: Ein beliebiger Browser stellt das Netdata-Dashboard dar, das sehr viele Messwerte visualisiert.

Das ursprüngliche Konzept sah keine Arbeitsteilung im Client-Server-Stil vor. Netdata musste auf jedem System, das es zu überwachen galt, Datensammlung und Dashboard-Darstellung übernehmen. Das Dashboard im Browser wiederum konnte sich die IP-Adressen von verschiedenen Instanzen merken, um sie in einem Menü zur Auswahl anzubieten.

Allerdings ist dieses Herangehen zum Beispiel für Cloudumgebungen nicht optimal, da ständig virtuelle Rechner hinzukommen und wieder verschwinden. Deshalb lässt sich Netdata nun auch so einstellen, dass es als purer Datensammler arbeitet und die Darstellung an eine zentrale Netdata-Instanz delegiert.

Wenig konfigurieren

Die meisten Features funktionieren ohne Konfiguration out of the Box. So kennt das Tool ohne Zutun des Nutzers nach eigenen Angaben über 5000 Metriken und verfügt auch bereits über einige voreingestellte Grenzwerte für Alarme. Desgleichen sind ihm viele Applikationen bekannt, deren Prozesse es gruppieren kann, darunter Datenbanken von MySQL bis Oracle plus einige NoSQL-Datenbanken (Mongo DB, Redis, Couch DB, Memcached) plus Time-Series-Datenbanken wie Prometheus oder Graphite.

Außerdem kennt es auch verschiedene Webserver (Apache, Nginx, Light HTTPD und andere), Mailserver (etwa Dovecot, Imapd, Amavix, Pop3d), Nameserver, Printserver, Timeserver, VPN-Server, Load Balancer oder Storagesysteme wie Ceph, Samba oder NFS. Auch Container-Hosts (Docker, LXC) erkennt das Tool, genauso Backupserver (Rsync, Bacula) oder Applikationsserver wie Kafka, Rabbit MQ oder Java-Applikationen sind ebenfalls kein Problem.

Der Administrator kann zudem eigene Applikationen unter »/etc/netdata/apps_groups.conf« nachtragen. Auch eigene Charts lassen sich definieren. Im Konfigurationsverzeichnis (»/etc/netdata«) und seinen Unterverzeichnissen finden sich dazu etliche weitere dokumentierte Configfiles, die beispielsweise benötigt werden, um Benutzernamen und Passwörter für überwachte Applikationen zu hinterlegen.

Im Einzelfall sind noch weitere Handgriffe nötig. Um etwa MySQL in die Überwachung einzubeziehen, sollte der Admin in der Datenbank zunächst einen passenden Benutzer mit beschränkten Rechten anlegen (Listing 1).

Listing 1

Netdata-User anlegen

01 mysql> create user 'netdata'@'localhost';
02 mysql> grant replication client on *.* to 'netdata'@'localhost';
03 mysql> flush privileges;

Danach editiert er zuerst »/etc/netdata/python.d/mysql.conf« und trägt dort in eines der schon vorbereiteten Anmelde-Templates, die Netdata alle nacheinander durchprobiert, »netdata« als Usernamen ohne Passwort ein. Schließlich muss er noch in »/etc/netdata/charts.d.conf« das Kommentarzeichen vor der Zeile

mysql=force

entfernen. Nach einem Netdata-Neustart sollten zahlreiche neue Charts für die lokale MySQL-Instanz auftauchen (Abbildung 2).

Abbildung 2: Die Bandbreite der Inno-DB-Storage-Engine innerhalb von MySQL, gemessen in Megabytes und Operations pro Sekunde.

Abbildung 2: Die Bandbreite der Inno-DB-Storage-Engine innerhalb von MySQL, gemessen in Megabytes und Operations pro Sekunde.

Die Metriken

Netdata sammelt Performance-Messwerte vor allem für die klassischen Ressourcengruppen CPU, Disk, Netzwerk und Hauptspeicher. Die dazu verfügbaren Informationen gleichen denen, die beispielsweise auch »sar« aus dem Sysstat-Paket liefert, mit vier allerdings wesentlichen Unterschieden:

1. Es handelt sich dabei, wie schon erläutert, immer nur um Momentanwerte. Damit der interessierende Zeitraum nicht während der Analyse aus dem Bild scrollt, kann man Snapshots speichern. Die aber frieren auch nur die letzten fünf Minuten ein.

2. Alle Daten werden in Echtzeit visualisiert. Wertetabellen gibt es nicht.

3. Zusätzlich zu den Absolutwerten bietet Netdata nützliche Ansichten, die beispielsweise nach Applikationen gruppiert sind (Abbildung 3).

Abbildung 3: Disk-I/O, gruppiert nach Applikationen. Grün steht im Beispiel für eine SQL-Datenbank, auf der ein Benchmark lief.

Abbildung 3: Disk-I/O, gruppiert nach Applikationen. Grün steht im Beispiel für eine SQL-Datenbank, auf der ein Benchmark lief.

4. Die Grafiken sind interaktiv. Das heißt: Bewegt der Anwender den Cursor entlang der Zeitachse, werden die in der jeweiligen Sekunde gemessenen Werte in Zahlen rechts vom Chart eingeblendet.

Den einzelnen Charts vorangestellt ist eine Übersicht über grundlegende Parameter, wie man sie in Zahlenform etwa von »top« erhält (Abbildung 4), hier allerdings in Form von Pegelmessern.

Abbildung 4: Grundlegende Kennzahlen werden zum Einstieg präsentiert.

Abbildung 4: Grundlegende Kennzahlen werden zum Einstieg präsentiert.

Es handelt sich um Angaben zum benutzten Swapspeicher, Lese- und Schreiboperationen auf Platte und Netzwerk sowie CPU- und RAM-Auslastung (Abbildung 4). Die folgenden fortlaufend aktualisierten Zeitreihen-Diagramme schlüsseln diese Werte weiter auf. Hinzu kommen Statistiken zu Prozessen, Interrupts, Soft-IRQs oder IPC Semaphoren.

Die Memory-Statistik enthält noch Charts zu Page Faults oder zur Größe der Speicherstrukturen des Kernels. Die Disk-Statistiken weisen unter anderem geschriebene und gelesene Megabytes sowie I/O-Operationen pro Medium aus und geben beispielsweise Auskunft über die Größe des Backlog, also der noch ausstehenden I/O-Operationen.

Auf die CPU-Auslastung pro Core folgen Graphen zur Anzahl der Interrupts und Soft-IRQs, ebenfalls pro virtueller CPU. Die Abschnitte mit Netzwerkstatistiken weisen – getrennt nach IPv4 und IPv6 – Angaben zu Packets und Errors, zu einzelnen Protokollen (TCP, UDP, ICMP), zu Broadcasts und Multicasts oder zur Fragmentierung aus. Auch zur Netfilter-Firewall sind Daten vorhanden.

Schließlich gibt es noch umfangreiche Statistiken zu einzelnen Applikationen, wie am Beispiel MySQL weiter oben demonstriert.

Fazit

Wer Daten für eine Baseline sammeln oder ein Problem lange in die Vergangenheit zurückverfolgen will, der liegt bei Netdata falsch, denn das Tool sagt stets nur, was im Moment passiert. Diesen Zustand kann der Admin zwar in einem Snapshot konservieren und dann in Ruhe analysieren. Mehr als fünf Minuten kann er aber auch damit nicht festhalten. Innerhalb dieses Zeitraums lässt sich das Befinden des Systems allerdings aus Hunderten Blickwinkeln unter die Lupe nehmen. Vermissen dürfte der Admin dabei jedenfalls kaum etwas.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
1 Kommentar
Älteste
Neuste Beste Bewertung
Chris Akritidis
7 Jahre her

Thank your for the article. Actually Netdata can take snapshots longer than 5 minutes. A snapshot saves whatever is visible on the dashboard. The dashboard contents can be affected by the zoom (+- buttons on the charts). So you can view the period you are interested in and save exactly what you see on the screen.

Nach oben