Eksempler på brug af SAR-kommandoen til systemovervågning i Linux

, Author

System Activity Reporter er et vigtigt værktøj, der hjælper systemadministratorer med at få et overblik over servermaskinen med status for forskellige vigtige metrikker på forskellige tidspunkter.

Hvis du har et problem med systemet i øjeblikket, ligesom nogle af dine kunder ikke kan få vist nogle data fra databasen. Den første ting, som de fleste Linux-systemadministratorer gør, er at huske det samme problem, da det tidligere opstod, og hvis du husker dagen for dets tidligere forekomst, kan du nemt sammenligne de interne systemstatistikker med de aktuelle statistikker.

SAR er meget hjælpsom til at gøre netop dette.

Den første ting, som vi skal gøre, er at kontrollere og bekræfte, om du har SAR-værktøjet installeret på maskinen. Hvilket kan kontrolleres ved at liste alle rpm’er og finde efter dette hjælpeprogram.

SAR er et af hjælpeprogrammerne inde i sysstat. Du kan nemt downloade og installere det i din maskine meget nemt gennem YUM. (Men ja, bare rolig, for de fleste distributioner er pakket med sysstat-værktøjetsmiley).

# yum install sysstat

Ja, men sørg for, at du har epel,rpmformge repository aktiveret til at installere. Ellers vil din distributions-dvd være et godt sted at lede efter pakken.

SAR (System Activity Reporter) vil give oplysninger om følgende ting:

  1. System Buffer aktivitet
  2. Informationer om systemkald
  3. Blok enhedsinformation
  4. Overall paging information
  5. Semaphore og hukommelsesallokeringsinformation
  6. CPU udnyttelse og procesrapport

Den vigtigste ting, som vi skal forstå vedrørende SAR er, at, alt sker ved hjælp af en cron. Som standard i mange Linux-distributioner vil du have en fil med navnet /etc/cron.d/sysstat.

Lader os se, hvordan SAR virkelig fungerer.

Hvis vi begynder at tænke på systemovervågning, så skal værktøjet have hver eneste data om systemets forskellige aspekter og skal dække alle tidsintervaller. Hvilket betyder, at et overvågningssystem skal kunne levere maskinens statistikker for et givet tidsrum.

Der er ingen anden måde, end at tage alle metrikker og statistikker for maskinen i et bestemt tidsinterval. Hvis vi reducerer tidsintervallet for indsamling af statistikkerne, vil vi få flere detaljerede statistikker (fordi vi får flere data om systemet).

SAR gør netop dette. sar tager statistikkerne for forskellige aspekter af maskinen med et bestemt tidsinterval. SAR kører altså gennem CRON.

# cat /etc/cron.d/sysstat# kør værktøjet til bogføring af systemaktivitet hvert 10. minut*/10 * * * * * * root /usr/lib64/sa/sa/sa1 1 1# generer en daglig oversigt over procesbogføring kl. 23:5353 23 * * * * * root /usr/lib64/sa/sa/sa2 -A

  • Så det kan ses af ovenstående cron-fil for SAR, at den kører “sa1” scriptet placeret på “/usr/lib64/sa/” hvert 10. minut
  • Og kører også et script /usr/lib64/sa/sa/sa2 i slutningen af dagen omkring kl. 23.53

Så den første cron-post for SAR(/usr/lib64/sa/sa/sa1) vil køre hvert 10. minut, som igen vil kalde sadc-hjælpeprogrammet til at indsamle systemstatistik og gemme den i en binær fil (en fil for en dag)

Og den anden cron-post vil dumpe alt indholdet af denne binære fil i en anden tekstfil, og sletter data, der er ældre end et bestemt antal dage, normalt 7 dage som standard(som er nævnt i følgende fil),

# cat /etc/sysconfig/sysstat# Hvor længe skal logfiler opbevares (dage), maksimum er en månedHISTORY=7

Så du kan nemt ændre denne HISTORY-post ved at redigere filen.

Så selv om systemstatistikken indsamles hvert 10. minut via cron(ændre cron til at køre hvert 1. minut for at få mere nøjagtige oplysninger) Hvis du vil se statistikken, skal du køre kommandoen som nedenfor.

Den enkle sar-kommando output er som vist nedenfor.

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

Det kan ses fra outputtet, at det rapporterer mig output af den indsamlede statistik for hvert minut(hvilket betyder at jeg har min cron med 1 minuts interval), og vil vise detaljerne for hele dagen(eller vil vise detaljerne indsamlet indtil du skrev kommandoen).

Forstå output af SAR-kommandoen

%user: Dette viser den samlede tid, som processoren bruger på forskellige processer YCX5UKN5ZKEJ

%sys: Dette viser den procentdel af den tid, som processoren bruger på operativsystemets opgaver(fordi den tidligere bruger viser den tid, der bruges på brugerens slutproces)

%iowait: Selve navnet iowait antyder, at det er den tid, som processoren bruger på at vente på enheder(input og output)

%nice: Dette viser den tid, som processoren bruger på at vente på enheder(input og output)

%nice: Dette viser den samlede tid, som processoren bruger på forskellige processer YCX5UKN5ZKEJ

De fleste af jer må vide, at en bruger kan ændre prioriteten for en proces i Linux ved at ændre nice-værdien i Linux. Denne tabel viser den tid, som CPU’en bruger på processer, hvis nice-værdi er blevet ændret.

%steal: Denne kolonne viser mængden af tid brugt af en CPU (som er virtualiseret), for ressourcer fra den fysiske CPU.

%idle: Dette antyder den idle tid brugt af processoren.

Som standard gemmer sar alle sine data under /var/log/sa/ og en dage er navngivet som vist nedenfor.

s01 – for den første dag i måneden

s02 – for den anden dag i måneden

s03,s04..og så videre.

-d option i SAR kommando

Denne -d option kan bruges til at rapportere hver eneste aktivitet relateret til forskellige enheder, der er knyttet til systemet (blok enheder). Et typisk output af sar-kommandoen med -d-indstillingen er vist nedenfor.

12:00:01 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util12:01:01:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:01:01:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:01:01:01 AM dev8-0 55.62 9.98 8317.87 149.72 13.68 245.96 2.61 14.5212:01:01:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:02:01:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00.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.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.00 0.0012:03:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

DEV: denne kolonne navngiver enheder på maskinen i henhold til major- og minor-numre for en Linux-blok enhed. Du kan kontrollere dette ved at foretage en ls -l i mappen /dev. som vist nedenfor.

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 16:29 sda2

i den ovenfor viste “ls -l” outut for “sda” er major-nummeret “8”,og minor-nummeret er “0”…Så du kan nemt identificere den disk, der er nævnt i sar-kommandoens output.

tps: tps står for transfer per second, så det viser overførslen per sekund til den pågældende enhed

rd_sec/s: dette viser dig det samlede antal sektorer på den pågældende enhed, som bliver læst

wr_sec/s: hvis rd_sec/s er sektorer, der bliver læst per sekund, så er wr_sec naturligvis sektorer, der bliver skrevet per sekund.

avgrq-sz: denne kolonne viser gennemsnittet.

await: dette viser det samlede antal gange, som processoren har ventet på anmodninger vedrørende IO

%util: denne kolonne viser brugen af cpu i procent, da anmodningen blev genereret

Show Memory usage in SAR command

den -r-indstilling, der er tilgængelig i sar-kommandoen, er meget nyttig. Den viser hukommelse, swap, cached memory osv. i hvert interval eller på det ønskede tidsinterval.

02:20:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused %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.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
i ovenstående output er de fleste af kolonnerne selvforklarende(og de fleste outputs er i KB).
kbmemfree: dette viser mængden af ledig hukommelse
Kbmemused: brugt hukommelse
%memused: procentdel af den brugte hukommelse
kbbuffers: bufferhukommelse brugt af kernen.
kbcached: cached memory used by the kernel
all other entries for memory are swap(free,used,percentage etc)

Hvordan man henter metrikker for en bestemt dag ved hjælp af SAR i linux

Som nævnt før er alle metrikker for en bestemt dag gemt i sa<day of month> wise. Så hvis jeg ønsker at kende mine metrikker for 27. dag i måneden kan jeg nemt finde ud af det som vist nedenfor.
# sar -f /var/log/sa/sa/sa27Linux 2.6.18-194.el5xen (archive.r) 27/11/2012 02:20:01 AM CPU %user %nice %system %iowait %steal %idle02:30:01 AM alle 2.58 0.58 0.00 0.70 1.12 0.05 95.5502:40:01 AM alle 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM alle 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM all 3.27 0.00 0.00 0.71 1.12 0.04 94.86
i ovenstående kommando har vi givet /var/log/sa/sa27 som et argument, da jeg havde brug for statistik for den dag..videregive sa<dag i måneden>som du har brug for i ovenstående kommando

Hvordan man henter SAR-metrikker for et bestemt tidspunkt på en bestemt dato

Dette kan opnås ved at videregive et andet argument som vist nedenfor.

# sar -f /var/log/sa/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 alle 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM alle 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM alle 3.27 0.00 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.33Gennemsnit: alle 2.76 0.21 0.70 1.11 0.04 95.18
i det ovenfor viste eksempel bad jeg sar om at hente målingerne mellem 2:20:00 og 3:20:00 på den 27. dag i måneden
Du kan endda videregive enhver anden metrisk indstilling sammen med tidsintervallet…såsom -d eller -r
Har du bemærket det? SAR kan præcist vise os maskinstatistikken for en bestemt dag på et bestemt tidspunkt … så det er meget nemmere at identificere flaskehalsene.
Hvis du bruger -A-indstillingen sammen med ovenstående kommando, vises ALL (alle de metrikker, der er indsamlet af sar).
sar -f /var/log/sa/sa/sa27 -s 02:20:00 -e 03:20:00 -A
Opdatet vil være udførligt. og du vil få næsten alt i sar fra denne -A indstilling på din skærm!

Vis netværksstatistik ved hjælp af sar kommando

sar kommando viser selv netværksstatistik. Dette kan gøres ved at bruge indstillingen -n DEV i sar-kommandoen.

# sar -n DEVLinux 2.6.18-194.el5xen (archive.r) 27/11/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.01 0.01 0.77 0.77 0.77 0.00 0.00 0.00 0.0002:30:01 AM eth0 12.30 0.12 1285.06 27.59 0.59 0.00 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.00 0.0002:30:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0002:40:01:40:01 AM lo 0.01 0.01 0.01 0.01 0.77 0.77 0.77 0.00 0.00 0.00 0.0002:40:01:01 AM eth0 10.65 0.12 1139.38 27.00 0.00 0.00 0.00 0.00 0.0002:40:01:01 AM eth1 13.96 0.00 1352.87 0.00 0.00 0.00 0.00

IFACE: står for nic-kortets interface-navn

rxpck/s: dette viser de samlede pakker modtaget pr. sekund

txpck/s:transmitterede pakker pr. sekund

rxcmp/s: komprimerede pakker modtaget

txcmp/s: komprimerede pakker transmitteret

rxmcst/s: pakker multicasted pr. sekund.

Nogle andre metrikker, der kan bestemmes ved hjælp af sar

-y indstilling i sar: kan bruges til at bestemme tty detaljer

-X indstilling i sar for at få detaljer om en bestemt proces. Du skal sende pid som et argument til denne indstilling.

-n SOCK indstilling i sar: denne indstilling vil rapportere alle socket detaljer.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.