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 ausgeliefert).
# 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:
- Systempufferaktivität
- Informationen über Systemaufrufe
- Blockgeräteinformationen
- Gesamtauslagerungsinformationen
- Semaphore- und Speicherzuweisungsinformationen
- 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
Wie kann ich die Metriken eines bestimmten Tages mit SAR in Linux abrufen
# 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
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
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.