Der Befehl Sar wird verwendet, um statistische Berichte über eine Vielzahl von Ressourcen zu erstellen, einschließlich CPU-Auslastung, Speicherauslastung, Verbrauch von E/A-Geräten, Netzwerküberwachung, Swap und Lastdurchschnitt.
SAR steht für System Activity Reporter, sehr nützliche Tools für jeden Linux-Administrator, um die Systemleistung zu überwachen und Engpässe zu untersuchen. Dieses Tool wird vom sysstat-Paket bereitgestellt.
In diesem Tutorial erfahren Sie, wie Sie das sysstat-Paket installieren und den Befehl sar unter Linux verwenden.
Sysstat-Paket installieren
Das sysstat-Paket enthält viele Dienstprogramme, die eine Sammlung von Leistungsüberwachungstools für Linux-Systeme darstellen. Sar ist ein Werkzeug, das zum Paket sysstat gehört.
Installieren des sysstat-Pakets auf RHEL und CentOS
$ sudo yum install sysstat
Sobald der Sysstat erfolgreich installiert wurde, überprüfen Sie die Installation mit dem Befehl:
$ which sar
/usr/bin/sar
Standardmäßig speichert sysstat die Serverstatistiken in der Datei „/var/log/sa/saDD“ (TT ist der Tag des Monats, zum Beispiel:/var/log/sa/sa08) und bewahrt die Daten 28 Tage lang auf. Wenn Sie die Daten länger behalten möchten, müssen Sie die sysstat-Konfigurationsdatei „/etc/sysconfig/sysstat“ ändern.
$ sudo cat /etc/sysconfig/sysstat
HISTORY=28
Ändern Sie den Wert von HISTORY
mit der Anzahl der Tage, für die Sie die Protokolle aufbewahren möchten.
Installieren des Sysstat-Pakets unter Ubuntu und Debian
$ sudo apt install sysstat
Überprüfung der Installation durch Befehl:
$ which sar
/usr/bin/sar
Unter Ubuntu müssen wir es aktivieren, während CentOS nicht benötigt wird.
Verwenden Sie Ihren bevorzugten Editor (vim, nano oder gedit), um die folgende Datei zu bearbeiten:
$ sudo nano /etc/default/sysstat
Und setzen Sie ENABLED
auf true
:
ENABLED="true"
Starten Sie den Dienst neu
$ sudo service sysstat restart
Unter Ubuntu ist die Konfigurationsdatei '/etc/sysstat/sysstat' und die Daten werden standardmäßig 7 Tage aufbewahrt.
$ cat /etc/sysstat/sysstat
HISTORY=7
Ab Fedora 21 ist sysstat standardmäßig enthalten und Sie müssen lediglich die folgenden Befehle ausführen:
$ sudo systemctl enable sysstat.service
$ sudo systemctl start sysstat.service
Es gibt einen Cron-Job für sysstat, der alle 10 Minuten läuft, um Daten zu sammeln und sie in der entsprechenden Datei /var/log/sa/saDD zu speichern. Wenn Sie das Intervall dieses Cron-Laufs ändern möchten, können Sie es in '/etc/cron.d/sysstat' ändern.
Für systemd ruft die Timer-Unit-Datei alle 10 Minuten sysstat-collect.service (/usr/lib/systemd/system/sysstat-collect.service) auf, um die Statistiken zu sammeln.
$ cat /etc/cron.d/sysstat
# Activity reports every 10 minutes everyday
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
# Additional run at 23:59 to rotate the statistics file
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
Sar-Befehlsverwendung
Die grundlegende Syntax für die Verwendung des sar-Befehls lautet wie folgt:
sar [option] [-o filename] [-f filename] [interval] [count]
Wo:
Intervall :der Zeitraum in Sekunden.
Zählung: wie oft, um Ausgabestatistiken zu erstellen.
1. CPU-Aktivität ermitteln
Standardmäßig (ohne andere Optionen) meldet der Befehl sar die CPU-Aktivität des Servers. Auch die Option -u
kann verwendet werden, um den CPU-Auslastungsbericht zu erhalten.
Wenn Sie den CPU-Aktivitätsbericht dreimal alle 2 Sekunden erhalten möchten, können Sie den folgenden sar-Befehl verwenden:
$ sar -u 2 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 09/06/2020 _x86_64_ (2 CPU)
22:26:54 CPU %user %nice %system %iowait %steal %idle
22:26:56 all 4,03 0,00 0,50 0,00 0,00 95,47
22:26:58 all 8,08 0,00 0,51 0,00 0,00 91,41
22:27:00 all 12,50 0,00 1,00 0,00 0,00 86,50
Average: all 8,21 0,00 0,67 0,00 0,00 91,11
Wo:
%Benutzer gibt den Prozentsatz der CPU-Auslastung an, der während der Ausführung auf Benutzerebene (Benutzerbereich) auftrat
%system gibt den Prozentsatz der CPU-Auslastung an, die während der Ausführung auf Systemebene aufgetreten ist (Kernel-Speicherplatz)
%leer ist der Prozentsatz der Zeit, in der die CPU oder die CPUs im Leerlauf waren und das System keine ausstehende Festplatten-E/A-Anforderung hatte.
Wenn Sie die Ausgabe in einer Datei in binärer Form erhalten möchten, müssen Sie -o
anhängen Dateiname mit dem Befehl sar. Zum Beispiel:
$ sar -u 2 3 -o log-file
Außerdem können Sie den CPU-Aktivitätsbericht eines bestimmten Tages abrufen, z. B.:09. Juni 2020. Sie finden ihn unter:
$ sudo sar -u -f /var/log/sa/sa09
2. Ermitteln Sie die CPU-Auslastung für jeden Prozessor
Das -u
Option liefert die CPU-Auslastung auf allen Prozessoren. Wenn Sie die CPU-Aktivität auf allen Prozessoren separat finden möchten, müssen Sie das -P
verwenden Option.
$ sar -P ALL 1 1
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
05:38:18 CPU %user %nice %system %iowait %steal %idle
05:38:19 all 3,03 0,00 0,00 0,00 0,00 96,97
05:38:19 0 3,96 0,00 0,99 0,00 0,00 95,05
05:38:19 1 3,00 0,00 0,00 0,00 0,00 97,00
Average: CPU %user %nice %system %iowait %steal %idle
Average: all 3,03 0,00 0,00 0,00 0,00 96,97
Average: 0 3,96 0,00 0,99 0,00 0,00 95,05
Average: 1 3,00 0,00 0,00 0,00 0,00 97,00
3. Speichernutzung ermitteln
Die Speicherauslastung (belegter und freier Speicher des Servers) über die Zeit können Sie mit dem -r
ermitteln wechseln.
$ sar -r 1 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
05:41:04 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
05:41:05 855300 3025220 77,96 0 1495276 2426864 30,55 1265008 1158172 100
05:41:06 854800 3025720 77,97 0 1495276 2426864 30,55 1265132 1158172 100
05:41:07 855032 3025488 77,97 0 1495276 2426864 30,55 1265012 1158172 100
Average: 855044 3025476 77,97 0 1495276 2426864 30,55 1265051 1158172 100
Wo:
kbmemfree gibt die Menge des verfügbaren freien Speichers in Kilobyte an.
kbmemused gibt die Menge des belegten Speichers in Kilobyte an. Dabei wird der vom Kernel selbst verwendete Speicher nicht berücksichtigt.
Wenn Sie die Speichernutzung für einen bestimmten Tag erfassen möchten, sagen Sie:Sept. 05, müssen Sie ihn mit dem folgenden Befehl ausführen:
$ sar -r -f /var/log/sa/sa05
4. Suchen Sie nach Swapping-Aktivitäten
Mit -W
können Sie die Swap-Nutzung der Maschine prüfen Option.
$ sar -W 1 3
Linux 2.6.18-274.18.1.el5 (myserver) 09/06/2012
03:31:12 PM pswpin/s pswpout/s
03:31:13 PM 16.16 0.00
03:31:14 PM 16.00 0.00
03:31:15 PM 15.84 0.00
Average: 16.00 0.00
Wo:
pswpin/s gibt die Gesamtzahl der Auslagerungsseiten an, die das System pro Sekunde eingelesen hat.
pswpout/s gibt die Gesamtzahl der Auslagerungsseiten an, die das System pro Sekunde ausgibt.
Wenn Sie die Swap-Verwendungen für einen bestimmten Tag, z. B. den 5. September, sammeln möchten, müssen Sie dies mit dem folgenden sar-Befehl ausführen:
$ sar -W -f /var/log/sa/sa05
5. Finden Sie Lastdurchschnitte über die Zeit
Mit -q
finden Sie die durchschnittliche Belastung über die Zeit Option.
$ sar -q 1 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
06:16:13 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
06:16:14 0 329 0,00 0,04 0,09 0
06:16:15 0 329 0,00 0,04 0,09 0
06:16:16 0 329 0,00 0,04 0,09 0
Average: 0 329 0,00 0,04 0,09 0
Wo:
runq-sz :Zeigt die Länge der Ausführungswarteschlange an (Anzahl der Aufgaben, die auf die Ausführungszeit warten).
plist-sz :Zeigt die Anzahl der Aufgaben in der Aufgabenliste an.
ldavg-1/5/15 :Durchschnittliche Systemlast der letzten Minute/ der letzten 5 Minuten/ der letzten 15 Minuten.
Wenn Sie die Lastdurchschnitte für einen bestimmten Tag sammeln möchten, sagen wir den 5. September, müssen Sie ihn mit dem folgenden sar-Befehl ausführen:
$ sar -q -f /var/log/sa/sa05
6. Bericht über gemountete Dateisysteme
Sie können die Statistiken für aktuelle Dateisysteme mit dem -F
abrufen Möglichkeit
$ sar -F 2 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
06:30:18 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
06:30:20 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
06:30:20 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
06:30:20 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
06:30:22 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
06:30:22 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
06:30:22 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
06:30:24 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
06:30:24 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
Summary: MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
Summary 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
Summary 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
Wenn Sie die gemounteten Dateisysteme für einen bestimmten Tag sammeln möchten, sagen Sie den 10. Juni.
$ sar -F -f /var/log/sa/sa10
7. Details zu Inodes, Kernel-Tabellen und Dateitabellen melden
Sie können die Details von Inode, Prozessen, Kernel-Threads und Dateitabellen abrufen, die vom System verwendet werden, indem Sie den Befehl sar mit -v
verwenden Option.
$ sar -v 2 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
06:57:23 dentunusd file-nr inode-nr pty-nr
06:57:25 160833 2400 132081 3
06:57:27 160833 2400 132081 3
06:57:29 160833 2400 132081 3
Average: 160833 2400 132081 3
Wo:
dentunusd :Anzahl unbenutzter Cache-Einträge im Verzeichnis-Cache
Datei-Nr: Anzahl der verwendeten Datei-Handles
Inode-Nr: Inode-Handler
pty-nr :Pseudoterminals
8. CPU-Engpass prüfen
Sie können den sar-Befehl verwenden, um herauszufinden, welche Interrupt-Nummer möglicherweise einen CPU-Engpass verursacht.
Im Beispiel unten #9
war die höchste ohne Systemunterbrechung #0
.
$ sar -I XALL 2 10
02:07:10 AM INTR intr/s
02:07:12 AM 0 992.57
02:07:12 AM 1 0.00
02:07:12 AM 2 0.00
02:07:12 AM 3 0.00
02:07:12 AM 4 0.00
02:07:12 AM 5 0.00
02:07:12 AM 6 0.00
02:07:12 AM 7 0.00
02:07:12 AM 8 0.00
02:07:12 AM 9 350.50
Details in der Datei „/proc/interrupts“ sind ebenfalls hilfreich für Sie. Der Interrupt hält die Verarbeitung vorübergehend an, damit I/O- oder andere Operationen ausgeführt werden können. Die Verarbeitung wird fortgesetzt, nachdem die spezifische Operation stattgefunden hat. Daher ist es sehr wichtig, dass jedes in der Maschine installierte Gerät mit einer Interrupt-Einstellung versehen sein muss, die nicht mit den Einstellungen kollidiert, die von der Hardware und anderen Peripheriegeräten verwendet werden.
$ sudo cat /proc/interrupts
CPU0 CPU1
0: 48 0 IO-APIC-edge timer
1: 54 0 IO-APIC-edge i8042
8: 1 0 IO-APIC-edge rtc0
9: 0 0 IO-APIC-fasteoi acpi
12: 35 116 IO-APIC-edge i8042
14: 0 0 IO-APIC-edge ata_piix
15: 0 0 IO-APIC-edge ata_piix
16: 118 2513 IO-APIC-fasteoi vmwgfx
24: 0 0 PCI-MSI-edge PCIe PME, pciehp
25: 0 0 PCI-MSI-edge PCIe PME, pciehp
26: 0 0 PCI-MSI-edge PCIe PME, pciehp
27: 0 0 PCI-MSI-edge PCIe PME, pciehp
NMI: 0 0 Non-maskable interrupts
LOC: 35392807 14792833 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
IWI: 2677624 215297 IRQ work interrupts
...
Die erste Spalte bezieht sich auf die IRQ-Nummer. Die nächste Spalte gibt den Typ des Interrupts an und die letzte Spalte enthält den Namen des Geräts, das sich im IRQ befindet.
9. Netzwerkstatistiken melden
Um den Bericht der Netzwerkstatistik zu erhalten, verwenden Sie den Befehl sar mit -n
Möglichkeit. Zum Beispiel:
$ sar -n DEV
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
19:20:23 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
19:20:24 ens192 11,00 4,00 1,80 2,75 0,00 0,00 0,00
19:20:24 lo 79,00 79,00 43,62 43,62 0,00 0,00 0,00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: ens192 11,00 4,00 1,80 2,75 0,00 0,00 0,00
Average: lo 79,00 79,00 43,62 43,62 0,00 0,00 0,00
Wo:
DEV :Statistiken von den Netzwerkgeräten werden gemeldet
GESICHT :Name der Schnittstelle (Im obigen Beispiel:ens192)
rxpck/s / txpck/s :Gesamtzahl der pro Sekunde empfangenen/gesendeten Pakete
Es gibt einige andere Optionen als DEV, wie zum Beispiel:
NFS :NFS-Client-Aktivitäten anzeigen
SOCKE :Zeigt die verwendeten Sockets an
TCP :gibt TCP v4-Netzwerkverkehr an
UDP :gibt UDP v4-Netzwerkverkehr an
Wenn Sie die Netzwerkstatistiken für einen bestimmten Tag, z. B. den 9. Juni, sammeln möchten, müssen Sie sie wie folgt ausführen:
$ sar -n DEV -f /var/log/sa/sa09
Sark-Diagramm
In den obigen Abschnitten wurde die Verwendung von sar vom Terminal aus erläutert. kSar ist eine Java-basierte GUI-Anwendung, die Ihre SAR-Daten visualisiert.
Installation von ksar:
$ sudo apt install openjdk-11-jdk
$ sudo yum install epel-release
$ sudo yum install java-openjdk
Laden Sie ksar herunter und entpacken Sie es:
$ wget https://sourceforge.net/projects/ksar/files/latest/download
$ mv download kSar.zip
$ unzip kSar.zip
Jetzt cd ins Verzeichnis
$ cd kSar-*
Machen Sie nun die Datei run.sh ausführbar und führen Sie sie als root aus.
$ chmod +x run.sh
$ sudo su
./run.sh
Jetzt können wir testen, indem wir den lokalen Befehl ausführen. Wir gehen zu Data > Run Local Command
und dort können wir den Standardbefehl verwenden.
Als nächstes können wir uns die Diagramme ansehen, indem wir auf das linke Feld klicken und auf der rechten Seite das angezeigte Diagramm betrachten:
Es ist auch möglich, Diagramme aus einer Datei zu laden. Zuerst müssen wir sar:
ausführenLC_ALL=C sar -A > /tmp/sar.data.txt
Und dann wählen wir in den Menüs Data > Load
aus der Textdatei und suchen Sie die Datei in /tmp
oder wo auch immer wir es gespeichert haben.
Schlussfolgerung
In diesem Tutorial haben wir gelernt, wie der sar-Befehl verwendet werden kann, um Ihnen zu helfen, die Nutzung von Systemressourcen zu erkennen und die Leistung zu verbessern, während Sie mit Ihrem Betriebssystem arbeiten.
Aus sar-Beispielen geht hervor, dass es sich um ein großartiges Tool zum Sammeln, Melden oder Speichern von Systemaktivitätsinformationen handelt.
Danke fürs Lesen und bitte hinterlassen Sie Ihren Vorschlag im Kommentarbereich unten.
Related Read: 10 Linux iostat Command to Report CPU and I/O Statistics