Performance-Werte über längere Zeit sammeln und auswerten

Sergey Nivens, 123RF

Der Buchhalter des Systems

Für eine Momentaufnahme der System-Performance bieten sich etliche Tools an: Angefangen bei "top" oder "uptime" bis zu "iostat", "netstat" und "mpstat". Was aber, wenn man von einem Engpass erst erfährt, nachdem er sich ereignet hat? Für "sar" ist auch das kein Problem.
Drahtlose Netzwerke sind überall: Zu Hause, im Café und in der Firma. Im Gegensatz zu Kabelnetzen verliert der Admin bei WLANs allerdings schnell die ... (mehr)

Sar, mit vollem Namen System Activity Reporter, ist ein eher unscheinbares kleines Kommandozeilentool, das ursprünglich aus der System-V-Welt stammt, aber für das Troubleshooting oder Systemtuning unter Unix/Linux auch heute unverzichtbar ist. Seine Besonderheit: Sar gibt nicht nur Ad-hoc-Auskünfte über viele PerformanceWerte, es sammelt diese Daten auch unaufhörlich und sortiert sie in tageweise organisierte binäre Logs ein.

Davon hebt sich Sar standardmäßig sieben Stück auf, kann sich aber auch einen Monat merken. Unter manchen Betriebssystemen wie Ubuntu sind auch noch länger zurückreichende Archive möglich. So lassen sich für jeden Zeitpunkt einer zurückliegenden Periode auch im Nachhinein die CPU-Auslastung oder der freie Hauptspeicherplatz, die Anzahl übertragener Netzwerkpakete oder die Geschwindigkeit des Disk-I/Os ermitteln.

Installation

Sar ist in den Repositories aller namhaften Linux-Distributionen enthalten, das Paket heißt in der Regel »sysstat« . Neben dem Binary werden dabei etliche Skripte und Cron-Einträge installiert. Im Einzelnen sind das

  • »sar« : Das Sar-Kommando dient der Anzeige der gesammelten Werte.
  • »sadc« : Der System Activity Data Collector ist der eigentliche Datensammler, der eine vorgegebene Anzahl Stichproben in bestimmten Intervallen nimmt.
  • »sa1« : Dieses Shellskript ist ein Wrapper für »sadc« , der ihm verschiedene Parameter übergeben kann und die zurückgelieferten Daten in das richtige binäre Log leitet. Die Logfiles liegen meist unter »/var/log/sa« oder »/var/log/sysstat« (Ubuntu) und heißen immer »sadd« , wobei dd die Nummer des Tages im Monat ist. Das Skript wird in der Regel alle 10 Minuten von Cron aufgerufen. Natürlich kann man das Intervall anpassen, wenn man mehr oder weniger Werte braucht.
  • »sa2« : Dieses Shellskript rotiert das tägliche Log und komprimiert auf Wunsch ältere Logs. Sa2 startet Cron-gesteuert einmal täglich.
  • »sadf« : Ist ebenfalls ein Ausgabeprogramm, diesmal speziell für den Datenaustausch. Sadf kann die gesammelten Daten in diversen Formaten aufbereiten: Etwa als Datenbank-Record oder als CSV- oder XML-Datei.

Nach der Paketinstallation ist »sar« unter RHEL/CentOS sofort einsatzbereit, unter Debian/Ubuntu muss man zuerst noch in »/etc/default/sysstat« die Variable »ENABLED« auf »true« setzen.

Damals und jetzt

Das Ausgabeprogramm Sar kann man auf verschiedene Weise aufrufen. Generell gibt man dazu an erster Stelle einen oder mehrere Schlüsselbuchstaben an, die bestimmen, welche Werte ausgegeben werden sollen ( Tabelle 1 ). Die Bedeutung der Einzelwerte erläutert die Manpage zu »sar« .

Tabelle 1

Sar-Keys für diverse Statistiken

Key

Funktion

A

Gibt alles aus. Äquivalent zu -bBdHqrRSuvwWy -I SUM -I XALL -m ALL -n ALL -u ALL -P ALL

b

I/O-Statistiken und Transferraten

B

Paging-Statistiken

C

Kommentare mit ausgeben, die Sadc eingefügt hat.

d

Aktivitäten aller Block-Devices

h

Hilfetext ausgeben

H

Hugepages Utilization Statistics

I

Statistiken für anzugebenden Interrupt

n

Zusammen mit einem weiteren Schlüsselwort oder ALL: Netzwerkstatistik

P

Prozessor-Statistiken

q

Länge der Run-Queue und Load Average

R

Memory-Statistik

S

Swap-Space-Auslastung

u

CPU-Auslastung

v

Status einiger Kernel-Tabellen etwa zu Inodes und Files

w

Task-Creation- und Task-Wechsel-Aktivität

y

TTY-Aktivitäten

Alle diese Werte können sofort abgefragt werden. Dabei kann man zusätzlich ein Intervall für die Abfragen und eine maximale Anzahl von Abfragen einstellen. Will man etwa zwei Werte für die CPU-Auslastung im 10-Sekunden-Turnus sehen, stellt man es so an wie in Listing 1 . Mit der Option »-f« kann man noch ein Tages-Log vorgeben, aus dem die Werte zu beziehen sind. Nimmt man dazu noch »-s« und »-e« für eine Start- und Endzeit, lassen sich beliebige Perioden spezifizieren ( Listing 2 ).

Listing 2

sar mit Log- und Zeit-Vorgabe

 

Listing 1

sar mit Intervall und Anzahl

 

Manche Implementierungen (beispielsweise unter SunOS) kennen außerdem ein »timex« -Kommando, dass Sar-Statistiken parallel zur Laufzeit eines anzugebenden Programms sammeln kann, etwa

timex -s make bigprogram

Unter Linux ist diese Spezialität allerdings nicht verfügbar.

comments powered by Disqus
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

Ausgabe /2023