Das Duo Nmon und Nmonchart sammelt komplexe Systemdaten und bereitet sie zu übersichtlichen Grafiken auf.
Moderne Rechner und ihre Komponenten bieten in der Regel genügend Leistung, um selbst anspruchsvolle Aufgaben zu meistern. Dennoch kommt es immer wieder vor, dass ein Flaschenhals die Geschwindigkeit des gesamten Systems verringert. Dann gilt es, mithilfe eines geeigneten Monitoring-Programms die Ursache zu ermitteln. Dabei geht Ihnen Nmon zur Hand, das ursprünglich von IBM für das hauseigene Betriebssystem AIX entwickelt wurde.
Das seit 2009 unter der GNU GPLv3 stehende Programm findet sich in den Repositories aller gängigen Distributionen. Die Arbeit an der Software schreitet jedoch rasch voran, sodass auf der Webseite des Projekts häufig eine neuere Version bereitsteht. Es empfiehlt sich, stets die neueste Variante zu nutzen, da sich teilweise die Syntax der Befehle im Vergleich zu alten Releases ändert.
Die Entwickler liefern Binärpakete für etliche Distributionen, alternativ greifen Sie zum jeweils aktuellsten Quellcode [1]. Die Binaries für mehrere Distributionen liegen in einem Tar-Archiv auf der Webseite, das Sie nach dem Download mit dem Befehl tar -xzvf nmonVersion_x86.tar.gz entpacken. Anschließend benennen Sie das für die von Ihnen verwendete Distribution passende Binärpaket von nmonVersion_x86_Distri in nmon um und versorgen es durch den Befehl chmod +x nmon mit den notwendigen Rechten. Dann verschieben Sie es in ein beliebiges Verzeichnis und rufen es von dort aus auf.
Es empfiehlt sich, das Programm zunächst mit der Hilfe aufzurufen, da Nmon über außerordentlich viele Parameter verfügt. Dazu geben Sie am Prompt den Befehl ./nmon -h ein. Alternativ steht ein Wiki bereit, das neben der Installation die verschiedenen Funktionen der Software erläutert [2]. Um das Monitoring der einzelnen Komponenten vorzunehmen, rufen Sie die Software zunächst ohne Parameter auf und wählen anschließend bei laufendem Programm die gewünschten Komponenten (Abbildung 1).

Abbildung 1: Die Monitoring-Software Nmon zeigt Lastspitzen auf einem Rechner nahezu in Echtzeit an.
Die einzelnen Monitoring-Ansichten erscheinen nun untereinander im Terminal angeordnet; in regelmäßigen Abständen aktualisiert die Software die Daten. Voreingestellt beträgt das Intervall zum Auffrischen zwei Sekunden, bei Bedarf modifizieren Sie diesen Wert.
Sammlung
Insbesondere, wenn Sie zu Dokumentationszwecken eine genaue Analyse der Hardware vornehmen und anschließend in einer Datei speichern möchten, leistet Nmon gute Dienste. Sie rufen es dazu mit dem Schalter -f auf und geben bei Bedarf über die Parameter -c und -s die Anzahl der Schnappschüsse und die Zeitabstände dazwischen in Sekunden an.
Das Tool zeigt die gesammelten Daten nun nicht mehr am Bildschirm an, sondern schreibt sie direkt in eine Datei mit dem Suffix .nmon im selben Verzeichnis, aus dem Sie die Software gestartet haben. Möchten Sie die Datei in einem bestimmten Pfad sichern, so fügen Sie der Befehlszeile noch den Parameter -m mit dem Ziel an. Die im CSV-Format vorliegende Datensammlung öffnen Sie anschließend mit einer Tabellenkalkulation. Hier finden Sie, sauber in Spalten untereinander aufgelistet, alle Daten, wobei die Datei mehrere Seiten umfasst.
Für eine bessere Übersicht empfiehlt es sich, die Daten grafisch aufzubereiten. Dazu dient das Skript Nmonchart vom selben Entwicklerteam [3]. Nach dem Herunterladen und Entpacken des Archivs wechseln Sie ins Programmverzeichnis und rufen die Software mit dem Befehl aus der ersten Zeile von Listing 1 auf, wobei Sie den Namen der Dateien jeweils um einen Pfad erweitern dürfen. Allerdings setzt Nmonchart zum Ausführen des Skripts intern die Korn Shell voraus. Da nur wenige Enterprise-Distributionen sowie Mageia “Cauldron” diese direkt installieren, müssen Sie meist den Befehl aus der zweiten Zeile von Listing 1 verwenden.
Listing 1
$ ./nmonchart Datei.nmon Datei.html $ bash nmonchart Datei.nmon Datei.html
Das Programm generiert aus den von Nmon erfassten Daten eine HTML-Datei und legt sie im angegebenen Verzeichnis ab. Nach dem Öffnen der Datei im Browser zeigt dieser die Daten optisch ansprechend und übersichtlich aufbereitet an (Abbildung 2). Über die oben in der Seite angeordneten Schaltflächen rufen Sie die Daten der einzelnen Hard- und Softwarekomponenten auf, wobei die Grafiken teilweise Zusatzinformationen anzeigen, sobald Sie mit dem Mauszeiger darüberfahren.

Abbildung 2: Haben Sie mit Nmon Daten zu einem System in einer Datei gespeichert, so erzeugen Sie mit Nmonchart aus diesen Grafiken, die das Interpretieren der Werte vereinfachen.
Zeitplan
Mithilfe eines Cronjobs beziehungsweise Systemd-Timers [4] lässt sich Nmon auch regelmäßig ausführen. Das ist vor allem bei Servern sinnvoll, die in der Regel stärker beansprucht werden als Arbeitsplatz-PCs. Regelmäßige Durchläufe mit entsprechenden Protokollen helfen außerdem dabei, die neue EU-Datenschutzgrundverordnung (DSGVO) entsprechend den Technisch-Organisatorischen Maßnahmen (TOM) umzusetzen.
Um einen Cronjob zu erstellen, legen Sie im Terminal ein Shell-Skript an (Listing 2), das die einzelnen Parameter beim Aufruf vorgibt. Es empfiehlt sich, dabei nur jene Parameter zu berücksichtigen, die für die spezifische Hardware relevant sind. Nach dem Speichern versehen Sie das Skript mit den passenden Rechten zum Ausführen. Anschließend tragen Sie es mithilfe des Befehls crontab -e, der den Editor Vi nutzt, in die Crontab-Datei ein. Nun führt das System die Software zum vorgegebenen Zeitpunkt automatisch aus (Listing 3).
Listing 2
#!/bin/sh nmonDir="/opt/nmonitor" /usr/bin/nmon -t -f -s 120 -c 30 -m $nmonDir
Listing 3
00 12 * * * ~/nmon.sh
Nutzt Ihr System schon Systemd, dann legen Sie je eine passende Service- (Listing 4) und Timer-Datei (Listing 5) an. Diese müssen vor der jeweiligen Endung denselben Namen tragen. Nachdem Sie die Dateien an die passenden Stellen im Dateisystem platziert haben, aktivieren Sie den Timer mit dem Befehl systemctl start nmon.timer. Der Aufruf systemctl enable nmon.timer sorgt dafür, dass er dauerhaft aktiv bleibt. Möchten Sie mehr über Systemd und den Cron-Ersatz erfahren, lohnt sich ein Blick in den Schwerpunkt der LU-Ausgabe 07/2018.
Listing 4
# Datei nmon.service [Unit] Description=nmon [Service] Type=oneshot ExecStart=~/nmon.sh
Listing 5
# Datei nmon.timer [Unit] Description=nmon timer [Timer] OnCalendar=*-*-* 12:00 [Install] WantedBy=timers.target
Fazit
Das Duo Nmon und Nmonchart erweist sich als intuitiv bedienbares, jedoch sehr mächtiges Werkzeugpaket für das Monitoring eines Rechners. Aufgrund der enormen Parameteranzahl müssen Sie sich allerdings eventuell gründlich in Nmon einarbeiten, bis es Ihnen gelingt, alle gewünschten Hardwarekomponenten zu überwachen. Läuft das Tool jedoch erst einmal, lässt sich die Datenerfassung leicht automatisieren. Dank der Ncurses-Oberfläche eignet sich Nmon zudem, um aus der Ferne auf Rechnern nach dem Rechten zu schauen, selbst wenn diese kein X-Window-System nutzen. Als besonders hilfreich erweist sich das grafische Aufbereiten der gewonnenen Daten mithilfe von Nmonchart. Es generiert aus den oft sehr umfangreichen und wenig übersichtlichen Nmon-Tabellen eine HTML-Seite, die alle interessanten Daten per Mausklick liefert.
Infos
-
Nmon-Wiki: http://nmon.sourceforge.net/pmwiki.php
-
Nmonchart: http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmonchart
-
Systemd-Timer: Tim Schürmann, “Eingebauter Wecker”, LU 07/2018, S. 24, https://www.linux-community.de/40310





