Sysdig: Što je to i kako koristiti

Sysdig je univerzalni alat za pregled sustava s podrškom za spremnike. Ono što Sysdig čini posebnim jest to što se sam ubacio u jezgru stroja i informacije segregiraju po kontejneru. U smislu ovog vodiča usredotočit ćemo se na open-source verziju Sysdig-a.

U sljedećim ćete odjeljcima:

  • Instalirajte Sysdig
  • Spinite Wordpress instalaciju pomoću docker-compose
  • Koristite Sysdig za prikupljanje događaja i njihovo analiziranje u kasnijem vremenu
  • Upotrijebite Sysdig za analizu podataka u stvarnom vremenu

Preduvjeti

  • Docker je instaliran na vašem sustavu. Pojedinosti o instaliranju Dockera potražite na stranici Install Docker.
  • Docker Compose je instaliran na vašem sustavu. Pogledajte stranicu Install Docker Compose za upute o tome kako instalirati Docker Compose.
  • Zaglavlja kernela instalirana su na glavnom sustavu.

Instalirajte Sysdig

Slijedite ove korake za instaliranje Sysdig-a u Docker spremnik:

  1. U terminalnom prozoru izvršite sljedeću naredbu za izvlačenje slike Docker Sysdig-a:
docker pull sysdig / sysdig
Korištenje zadane oznake: najnovije najnovije: Povlačenje iz sysdig / sysdig 2967486b0658: Povlačenje kompletno 78101b780c72: Povlačenje kompletno 7e78b657334d: Povlačenje kompletno 650327159ca8: Povlačenje kompletno 47ebf73ab754: Pull Puno kompletno bf51ac76a6d9: Pull Pull kompletno ecd005 Kopiranje: Pull komplet 4cd116 F5 Pull 6cd005 Kolo 0cd005 Povuci kompletno 6de86c8ed6e9: Povuci kompletno 8d1825f8be4b: Povuci kompletno Sažetak: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Preuzeto novije slike za sysdigig

2. Umetnite Sysdig u spremnik unosom:

docker run -i -t --name sysdig --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v / dev: / host / dev -v / proc: / host / proc: ro -v / boot: / host / boot: ro -v / lib / module: / host / lib / module: ro -v / usr: / host / usr: ro sysdig / sysdig
* Postavljanje / usr / src veza s domaćina * Umetanje sysdig-sonde, ako postoji * Izvođenje instalacije dkms za sysdig Pogreška! echo Zaglavlja kernela za kernel 3.10.0-957.12.2.el7.x86_64 nije moguće pronaći na /lib/modules/3.10.0-957.12.2.el7.x86_64/build ili /lib/modules/3.10.0-957.12 .2.el7.x86_64 / izvor. * Pokretanje izrade dkms-a nije uspjelo, nisam uspio pronaći /var/lib/dkms/sysdig/0.26.4/build/make.log * Pokušaj učitavanja sistemske sysdig-sonde, ako je prisutan * Pokušaj pronalaska unaprijed sastavljene sysdig-sonde za 3,10 .0-957.12.2.el7.x86_64 Pronađen je konfiguracija kernela na /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Pokušaj preuzimanja komprimiranog modula s https://s3.amazonaws.com/download .draios.com / stable / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Uspješno preuzimanje, učitavanje root modula @ 7b14a23f22eb: / #

Nekoliko stvari koje treba napomenuti o gornjoj naredbi:

  • Zastava -i drži STDIN otvorenim.
  • --Privilegirani parametar pruža pristup svim uređajima na domaćinu. Također postavlja SELinux za omogućavanje procesa koji se izvode unutar spremnika isti pristup hostu kao i proces pokrenut na hostu.
  • Zastava -v određuje popis datoteka (na host) kojima Sysdig može pristupiti.

Spin Up Wordpress instalaciju

U ovom ćete dijelu instalirati Wordpress pomoću naredbe docker-compose.

  1. U novom prozoru terminala pređite u direktorij projekata i upišite sljedeće naredbe:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Stvorite datoteku pod nazivom docker-compose sa sljedećim sadržajem:

verzija: '3.3' usluge: db: image: mysql: 5.7 svezaka: - db_data: / var / lib / mysql ponovno pokretanje: uvijek okruženje: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: ovisi_on wordpress: najnoviji portovi: - ponovno pokretanje "8000: 80": uvijek okruženje: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: volumeni wordpressa: db_data: {}

3. Pokrenite naredbu docker-compose up u odvojenom načinu sa:

docker-compose up -d
Stvaranje mreže "wordpress-sysdig_default" s zadanim pogoniteljem Stvaranje volumena "wordpress-sysdig_db_data" s zadanim pogoniteljem Povlačenje wordpress-a (wordpress: najnovije) ... najnovije: Povlačenje iz biblioteke / wordpress 8ec398bc0356: Izvlačenje dovršeno 85cf4fc86478: Povlačenje kompletno 970dadf4ccb6: 8c04561117a4: Pull završena d6b7434b63a2: Pull završena 83d8859e9744: Pull završena 9c3d824d0ad5: Pull završena 9e316fd5b3b3: Pull završena 578b40496c37: Pull završena 814ae7711d3c: Pull završena 4896fed78b6b: Pull završena e74d71e9611d: Pull završena 46017765526c: Pull završena 280.386.098.458: Pull završena f32eb0d8c540: povući potpunu 5c47b9ea747a: povucite kompletan ecda5b7aad12: povucite kompletan 84256a6b6b44: povucite kompletan 35d4f385efb7: povucite kompletan bf697c2ae701: povucite kompletan d054b015f084: povucite kompletan Digest: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 status: Preuzeto noviju sliku za WordPress: najnovije Izrada wordpress-sysdig_db_1 ... učinio Izrada wordpress-sysdig_word pritisnite_1 ... učinjeno

4. Možete provjeriti status svojih spremnika pomoću:

docker ps

Ako sve ide dobro, trebali biste vidjeti nešto slično sljedećem izlazu:

ID SLIKA KONTEJNERA NARUČITE STATUSNA PORTSKA IMOVINA f390eec29f52 wordpress: najnoviji "docker-entrypoint.s ..." Prije oko minutu Gore Oko minutu 0,0,0,0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5,7 "docker-entry. s… "Prije oko minutu Gore oko minute 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "prije 13 minuta Gore 13 minuta sysdig

5. Sada je Wordpress pokrenut. Usmjerite svoj preglednik na http: // localhost: 8000 da biste pokrenuli čarobnjaka za instalaciju:

6. Nakon što je čarobnjak instalacije završen, idemo naprijed i stvorimo ogledni post:

Prikupljanje podataka u datoteku

U ovom ćemo dijelu pokazati kako možete koristiti Sysdig za prikupljanje događaja i njihovu analizu u kasnijim vremenima.

  1. Da biste izbacili sve snimljene događaje u datoteku, pomaknite se na spremnik Sysdig i unesite sljedeću naredbu:
sysdig -w nadzor-wordpress.scap

2. U novom prozoru terminala upotrijebite ab da biste postavili 10000 zahtjeva s istodobnim pokretanjem najviše 100 zahtjeva:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Ovo je ApacheBench, Verzija 2.3 <$ Revizija: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licencirano na Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (budite strpljivi) Izvršeno 100 zahtjeva Dovršeno 200 zahtjeva Završeno 300 zahtjeva Završeno 400 zahtjeva Završeno 500 zahtjeva Završeno 600 zahtjeva Završeno 700 zahtjeva Završeno 800 zahtjeva Završeno 900 zahtjeva Završeno 1000 zahtjeva Završeno 1000 zahtjeva

Imajte na umu da je gornji rezultat skraćen radi sažetka.

3. Vratite se na obilazak spremnika Sysdig i zaustavite snimanje podataka unošenjem "CTRL + C".

Analiza podataka

Ako pogledate veličinu datoteke Monitoring-wordpress.scap, primijetit ćete da je Sysdig prikupio najmanje 80 milijuna podataka:

ls -lh nadzor-wordpress.scap
-rw-r - R-. 1 korijen korijena 80M 7. siječnja 16:28 monitoring-wordpress.scap

Da biste pronašli svoj put kroz ovu planinu podataka, upotrijebit ćete nešto zvano dlijeto.

Dlijeto je u osnovi Lua skripta koja analizira tijek događaja i izvodi korisne radnje.

Možete pokrenuti sljedeću naredbu za prikaz popisa dleta:

sysdig -cl
Kategorija: Aplikacija --------------------- httplog HTTP zahtjeva zapisnik httptop Top HTTP zahtjeva memcachelog memcached zahtjeva dnevnik Kategorija: CPU Upotreba ---------- --------- spektrogram Vizualizirajte latencije OS-a u stvarnom vremenu. subsecoffset Vizualizirajte vrijeme izvršavanja podsekunde. topcontainers_cpu Glavni spremnici po upotrebi CPU-a topprocs_cpu Glavni procesi prema upotrebi CPU-a Kategorija: Pogreške ---------------- topcontainers_error Najpopularniji spremnici po broju pogrešaka topfiles_errors Top datoteke po broju pogrešaka topprocs_errors top procesi po broju od pogreške

Imajte na umu da je gornji rezultat skraćen radi sažetka.

Da biste dohvatili detaljne podatke o dlijetu, pokrenite naredbu sysdig, a zatim zastavicu -i i ime dlijeta, kao u sljedećem primjeru:

sysdig -i httptop
Kategorija: Aplikacija --------------------- httptop Top HTTP zahtjevi Prikaži vrhunske HTTP zahtjeve prema: ncalls, vremenu ili bajtovima Args: [string] by - Prikaži vrhunske HTTP transakcije prema: ncalls, vrijeme ili tes, zadano je ncalls

Nastavljajući naš primjer, evo kako možete koristiti httptop dlijeto za prikaz najboljih HTTP zahtjeva:

sysdig -r nadzor-wordpress.scap -c httptop
ncalls metoda url ----------------------------------------------- --------------------------------- 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 / kontejneri / 6bd8418eb03f / json 1 GET localhost / v1.24 / spremnici / 06def7875617 / json 1 + 1 + /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901 1 dobiti localhost: 8000 /

Iste podatke možete vidjeti u formatu prilagođenom za spremnike s zastavicom -pcontainer:

sysdig -r nadzor-wordpress.scap -c httptop -pcontainer
ncalls metoda URL-a spremnika ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 host GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPTIONS * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / s1 / G1 localhost / v1.21 / G1 localhost / v1.24 GH localhost / v1.21 / g1 / 1/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 dublje

Sysdig bilježi podatke bogate sadržajem koji vam omogućuju detaljni uvid u unutarnji rad vaših spremnika. Pretpostavimo da imate nekoliko spremnika i želite znati koji proces troši najviše CPU-a.

  1. Navedite spremnike koji su bili aktivni u razdoblju u kojem ste snimili događaje:
sysdig -r nadzor-wordpress.scap -c l kontejneri

2. Možete identificirati spremnik koji je potrošio najviše CPU-a sa:

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

3. Možete iskopati još dublje i identificirati najintenzivniji proces procesor s topprocs_cpu dlijeto:

sysdig -r nadzor-wordpress.scap -c topprocs_cpu container.name sadrži wordpress_1
PID procesora% PID ---------------------------------------------- ---------------------------------- 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

Ako želite vidjeti više detalja, ps dlijeto pruža više verbalnu alternativu:

sysdig -r nadzor-wordpress.scap -c ps kontejner.name = wordpress-sysdig_wordpress_1
TID PID USER Virt RES FDLIMIT CMD 5896 5896 korijen 232.82M 22.32M 429.496.729 apache2 8383 8383 www-data 307.44M 25.46M 429.496.729 apache2 8422 8422 www-data 235.44M 22.90M 429.496.729 apache2 8424 8424 www-data 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 Ažuriraj 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Korisni savjeti

Ako pokrenete Sysdig za snimanje događaja kao u gornjem primjeru (sysdig -w monitoring-wordpress.scap), datoteka događaja neprestano će rasti dok ne potroši sav raspoloživi prostor. Postoji nekoliko metoda pomoću kojih se to može spriječiti:

  • Navedite broj događaja koje bi Sysdig trebao zabilježiti predajući mu zastavu -n. Jednom kada Sysdig zabilježi određeni broj događaja, automatski će se zatvoriti:
sysdig -n 5000 -w nadzor-wordpress.scap
  • Upotrijebite -C zastavicu za konfiguriranje Sysdig-a tako da on razdvaja hvatanje u manje datoteke određene veličine. Sljedeći primjer kontinuirano sprema događaje u datoteke <10MB:
sysdig -C 10 -w nadzor-wordpress.scap

To će stvoriti gomilu datoteka ne veće od 10 MB:

ls -lh nadzor-wordpress *
-rw-r - R-. 1 korijen korijena 9.6M 7. siječnja 17:13 monitoring-wordpress.scap0 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:14 monitoring-wordpress.scap2 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:14 monitoring-wordpress.scap3 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:14 monitoring-wordpress.scap4 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:14 monitoring-wordpress.scap5 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:14 monitoring-wordpress.scap6 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 korijen korijena 6,4M 7. siječnja 17:14 monitoring-wordpress.scap8
  • Navedite maksimalni broj datoteka koje Sysdig treba zadržati sa -W zastavom. Na primjer, možete kombinirati -C i -W zastave na taj način:
sysdig -C 10 -W 4 -w nadzor-wordpress.scap

Gornja naredba zadržat će samo posljednje četiri datoteke za snimanje:

ls -lh nadzor-wordpress *
-rw-r - R-. 1 korijen korijena 7.2M 7. siječnja 17:21 monitoring-wordpress.scap0 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:21 monitoring-wordpress.scap1 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:21 nadzor-wordpress.scap2 -rw-r - r--. 1 korijen korijena 9.6M 7. siječnja 17:21 monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w monitoring-wordpress.scap

Praćenje u stvarnom vremenu

Pomoću Sysdig-a možete analizirati i podatke u stvarnom vremenu. Na prvi pogled, ovo se može činiti zastrašujućim zadatkom, jer se, prema zadanim postavkama, svi događaji kontinuirano ispisuju na konzoli. Srećom, dlijeta su tu da pomognu.

Uzmimo primjer.

Analizirajte svoje procese na osnovi kontejnera

  1. Za popis spremnika pokrenite sljedeću naredbu:
docker ps
ID KONTEJNERA ZAJEDNICA Stvorena STATUSNA PORTSKA IMENA 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" prije 9 minuta gore 9 minuta sysdig 06def7875617 wordpress: najnoviji "docker-entrypoint.s…" prije 3 sata gore 3 sata 0.0.0.0.0.8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5,7 "docker-entrypoint.s…" prije 3 sata gore 3 sata 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Možete analizirati procese koji se izvode u WordPress spremniku pomoću:

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

3. Slično tome, možete analizirati procese koji se izvode u MySQL spremniku:

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

Imajte na umu da Sysdig, ne razlikujući se mnogo od ovog primjera, može nadzirati mrežni promet, upotrebu diska i tako dalje.

U ovom su udžbeniku prešli preko osnova upotrebe Sysdig-a da biste dobili jasnije razumijevanje aktivnosti koju generiraju vaši spremnici. Primjeri u ovom postu na blogu pomogli su vam da započnete, a u budućim tutorijalama pokazat ćemo vam kako koristiti Csysdig i Sysdig Inspect.