Beispiele für die Verwendung des SAR-Befehls zur Systemüberwachung in Linux

, Author

System Activity Reporter ist ein wichtiges Werkzeug, das Systemadministratoren hilft, einen Überblick über den Server mit dem Status verschiedener wichtiger Metriken zu verschiedenen Zeitpunkten zu erhalten.

Angenommen, Sie haben derzeit ein Problem mit dem System, so wie einige Ihrer Kunden nicht in der Lage sind, einige Daten aus der Datenbank aufzulisten. Das erste, was die meisten Linux-Systemadministratoren tun, ist, sich an das gleiche Problem zu erinnern, wenn es früher aufgetreten ist, und wenn Sie sich an den Tag des früheren Auftretens erinnern, dann können Sie leicht die internen Systemstatistiken mit den aktuellen Statistiken vergleichen.

SAR ist sehr hilfreich, um genau das zu tun.

Das erste, was wir tun müssen, ist zu überprüfen und zu bestätigen, ob Sie SAR-Dienstprogramm auf der Maschine installiert haben. Das kann überprüft werden, indem man alle rpm’s auflistet und nach diesem Dienstprogramm sucht.

SAR ist eines der Dienstprogramme innerhalb von sysstat. Sie können es ganz einfach über YUM herunterladen und auf Ihrem Rechner installieren. (Aber keine Sorge, die meisten Distributionen werden mit dem sysstat Tool ausgeliefertsmiley).

# yum install sysstat

Ja, aber stellen Sie sicher, dass Sie epel, rpmformge Repository für die Installation aktiviert haben. Andernfalls ist deine Distributions-DVD ein guter Ort, um nach dem Paket zu suchen.

SAR (System Activity Reporter) gibt Informationen über die folgenden Dinge:

  1. Systempufferaktivität
  2. Informationen über Systemaufrufe
  3. Blockgeräteinformationen
  4. Gesamtauslagerungsinformationen
  5. Semaphore- und Speicherzuweisungsinformationen
  6. CPU-Auslastung und Prozessbericht

Das Wichtigste, was wir in Bezug auf SAR verstehen müssen, ist, dass alles mit einem Cron gemacht wird. In vielen Linux-Distributionen gibt es standardmäßig eine Datei namens /etc/cron.d/sysstat.

Lassen Sie uns sehen, wie SAR wirklich funktioniert.

Wenn wir über Systemüberwachung nachdenken, dann muss das Tool alle Daten über die verschiedenen Aspekte des Systems haben und alle Zeitintervalle abdecken. Das bedeutet, dass ein Überwachungssystem in der Lage sein muss, die Statistiken der Maschine für einen bestimmten Zeitraum zu liefern.

Es gibt keinen anderen Weg, als alle Metriken und Statistiken der Maschine in einem bestimmten Zeitintervall zu erfassen. Eine Verkürzung des Zeitintervalls für die Erfassung der Statistiken wird die Menge an detaillierten Statistiken erhöhen, die wir haben (weil wir mehr Daten über das System haben werden).

SAR macht genau das. sar erfasst die Statistiken verschiedener Aspekte der Maschine in einem bestimmten Zeitintervall. SAR läuft also über CRON.

# cat /etc/cron.d/sysstat# run system activity accounting tool every 10 minutes*/10 * * * * root /usr/lib64/sa/sa1 1 1# generate a daily summary of process accounting at 23:5353 23 * * * root /usr/lib64/sa/sa2 -A
  • Aus der obigen Cron-Datei für SAR geht also hervor, dass das Skript „sa1“, das sich unter „/usr/lib64/sa/“ befindet, alle 10 Minuten ausgeführt wird
  • Und am Ende des Tages wird auch ein Skript /usr/lib64/sa/sa2 um 23 Uhr ausgeführt.53

Der erste Cron-Eintrag für SAR (/usr/lib64/sa/sa1) wird also alle 10 Minuten ausgeführt, was wiederum das sadc-Dienstprogramm aufruft, um Systemstatistiken zu sammeln und in einer Binärdatei zu speichern (eine Datei pro Tag)

Und der zweite Cron-Eintrag wird den gesamten Inhalt dieser Binärdatei in eine andere Textdatei ausgeben, und löscht Daten, die älter als eine bestimmte Anzahl von Tagen sind, normalerweise 7 Tage (was in der folgenden Datei erwähnt wird),

# cat /etc/sysconfig/sysstat# Wie lange die Logdateien aufbewahrt werden sollen (Tage), das Maximum ist ein MonatHISTORY=7

So können Sie diesen HISTORY-Eintrag leicht ändern, indem Sie die Datei bearbeiten.

Auch wenn die Systemstatistiken alle 10 Minuten durch cron gesammelt werden (ändern Sie cron so, dass es alle 1 Minute läuft, um genauere Informationen zu erhalten), wenn Sie die Statistiken sehen wollen, müssen Sie den folgenden Befehl ausführen.

Die einfache Ausgabe des sar-Befehls ist wie folgt dargestellt.

12:00:01 AM CPU %user %nice %system %iowait %steal %idle12:01:01 AM all 73.28 0.00 1.25 0.00 0.00 25.4712:02:01 AM all 7.83 0.00 0.44 0.00 0.00 91.7312:03:01 AM alle 61.65 0.00 0.70 0.00 0.00 37.6612:04:01 AM alle 57.85 0.00 0.82 0.00 0.00 41.3412:05:01 AM alle 4.25 0.00 0.41 0.00 0.00 95.3412:06:01 AM alle 4.20 0.00 0.22 0.00 0.00 95.5812:07:01 AM all 5.05 0.00 0.33 0.00 0.00 94.6312:08:01 AM all 4.76 0.00 0.06 0.00 0.00 95.1812:09:01 AM all 37.57 0.00 0.37 0.00 0.00 62.0512:10:01 AM all 70.04 0.00 0.80 0.00 0.00 29.1612:11:01 AM all 5.03 0.00 0.12 0.00 0.00 94.84

Aus der Ausgabe ist ersichtlich, dass sie mir die Ausgabe der gesammelten Statistiken für jede Minute anzeigt (was bedeutet, dass ich meinen Cron in einem 1-Minuten-Intervall laufen lasse), und die Details des ganzen Tages anzeigt (oder die Details anzeigt, die bis zu dem Zeitpunkt gesammelt wurden, an dem Sie den Befehl eingegeben haben).

Verstehen der Ausgabe des SAR-Befehls

%user: Dies zeigt die Gesamtzeit an, die der Prozessor für verschiedene Prozesse aufwendet YCX5UKN5ZKEJ

%sys: dies zeigt den prozentualen Anteil der Zeit an, die der Prozessor für Betriebssystemaufgaben aufwendet (weil der vorherige Benutzer die Zeit anzeigt, die für den Benutzerendprozess aufgewendet wird)

%iowait: der Name iowait selbst deutet darauf hin, dass es die Zeit ist, die der Prozessor für das Warten auf Geräte aufwendet (Eingabe und Ausgabe)

%nice: Die meisten von euch werden wissen, dass ein Benutzer die Priorität eines Prozesses in Linux ändern kann, indem er den nice-Wert in Linux ändert. Diese Tabelle zeigt die von der CPU verbrauchte Zeit für Prozesse, deren Nice-Wert geändert wurde.

%steal: Diese Spalte zeigt die Zeit an, die eine CPU (die virtualisiert ist) für Ressourcen von der physischen CPU aufwendet.

%idle: Dies deutet auf die Leerlaufzeit hin, die der Prozessor aufwendet.

Standardmäßig speichert sar alle seine Daten unter /var/log/sa/ und die Tage werden wie unten gezeigt benannt.

s01 – für den ersten Tag des Monats

s02 – für den zweiten Tag des Monats

s03,s04..und so weiter.

-d Option im SAR Befehl

Diese -d Option kann verwendet werden, um jede Aktivität in Bezug auf verschiedene Geräte, die an das System angeschlossen sind (Blockgeräte) zu melden. Eine typische Ausgabe des sar-Befehls mit der Option -d ist unten dargestellt.

12:00:01 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util12:01:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:01:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:01:01 AM dev8-0 55.62 9.98 8317.87 149.72 13.68 245.96 2.61 14.5212:01:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev8-0 1.55 0.00 35.29 22.70 0.01 7.26 1.86 0.2912:02:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:03:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:03:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

DEV: diese Spalte benennt die Geräte auf der Maschine, entsprechend den Major- und Minor-Nummern eines Linux-Blockgeräts. Sie können dies überprüfen, indem Sie ein ls -l im Verzeichnis /dev ausführen, wie unten gezeigt.

brw-r----- 1 root disk 8, 0 Nov 16 16:29 sdabrw-r----- 1 root disk 8, 1 Nov 16 16:29 sda1brw-r----- 1 root disk 8, 2 Nov 16 16:29 sda2

in der oben gezeigten „ls -l“ Ausgabe für „sda“ ist die major Nummer „8“ und die minor Nummer „0“.So können Sie die in der Ausgabe des sar-Befehls genannte Festplatte leicht identifizieren.

tps: tps steht für „transfer per second“, es zeigt also den Transfer pro Sekunde auf diesem bestimmten Gerät an

rd_sec/s: dies zeigt die Gesamtzahl der Sektoren auf diesem Gerät, die gelesen werden

wr_sec/s: wenn rd_sec/s die Sektoren sind, die pro Sekunde gelesen werden, dann ist wr_sec natürlich die Anzahl der Sektoren, die pro Sekunde geschrieben werden.

avgrq-sz: diese Spalte zeigt den Durchschnitt an.

await: dies zeigt die Gesamtzahl der Zeit, die der Prozessor auf IO-Anfragen gewartet hat

%util: diese Spalte zeigt die prozentuale Auslastung der CPU, wenn die Anfrage generiert wurde

Speicherauslastung im SAR-Befehl anzeigen

die Option -r im SAR-Befehl ist sehr nützlich. Es zeigt den Speicher, Swap, Cache-Speicher usw. in jedem Intervall oder gewünschten Zeitintervall.

02:20:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad02:30:01 AM 609500 1487652 70.94 242420 777560 1075980 364 0.03 36002:40:01 AM 609500 1487652 70.94 242424 777568 1075980 364 0.03 36002:50:01 AM 609500 1487652 70.94 242424 777592 1075980 364 0.03 36003:00:01 AM 608980 1488172 70.96 242424 777600 1075980 364 0.03 36003:10:01 AM 608584 1488568 70.98 242424 777628 1075980 364 0.03 36003:20:01 AM 608584 1488568 70.98 242424 777648 1075980 364 0.03 360
In der obigen Ausgabe sind die meisten Spalten selbsterklärend (und die meisten Ausgaben sind in KB).
kbmemfree: zeigt die Menge des freien Speichers an
Kbmemused: genutzter Speicher
%memused: Prozentsatz des genutzten Speichers
kbbuffers: vom Kernel genutzter Pufferspeicher.
kbcached: vom Kernel benutzter Cache-Speicher
alle anderen Einträge für Speicher sind Swap (frei, benutzt, Prozentsatz usw.)

Wie kann ich die Metriken eines bestimmten Tages mit SAR in Linux abrufen

Wie bereits erwähnt, werden alle Metriken für einen bestimmten Tag in sa<Tag des Monats> gespeichert. Wenn ich also meine Metriken für den 27. Tag des Monats wissen will, kann ich das leicht herausfinden, wie unten gezeigt.
# sar -f /var/log/sa/sa27Linux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM CPU %user %nice %system %iowait %steal %idle02:30:01 AM all 2.58 0.00 0.70 1.12 0.05 95.5502:40:01 AM all 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM all 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM all 3.27 0.00 0.71 1.12 0.04 94.86
Im obigen Befehl haben wir /var/log/sa/sa27 als Argument übergeben, da ich die Statistiken für diesen Tag brauchte.Übergeben Sie den sa<Tag des Monats>wie im obigen Befehl

Wie holt man SAR-Metriken für eine bestimmte Zeit an einem bestimmten Datum

das kann erreicht werden, indem man ein weiteres Argument wie unten gezeigt übergibt.

# sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00Linux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM CPU %user %nice %system %iowait %steal %idle02:30:01 AM all 2.58 0.00 0.70 1.12 0.05 95.5502:40:01 AM all 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM all 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM all 3.27 0.00 0.71 1.12 0.04 94.8603:10:01 AM alle 2.72 1.06 0.75 1.09 0.04 94.33Durchschnitt: alle 2.76 0.21 0.70 1.11 0.04 95.18
Im oben gezeigten Beispiel habe ich sar gebeten, die Metriken zwischen 2:20:00 und 3:20:00 am 27. Tag des Monats zu holen
Sie können sogar jede andere Metrikoption zusammen mit dem Zeitintervall übergeben…wie -d oder -r
Haben Sie es bemerkt? SAR kann uns genau die Maschinenstatistiken eines bestimmten Tages zu einer bestimmten Zeit anzeigen…so ist es viel einfacher, die Engpässe zu identifizieren.
Wenn Sie die Option -A zusammen mit dem obigen Befehl verwenden, werden ALLE (alle von sar gesammelten Metriken) angezeigt.
sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00 -A
Die Ausgabe wird ausführlich sein. und Sie werden fast alles in sar mit der Option -A auf Ihrem Bildschirm sehen!

Netzwerkstatistiken mit dem sar Befehl anzeigen

sar Befehl zeigt sogar Netzwerkstatistiken. Dies kann mit der Option -n DEV im sar-Befehl gemacht werden.

# sar -n DEVLinux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s02:30:01 AM lo 0.01 0.01 0.77 0.77 0.00 0.00 0.0002:30:01 AM eth0 12.30 0.12 1285.06 27.59 0.00 0.00 0.0002:30:01 AM eth1 14.45 0.00 1399.34 0.00 0.00 0.00 0.00 0.0002:30:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0002:40:01 AM lo 0.01 0.01 0.77 0.77 0.00 0.00 0.0002:40:01 AM eth0 10.65 0.12 1139.38 27.00 0.00 0.00 0.00 0.0002:40:01 AM eth1 13.96 0.00 1352.87 0.00 0.00 0.00 0.00

IFACE: steht für den Schnittstellennamen der nic-Karte

rxpck/s: zeigt die insgesamt empfangenen Pakete pro Sekunde

txpck/s:gesendete Pakete pro Sekunde

rxcmp/s: empfangene komprimierte Pakete

txcmp/s: gesendete komprimierte Pakete

rxmcst/s: multicasted Pakete pro Sekunde.

Einige andere Metriken, die mit sar ermittelt werden können

-y Option in sar: kann verwendet werden, um tty Details zu ermitteln

-X Option in sar, um Details eines bestimmten Prozesses zu erhalten. Sie müssen pid als Argument an diese Option übergeben.

-n SOCK Option in sar: diese Option wird alle Socket-Details melden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.