A System Activity Reporter egy fontos eszköz, amely segít a rendszergazdáknak abban, hogy áttekintést kapjanak a szervergép állapotáról a különböző fontos mérőszámok állapotával a különböző időpontokban.
Ha feltételezzük, hogy jelenleg problémája van a rendszerrel, például néhány ügyfél nem tud listázni bizonyos adatokat az adatbázisból. Az első dolog, amit a legtöbb Linux rendszergazda tesz, hogy felidézi ugyanazt a problémát, amikor korábban előfordult, és ha emlékszik a korábbi előfordulás napjára, akkor könnyen összehasonlíthatja a belső rendszer statisztikáit az aktuális statisztikákkal.
A SAR nagyon sokat segít pontosan ebben.
Az első dolog, amit tennünk kell, hogy ellenőrizzük és megerősítjük, hogy telepítve van-e a SAR segédprogram a gépen. Amit az összes rpm listázásával és a segédprogram keresésével ellenőrizhetünk.
A SAR az egyik segédprogram a sysstat-on belül. Könnyen letöltheti és telepítheti a gépére nagyon egyszerűen a YUM segítségével. (But yeah dont worry because most of the distribution comes prepacked with sysstat tool).
# yum install sysstat
Yeah but make it sure that you have epel,rpmformge repository enabled for installing. Egyébként a disztribúciós DVD-den szépen keresgélheted a csomagot.
A SAR (System Activity Reporter) a következő dolgokról ad információt:
- System Buffer activity
- Information about system calls
- Block device information
- Overall paging information
- Semaphore and memory allocation information
- CPU utilization and process report
A legfontosabb dolog, amit a SAR kapcsán meg kell értenünk, hogy, minden egy cron segítségével történik. Alapértelmezés szerint sok Linux disztribúcióban van egy /etc/cron.d/sysstat nevű fájl.
Lássuk, hogyan is működik valójában a SAR.
Ha elkezdünk rendszerfigyelésben gondolkodni, akkor az eszköznek rendelkeznie kell minden egyes adattal a rendszer különböző aspektusairól, és le kell fednie minden időintervallumot. Ami azt jelenti, hogy egy felügyeleti rendszernek képesnek kell lennie arra, hogy a gép statisztikáit egy adott időintervallumra vonatkozóan megadja.
Nincs más lehetőség, mint a gép összes metrikáját és statisztikáját egy meghatározott időintervallumban felvenni. A statisztikák gyűjtésének időintervallumának csökkentése növeli a részletes statisztikák mennyiségét(mert több adatunk lesz a rendszerről).
A SAR pontosan ezt teszi. sar a gép különböző aspektusainak statisztikáit veszi fel egy meghatározott időintervallumban. Tehát a SAR a CRON-on keresztül fut.
# cat /etc/cron.d/sysstat# rendszeraktivitás-nyilvántartó eszköz futtatása 10 percenként*/10 * * * * * * * root /usr/lib64/sa/sa1 1 1# napi összefoglalót készít a folyamatok nyilvántartásáról 23 órakor:5353 23 * * * * root /usr/lib64/sa/sa2 -A
- A fenti SAR cron fájlból látható, hogy a “/usr/lib64/sa/”-ban található “sa1” szkript 10 percenként fut
- És a nap végén, 23 óra körül a /usr/lib64/sa/sa2 szkript is fut.53
Az első cron bejegyzés a SAR-hoz(/usr/lib64/sa/sa1) 10 percenként fog futni, ami viszont meghívja a sadc segédprogramot, hogy összegyűjtse a rendszer statisztikáit és egy bináris fájlban tárolja (egy fájl egy napra)
A második cron bejegyzés pedig a bináris fájl teljes tartalmát egy másik szöveges fájlba dobja, és kitisztítja a meghatározott számú napnál régebbi adatokat, alapértelmezés szerint általában 7 napot (ami a következő fájlban szerepel),
# cat /etc/sysconfig/sysstat# Mennyi ideig kell tárolni a naplófájlokat (napokban), a maximum egy hónapHISTORY=7
A HISTORY bejegyzést tehát könnyen módosíthatja a fájl szerkesztésével.
Szóval, bár a rendszerstatisztikákat 10 percenként gyűjti a cron (módosítsa a cron-t úgy, hogy 1 percenként fusson a pontosabb információkhoz) Ha látni akarja a statisztikákat, akkor az alábbi parancsot kell futtatnia.
Az egyszerű sar parancs kimenete az alábbiakban látható.
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 mind 61.65 0.00 0.70 0.00 0.00 37.6612:04:01 AM mind 57.85 0.00 0.82 0.00 0.00 41.3412:05:01 AM mind 4.25 0.00 0.41 0.00 0.00 0.00 95.3412:06:01 AM mind 4.20 0.00 0.22 0.00 0.00 0.00 95.5812:07:01 AM mind 5.05 0.00 0.33 0.00 0.00 94.6312:08:01 AM mind 4.76 0.00 0.06 0.00 0.00 0.00 95.1812:09:01 AM mind 37.57 0.00 0.37 0.00 0.00 0.00 62.0512:10:01 AM mind 70.04 0.00 0.80 0.00 0.00 0.00 29.1612:11:01 AM mind 5.03 0.00 0.12 0.00 0.00 0.00 94.84
A kimenetből látható, hogy a kimenet percenként jelenti nekem az összegyűjtött statisztikák kimenetét(ami azt jelenti, hogy a cronom 1 perces intervallumban van), és megmutatja az egész nap adatait(vagy megmutatja a parancs beírásáig összegyűjtött adatokat).
A SAR parancs kimenetének megértése
%user: YCX5UKN5ZKEJ
%sys: Ez a processzor által az operációs rendszer feladataira fordított idő százalékos arányát mutatja(mert az előző user a felhasználó végi folyamatokra fordított időt mutatja)
%iowait: A neve iowait önmagában azt sugallja, hogy a processzor által az eszközökre(input és output)
%nice: A legtöbbetek bizonyára tudja, hogy a felhasználó a Linuxban a nice érték megváltoztatásával megváltoztathatja egy folyamat prioritását. Ez a táblázat azt mutatja, hogy mennyi időt töltött a CPU azon folyamatok esetében, amelyek nice értékét megváltoztattuk.
%steal:
%idle: Ez a processzor által eltöltött üresjárati időt mutatja.
Alapértelmezés szerint a sar minden adatát a /var/log/sa/ alatt tárolja, és a napok neve az alábbiakban látható.
s01 – a hónap első napjára
s02 – a hónap második napjára
s03,s04..és így tovább.
-d opció a SAR parancsban
Ez a -d opció használható a rendszerhez csatlakoztatott különböző eszközökkel (blokkeszközök) kapcsolatos minden egyes tevékenység jelentésére. A sar parancs tipikus kimenete a -d opcióval az alábbiakban látható.
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.0012:01:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12: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.00 0.00 12:02:01 AM dev3-0 0.00 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.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.00 12: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: ez az oszlop a gépen lévő eszközöket nevezi meg, egy Linux blokkeszköz major és minor számai szerint. Ezt a /dev könyvtárban egy ls -l művelettel ellenőrizheti. az alábbiak szerint.
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
a fent látható “ls -l” oututban az “sda” esetében a major szám “8”,a minor szám pedig “0”…Így könnyen beazonosíthatja a sar parancs kimenetén említett lemezt.
tps: a tps a másodpercenkénti átvitelt jelenti, tehát a másodpercenkénti átvitelt mutatja az adott eszközön
rd_sec/s: ez mutatja az adott eszközön olvasott szektorok számát
wr_sec/s: ha az rd_sec/s a másodpercenként olvasott szektorokat jelenti, akkor a wr_sec a másodpercenként írt szektorokat.
avgrq-sz: ez az oszlop az átlagot mutatja.
await: ez azt mutatja, hogy a processzor összesen mennyi időt várt az IO-val kapcsolatos kérésekre
%util: ez az oszlop a cpu használatát mutatja százalékban, amikor a kérés létrejött
Show Memory usage in SAR command
a sar parancsban elérhető -r opció nagyon hasznos. ez megmutatja a memóriát,swap,cache memóriát stb. minden intervallumban vagy kívánt időintervallumban.
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
How to fetch metrics of a particular day using SAR in linux
# sar -f /var/log/sa/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
Hogyan lehet lekérni a SAR mérőszámokat egy adott időpontra egy adott napon
ez egy másik argumentum átadásával érhető el, ahogy az alább látható.
# 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 minden 2.72 1.06 0.75 1.09 0.04 94.33 Átlag: minden 2.76 0.21 0.70 1.11 0.04 95.18
Show network statistics using sar command
sar command even shows network statistics. Ezt a sar parancsban a -n DEV opció használatával érhetjük el.
# 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.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.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.0002:40:01 AM lo 0.01 0.01 0.01 0.77 0.77 0.00 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: a nic kártya interfész nevét jelenti
rxpck/s: ez mutatja a másodpercenként fogadott összes csomagot
txpck/s:másodpercenként továbbított csomagok
rxcmp/s: fogadott tömörített csomagok
txcmp/s: továbbított tömörített csomagok
rxmcst/s: másodpercenként multicast csomagok.
Egyéb metrikák, amelyek a sar segítségével meghatározhatók
-y opció a sar-ban: használható a tty részletek meghatározására
-X opció a sar-ban egy adott folyamat részleteinek lekérdezésére. Ehhez az opcióhoz a pid-et kell átadni argumentumként.
-n SOCK opció a sar-ban: ez az opció minden socket adatot jelent.