Systemueberwachung mit sysstat

Aus Linupedia
Wechseln zu: Navigation, Suche

Systemüberwachung mit sysstat

Höhe=24px
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)