Systemueberwachung mit sysstat
Inhaltsverzeichnis
Systemüberwachung mit sysstat
Dieses HOWTO zu Linux oder der Abschnitt davon braucht eine Überarbeitung. Weitere Informationen findest Du hier. Deine Hilfe ist gefragt, das HOWTO zu verbessern. Danach entsorge bitte diese Signierung. |
ist etwas in die Jahre gekommen, werde ihn demnächst mal überarbeiten. Prinzipell funktioniert noch alles genauso, einiges sogar jetzt besser. Robi 18:54, 11. Jul. 2009 (UTC)
Allgemeines
Das Paket sysstat nutzt das /proc Verzeichniss, um Daten über die Aktivitäten des Rechners zu gewinnen. Den Großteil der Programme und Scripe mit identischen oder weitaus ähnlichen Optionen gibt es auch in anderen UNIX-BS, auch wenn dort das /proc Verzeichniss prinzipiell anders arbeitet, die Funktionsweise ist gleich. Ebenso gleich die Tatsache das man auch als "normaler" User diese Programme nutzen kann, und nicht auf die ROOT-Kennung angewiesen ist.
Inhalt und Verwendungsmöglichkeiten
Dreh und Angelpunkt ist das Program sar. Daneben gibt es noch iostat und mpstat sowie das Hilfsprogramm sadc und einige Hilfsscripte. Geeignet sind dieses Tool sowohl für die Anzeige der aktuellen Aktivitäten sowie auch für das Logging der Aktivitäten und das spätere Anzeigen der Aktivitäten aus dem Logfile.
In Verbindung mit speziellen Scripten und Tools, sind auch grafischen Aufarbeitungen und Einbindungen in eigene Tools und Programme leicht möglich. Gerne werden diese Tools auch zur Fehlereingrenzung mit herangezogen, wenn es zB. sporatisch auftretende Unregelmäßigkeiten im System gibt.
/usr/bin/sar
Mit diesem Programm lassen sich alle Werte in einer leicht aufzuarbeitenen tabellelarischen Form ausgeben. Als Dateneingabe kann sowohl die aktuellen Daten in /proc als auch gesammelte Werte in einer binären Logdatei genutzt werden. Das hat den Vorteil, ich kann erst einmal alle Daten einsammeln und dann gezielt mit sar herausfiltern was interessiert. Unter anderem kann man CPU, Memory, Netzwerk, Interrups, Filesystem und IO-Aktivitäten der Block- und CharDevices gezielt auswählen.
Um die aktuellen Werte anzuzeigen müssen 2 Zahlenwerte eingegeben werden
- der Erste die Anzahl der Sekunden in denen die Aktivitäten untersucht werden sollen
- der Zweite für die Anzahl der Untersuchungen.
- Werden diese Optionen nicht mit angegeben, versucht sar die aktuelle Logdatei auszuwerten.
- sar --help
- ergibt eine Vielzahl möglicher Optionen
- man sar
- hilft die richtigen Optionen zu finden
sar Beispiele
localhost:/ > sar 5 3 20:58:20 CPU %user %nice %system %iowait %idle 20:58:25 all 0.20 0.00 0.00 0.40 99.40 20:58:30 all 0.00 0.00 0.60 0.00 99.40 20:58:35 all 0.00 0.00 0.00 0.00 100.00 Average: all 0.07 0.00 0.20 0.13 99.60
default gibt sar die momentane Prozessorauslastung aus wobei hier in diesem Beispiel eine Untersuchungszeit von 5 Sekunden 3 Mal hintereinander und anschließend noch der Durchschnitt der eben durchgeführten Messung in Tabellenform ausgegeben wird.
localhost:/ > sar -n DEV 5 2 21:06:56 IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 21:07:01 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 21:07:01 eth0 1.80 2.61 149.10 1075.55 0.00 0.00 0.00 21:07:01 IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 21:07:06 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 21:07:06 eth0 2.20 2.80 158.80 863.00 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth0 1.40 1.80 108.27 645.47 0.00 0.00 0.00
die Option -n Untersucht die Statistik der Networkdevices.
- In Verbindung mit DEV sehen wir die Anzahl und die Byte der Ein- und Ausgehenden Pakete je Sekunde.
- SOCK gibt uns die Anzahl der genutzten Sockets
- EDEV und FULL zeigen auch die Fehler an diesen Schnittstellen.
localhost:/ > sar -x 5410 5 2 21:50:00 PID minflt/s majflt/s %user %system nswap/s CPU 21:50:05 5410 0.80 0.00 99.80 0.00 0.00 0 21:50:10 5410 0.80 0.00 99.80 0.00 0.00 0 Average: 5410 0.80 0.00 99.80 0.00 0.00
hier wird der Prozess mit der PID 5310 untersucht, wir sehen hier ua. die Prozessaulastung und bei Mehrprozessorsystemen auch die CPU auf denen der Prozess läuft, so lassen sich die Aktivitäten eines Prozesses über einen längeren Zeitraum sammeln.
/usr/bin/iostat
Diese Programm ist Optimiert auf die Anzeige der Aktivitäten in Verbindung mit den Festplattenzugriffen. das kann zwar sar auch, aber lange nicht so schön, es gibt ein paar einfache Optionen man iostat hilft weiter
localhost:/ > iostat -x avg-cpu: %user %nice %sys %iowait %idle 10.88 0.00 1.14 0.88 87.10 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util fd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2.00 0.00 46.00 46.00 0.00 hda 0.09 0.00 0.00 0.00 0.15 0.00 0.08 0.00 49.42 0.00 36.62 36.62 0.01 sda 5.05 1.30 1.93 0.83 90.25 17.22 45.12 8.61 38.89 0.10 34.48 4.79 1.32
/usr/bin/mpstat
Dieses Programm ist speziell auf die Aktivitäten der CPUs optimiert, Hier lassen sich bei Multiprozessorsystemen auch für jede CPU die Aktivitäten einzeln anzeigen, ist also geeignet für die Untersuchung wenn zB Prozesse an CPUs gebunden werden, oder zB wenn einzelne CPUs komplett oder für die Annahme von Interrups gesperrt sind.
localhost:/ > mpstat 3 5 22:01:53 CPU %user %nice %system %iowait %irq %soft %idle intr/s 22:01:56 all 100.00 0.00 0.00 0.00 0.00 0.00 0.00 1100.33 22:01:59 all 100.00 0.00 0.00 0.00 0.00 0.00 0.00 1088.00 22:02:02 all 100.00 0.00 0.00 0.00 0.00 0.00 0.00 1100.67 22:02:05 all 99.67 0.00 0.33 0.00 0.00 0.00 0.00 1083.06 22:02:08 all 99.67 0.00 0.00 0.00 0.33 0.00 0.00 1092.69 Average: all 99.87 0.00 0.07 0.00 0.07 0.00 0.00 1092.93
/usr/lib/sa/sadc
Mit Hilfe dieses Hilfsprogramms lassen sich Logfiles der Systemaktivitäten aufzeichnen. Es gibt einige Optionen mit denen man geziehlt wieder die Untersuchungszeitspanne und die Anzahl der Einträge sowie der Name der Logfile angeben kann. Das Default Verzeichniss für die Logfiles ist /var/log/sa der Defaultdateiname ist sa?? wobei ?? für den Tag innerhalb des Monates steht. Diese Dateien lassen sich dann gezielt mir sar ananlysieren.
localhost:/ > /usr/lib/sa/sadc 1 100 -
legt zB die Datei /var/lib/sa/sa?? an und Protokolliert 100 Sekunden lang jede Sekunde alle Systemaktivitäten in diesem File. mit sar kann dann zB die CPU Aktivität im Sekundentakt aus dieser Datei anzeigt werden.
localhost:/ > sar 22:23:14 CPU %user %nice %system %iowait %idle 22:23:16 all 0.00 0.00 0.00 1.01 98.99 22:23:17 all 0.00 0.00 0.00 2.00 98.00 22:23:18 all 0.00 0.00 0.00 1.00 99.00 22:23:19 all 0.99 0.00 0.99 1.98 96.04 22:23:20 all 0.00 0.00 0.00 1.00 99.00 22:23:21 all 0.00 0.00 0.99 0.00 99.01 22:23:22 all 0.00 0.00 0.00 2.00 98.00
/usr/lib/sa/sa1 und /usr/lib/sa/sa2
Mit dem Script sa1 wird das Programm sadc für das Logging gesteuert. Die Dateien die von diesen Scripten erzeugt werden tragen Namen wie zB. sa.2005_07_05 Mit sa2 wird eine mit sa1 erzeugte Datei mittels sar in eine lesbare Auswertungsdatei namens sar.2005_07_05 übersetzt. Dabei wird in sa2 noch dafür gesorgt, dass Dateien älter als 7 Tage gelöscht werden. Diese Scripte lösen uA auch Konqurierende Zugriffe auf diese Logdateien und sind für den Start als cron-Jobs geeignet.
localhost:/ > crontab -l -*/10 * * * * /usr/lib/sa/sa1
Mit dieser Zeile dieser Root-Crontab wird zB. alle 10 Minuten die Systemaktivität gelogt.
/etc/sysstat.cron
Im Paket sysstat gibt es auch eine eigene Cronsteuerungsdatei und ein Runlevelscript welches aber per default nicht im Runlevel 3 und 5 gestartet wird. /etc/rc.d/sysstat start würde diese Cronsteuerung aktivieren die folgende Crontabelle wird per default aktiviert
localhost:/ > more /etc/sysstat.cron #crontab for sysstat #activity reports every 10 minutes everyday -*/10 * * * * root /usr/lib/sa/sa1 #update reports every 6 hours 0 */6 * * * root /usr/lib/sa/sa2 -A
/usr/bin/isag
Es gibt da auch noch ein script mit dem man eine grafische Auswertung der so aufgezeichneten Systemaktivitätslogdateien vornehmen kann. Allerdings ist dieses Programm wohl ehr eine Beispiel wie man so was mit einem Script machen kann.
Diese script kann man aus der KDE starten. Zur Auswertung kommen, nur Dateien mit folgendem Namensformat /var/log/sa/sa?? , die Dateien aus den Scripten sa1 müssen erst auf einen solchen Namen verlinkt werden, um sie anzeigen zu lassen.
Zu beachten ist, dass die Grafiken nur dort einigermaßen brauchbare Grafen bringt, wo man längere Zeiträume und keine reboots in der zu untersuchenden Logdatei hat, aber für kleinere Server kann man da sicher schon was brauchbares zur Systemüberwachung finden.
Leider ist in der hier getesteten Version die Netzwerkgrafik nicht integriert.
Ich hoffe das hilft euch weiter, mit ein bissel Bastelarbeit lassen sich recht brauchbare Sachen damit anfangen.
Robi 09:34, 4. Sep 2006 (CEST)