Sysdig: Kaj to je in kako ga uporabljati

Sysdig je univerzalno orodje za vidljivost sistema s podporo za zabojnike. Sysdig je poseben, saj se sam priklepa v jedro stroja in informacije ločeno zbira na posodo. Glede obsega te vadnice se bomo osredotočili na odprtokodno različico Sysdig-a.

V naslednjih razdelkih boste:

  • Namestite sistem Sysdig
  • Vstavite Wordpress namestitev z docker-compose
  • Sysdig uporabite za zbiranje dogodkov in njihovo analizo pozneje
  • Sysdig uporabite za analizo podatkov v realnem času

Predpogoji

  • Docker je nameščen v vašem sistemu. Podrobnosti o namestitvi Dockerja najdete na strani Install Docker.
  • Docker Compose je nameščen v vašem sistemu. Za navodila o namestitvi Docker Compose glejte stran Namestitev docker Compose.
  • Glave jedra so nameščene v gostiteljskem sistemu.

Namestite sistem Sysdig

Sledite tem korakom, da namestite Sysdig v Docker posodo:

  1. V terminalskem oknu izvedite naslednji ukaz, da povlečete sliko Sckerdig Dockerja:
docker potegniti sysdig / sysdig
Uporaba privzete oznake: najnovejše najnovejše: Poteg s sysdig / sysdig 2967486b0658: Potegnite dokončno 78101b780c72: Potegnite dokončano 7e78b657334d: Potegnite dokončno 650327159ca8: Potegnite dokončano 47ebf73ab754: Potegnite popolno bf51ac76a6d9: Potegnite dokončano bc51ac76a6d9: Potegnite popolno ecd5755 Potegnite popolno 0cd116 Kolovoz 1bd5105 Korak 2 Potegni popolno 6de86c8ed6e9: Potegni popolno 8d1825f8be4b: Potegni popolno Povzetek: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Prenesena novejša slika za sysdig najnovejše

2. Sysdig zaženite v posodi tako, da vnesete:

docker run -i -t --name sysdig --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v / dev: / host / dev -v / proc: / gostitelj / proc: ro -v / boot: / host / boot: ro -v / lib / module: / host / lib / module: ro -v / usr: / host / usr: ro sysdig / sysdig
* Nastavitev / usr / src povezav z gostitelja * Odstranjevanje sysdig-sonde, če obstaja * Zagon dkms nameščen za sysdig Napaka! echo Glave jedra za jedro 3.10.0-957.12.2.el7.x86_64 ni mogoče najti na /lib/modules/3.10.0-957.12.2.el7.x86_64/build ali /lib/modules/3.10.0-957.12 .2.el7.x86_64 / vir. * Zagon gradnje dkms ni uspel, ni bilo mogoče najti /var/lib/dkms/sysdig/0.26.4/build/make.log * Poskus nalaganja sistemske sonde sysdig, če je prisoten * Poskus iskanja predhodno sestavljene sonde sysdig za 3.10 .0-957.12.2.el7.x86_64 Najdeno konfiguracijo jedra na /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Poskus prenosa predhodno sestavljenega modula s https://s3.amazonaws.com/download .draios.com / stabilen / sysdig-sonda-binaries / sysdig-sonda-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Uspešen prenos, nalaganje root modula @ 7b14a23f22eb: / #

Nekaj ​​stvari o zgornjem ukazu:

  • Zastavica -i drži STDIN odprto.
  • Parameter --privileged omogoča dostop do vseh naprav na gostitelju. Prav tako nastavi SELinux, da omogoča procesom, ki se izvajajo znotraj vsebnika, enak dostop do gostitelja kot postopek, ki se izvaja na gostitelju.
  • Zastavica -v določa seznam datotek (na gostitelju), do katerih lahko dostopa Sysdig.

Spin Up namestitev Wordpressa

V tem razdelku boste namestili Wordpress z ukazom docker-compose.

  1. V novem terminalskem oknu se pomaknite v imenik projektov in vnesite naslednje ukaze:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Ustvarite datoteko z imenom docker-compose z naslednjo vsebino:

različica: '3.3' storitve: db: image: mysql: 5.7 zvezkov: - db_data: / var / lib / mysql ponovno zagon: vedno okolje: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: odvisnost_on wordpress: najnovejša vrata: - "8000: 80" ponovni zagon: vedno okolje: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: volumepress Word: db_data: {}

3. Zaženite ukaz docker-sestavi v samostojnem načinu z:

docker-sestavljati up -d
Ustvarjanje omrežja "wordpress-sysdig_default" s privzetim gonilnikom Ustvarjanje glasnosti "wordpress-sysdig_db_data" s privzetim gonilnikom Vlečenje wordpressa (wordpress: najnovejše) ... najnovejše: Poteg iz knjižnice / wordpress 8ec398bc0356: Potegnite dokončno 85cf4fc86478: Potegnite dokončno 970dadf4ccb6: 8c04561117a4: Pull popolna d6b7434b63a2: Pull popolna 83d8859e9744: Pull popolna 9c3d824d0ad5: Pull popolna 9e316fd5b3b3: Pull popolna 578b40496c37: Pull popolna 814ae7711d3c: Pull popolna 4896fed78b6b: Pull popolna e74d71e9611d: Pull popolna 46017765526c: Pull popolna 280386098458: Pull popolna f32eb0d8c540: Potegnite popolno 5c47b9ea747a: potegnite popolno ecda5b7aad12: potegnite popolno 84256a6b6b44: potegnite popolno 35d4f385efb7: potegnite popolno bf697c2ae701: Pull popolna d054b015f084: potegnite popolno Digest: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Status: Preneseno novejšo sliko za wordPress: najnovejše Ustvarjanje wordPress-sysdig_db_1 ... naredili Ustvarjanje wordPress-sysdig_word pritisnite_1 ... končano

4. Stanje zabojnikov lahko preverite z:

docker ps

Če gre vse v redu, bi morali videti nekaj podobnega naslednjem rezultatu:

ID KONTEJNERA IMENA KOMANDA USTVARJALA STATUSNA PORTSKA IMENA f390eec29f52 wordpress: najnovejša "docker-entrypoint.s ..." Pred približno minuto gor Okoli minute 0,0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5,7 "docker-entry. s… "Pred kakšno minuto gor Okoli minute 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "pred 13 minutami Up 13 minut sysdig

5. Zdaj je Wordpress pripravljen in deluje. Usmerite brskalnik na http: // localhost: 8000, da zaženete čarovnika za namestitev:

6. Ko je čarovnik za namestitev končan, nadaljujmo in ustvarimo vzorčni post:

Zbiranje podatkov v datoteko

V tem razdelku bomo pokazali, kako lahko Sysdig uporabite za zbiranje dogodkov in njihovo analizo pozneje.

  1. Če želite vse datoteke posneti v datoteko, se pomaknite v vsebnik Sysdig in vnesite naslednji ukaz:
sysdig -w spremljanje-wordpress.scap

2. V novem oknu terminala uporabite ab, če želite poslati 10000 zahtevkov, pri čemer se največ 100 zahtevkov izvaja hkrati:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
To je ApacheBench, različica 2.3 <$ Revizija: 1430300 $> Avtorske pravice 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Ima dovoljenje za programsko ustanovo Apache, http://www.apache.org/ Benchmarking localhost (bodite potrpežljivi) Izpolnjeno 100 zahtev Izpolnjeno 200 zahtevkov Izpolnjeno 300 zahtevkov Izpolnjeno 400 zahtevkov Izpolnjeno 500 zahtevkov 600 zahtevkov Izpolnjeno 700 zahtevkov 800 zahtevkov Izpolnjenih 900 zahtev Izpolnjenih 1000 zahtevkov Končanih 1000 zahtevkov

Upoštevajte, da je bil zgornji rezultat okrnjen zaradi kratkosti.

3. Premaknite se nazaj, da obiščete vsebnik Sysdig in ustavite zajem podatkov, tako da vnesete »CTRL + C«.

Analiza podatkov

Zdaj, če pogledate velikost datoteke Monitoring-wordpress.scap, boste opazili, da je Sysdig zajel nič manj kot 80 milijonov podatkov:

ls -lh nadzor-wordpress.scap
-rw-r - r--. 1 korenski koren 80M 7. januar 16:28 Monitoring-wordpress.scap

Če želite najti pot skozi to goro podatkov, boste uporabili nekaj, imenovano dleto.

Dleto je v bistvu scenarij Lua, ki analizira tok dogodkov in izvede koristna dejanja.

Za prikaz seznama dleta lahko zaženete naslednji ukaz:

sysdig -cl
Kategorija: Aplikacija --------------------- httplog dnevnikov zahtev HTTP httptop Na vrh HTTP zahtevkov memcachelog dnevnik pomnjenih zahtev Kategorija: Uporaba CPU ---------- --------- spektrogram Vizualizirajte zamude OS v realnem času. subsecoffset Vizualizirajte čas izvedbe podsekunde. topcontainers_cpu Najboljši vsebniki po uporabi CPU-ja topprocs_cpu Najboljši procesi glede uporabe CPE-ja Kategorija: Napake ---------------- topcontainers_error Najboljši vsebniki po številu napak topfiles_errors Najpogostejše datoteke po številu napak napak

Upoštevajte, da je bil zgornji rezultat okrnjen zaradi kratkosti.

Če želite pridobiti podrobne informacije o dletu, zaženite ukaz sysdig, ki mu sledita zastava -i in ime dleta, kot v naslednjem primeru:

sysdig -i httptop
Kategorija: Aplikacija --------------------- httptop Top HTTP zahteve Prikaži top HTTP zahteve po: ncalls, time or bytes Args: [string] by - Prikaži zgornje transakcije HTTP po: ncalls, čas ali test, privzeto je ncalls

Če nadaljujemo z našim primerom, je tukaj opisano, kako lahko z dletom httptop uporabite največje zahteve HTTP:

sysdig -r spremljanje-wordpress.scap -c httptop
url metoda ncalls ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 OPTIONS * 2 GET localhost: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / vsebniki / 6bd8418eb03f / json 1 GET localhost / v1.24 / posode / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901 1 GET localhost: 8000 /

Iste podatke lahko vidite v obliki zabojnika z zastavico -pcontainer:

sysdig -r spremljanje-wordpress.scap -c httptop -pcontainer
url metoda vsebnika ncalls ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 gostitelj GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo MOŽNOSTI * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / s1 / g1 localhost / v1.24 GH localhost / v1.24 GD localhost / v1.24 GH localhost / v1.24 GH localhost / v1.21 / 7/1/1/1/7/1/1/1/1/1/1/1/1, 1, 1, 1, 1, 1, 1 cd06093b141b / JSON 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901

Kopanje globlje

Sysdig zajame informacije, bogate z vsebino, ki vam omogočajo podroben vpogled v notranje delovanje vaših vsebnikov. Predpostavimo, da imate nekaj vsebnikov in želite vedeti, kateri postopek porabi največ CPU-ja.

  1. Naštejte zabojnike, ki so bili aktivni v obdobju, v katerem ste zajemali dogodke:
sysdig -r spremljanje-wordpress.scap -c l vsebnikov

2. Posodo, ki je porabila največ CPE-ja, lahko identificirate z:

sysdig -r spremljanje-wordpress.scap -c topcontainers_cpu
CPU% container.name --------------------------------------------- ----------------------------------- 5,37% wordpress-sysdig_wordpress_1 1,35% wordpress-sysdig_db_1 0,84% gostitelj 0,51% sysdig

3. Z dleto topprocs_cpu lahko kopate še globlje in prepoznate najbolj intenziven procesor:

sysdig -r nadzor-wordpress.scap -c topprocs_cpu container.name vsebuje wordpress_1
Procesor PID% procesov ---------------------------------------------- ---------------------------------- 0,12% apache2 8383 0,11% apache2 9413 0,11% apache2 9300 0,11% apache2 9242 0,11% apache2 8897 0,11% apache2 8422 0,10% apache2 9372 0,10% apache2 9241 0,10% apache2 8424 0,09% apache2 9429

Če si želite ogledati več podrobnosti, drsno drsno dno ponuja bolj podrobno alternativo:

sysdig -r spremljanje-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID USER Virt RES FDLIMIT CMD 5896 5896 koren 232.82M 22.32M 429.496.729 apache2 8383 8383 www podatkov 307.44M 25.46M 429.496.729 apache2 8422 8422 www podatkov 235.44M 22.90M 429.496.729 apache2 8424 8424 www podatkov 307.44M 25.46M 429.496.729 apache2 8897 8897 www-data 235.44M 22.89M 429496729 apache2 9154 9154 www-data 235.44M 22.91M 429496729 apache2 9241 9241 www-data 307.44M 25.66M 429496729 apache2 9242 9242 www-data 307.44M 25.67M 42949729 podatkov 297.475M 429496729 apache2 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Koristni nasveti

Če zaženete Sysdig za zajem dogodkov kot v zgornjem primeru (sysdig -w monitoring-wordpress.scap), bo datoteka dogodkov nenehno rasla, dokler ne porabi vsega razpoložljivega prostora. Obstaja nekaj metod, ki lahko preprečijo, da se to ne bi zgodilo:

  • Določite število dogodkov, ki jih mora zajeti Sysdig, tako da mu prenese zastavo -n. Ko sistem Sysdig zajame določeno število dogodkov, bo samodejno zapustil:
sysdig -n 5000 -w nadzor-wordpress.scap
  • Z zastavico -C konfigurirate Sysdig tako, da razbije zajem na manjše datoteke določene velikosti. Naslednji primer stalno shranjuje dogodke v datoteke <10 MB:
sysdig -C 10 -w nadzor-wordpress.scap

Tako boste ustvarili kup datotek, ki ne presegajo 10 MB:

ls -lh spremljanje-wordpress *
-rw-r - r--. 1 korenski koren 9.6M 7. januar 17:13 monitoring-wordpress.scap0 -rw-r - r--. 1 korenski koren 9.6M 7. januar 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 korenski koren 9.6M 7. januar 17:14 monitoring-wordpress.scap2 -rw-r - r--. 1 korenski koren 9.6M 7. januar 17:14 Monitoring-wordpress.scap3 -rw-r - r--. 1 korenski koren 9.6M 7. januar 17:14 monitoring-wordpress.scap4 -rw-r - r--. 1 korenski koren 9.6M 7. januar 17:14 monitoring-wordpress.scap5 -rw-r - r--. 1 korenski koren 9.6M 7. januar 17:14 monitoring-wordpress.scap6 -rw-r - r--. 1 korenski koren 9.6M 7. januar 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 korenski koren 6.4M 7. januar 17:14 monitoring-wordpress.scap8
  • Določite največje število datotek, ki jih mora imeti Sysdig z zastavo -W. Na primer, lahko združite oznake -C in -W tako:
sysdig -C 10 -W 4 -w nadzor-wordpress.scap

Zgornji ukaz bo hranil samo zadnje štiri datoteke za zajem:

ls -lh spremljanje-wordpress *
-rw-r - r--. 1 korenski koren 7.2M 7. januar 17:21 monitoring-wordpress.scap0 -rw-r - r--. 1 korenski koren 9.6M 7. januar 17:21 monitoring-wordpress.scap1 -rw-r - r--. 1 korenski koren 9.6M 7. januar 17:21 monitoring-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7. januar 17:21 Monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w nadzor-wordpress.scap

Spremljanje v realnem času

S Sysdigom lahko tudi v realnem času analizirate podatke. Na prvi pogled se lahko to zdi zastrašujoče opravilo, ker so privzeto vsi dogodki neprestano natisnjeni na konzolo. Na srečo so tukaj v pomoč dleta.

Vzemimo primer.

Analizirajte svoje procese na osnovi posode

  1. Zaženite ta ukaz, če želite prikazati vsebnike:
docker ps
ID KONTEJNERA IMENA ZNAKO USTVARJALA STATUSNA PORTSKA IMENA 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" pred 9 minutami Up 9 minut sysdig 06def7875617 wordpress: najnovejša "docker-entrypoint.s…" pred 3 urami 3 ure 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s…" 3 ure nazaj Up 3 ure 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Procese, ki se izvajajo v vsebniku WordPress, lahko analizirate z:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_wordpress_1

3. Podobno lahko analizirate procese, ki se izvajajo v vsebniku MySQL:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_db_1

Upoštevajte, da lahko Sysdig, ki se ne razlikuje veliko od tega primera, nadzira mrežni promet, uporabo diska in tako naprej.

V tej vadnici ste preučili osnove uporabe Sysdig-a, da bi dobili jasno razumevanje dejavnosti, ki jo ustvarijo vaši vsebniki. Primeri v tej objavi na spletnem dnevniku so vam pomagali začeti, v prihodnjih vajah pa vam bomo pokazali, kako uporabljati Csysdig in Sysdig Inspect.