Sysdig: Ce este și cum să îl folosești

Sysdig este un instrument universal de vizibilitate a sistemului cu suport pentru containere. Ceea ce face ca Sysdig să fie special, este că acesta se fixează în sâmburele mașinii și segregă informațiile pe fiecare container. Pentru scopul acestui tutorial, ne vom concentra pe versiunea open-source a Sysdig.

În secțiunile următoare, veți:

  • Instalați Sysdig
  • Rotiți o instalare Wordpress folosind docker-compose
  • Utilizați Sysdig pentru a colecta evenimente și a le analiza ulterior
  • Utilizați Sysdig pentru a analiza datele în timp real

Cerințe preliminare

  • Docker este instalat pe sistemul dvs. Pentru detalii despre instalarea Docker, consultați pagina Instalare Docker.
  • Docker Compose este instalat pe sistemul dvs. Consultați pagina Instalare Docker Compose pentru instrucțiuni despre cum se instalează Docker Compose.
  • Anteturile nucleului sunt instalate pe sistemul gazdă.

Instalați Sysdig

Urmați acești pași pentru a instala Sysdig în interiorul unui container Docker:

  1. Într-o fereastră de terminal, executați următoarea comandă pentru a trage imaginea Sysdig Docker:
docker pull sysdig / sysdig
Folosind eticheta implicită: cea mai recentă versiune: Trage complet de la sysdig / sysdig 2967486b0658: Trage complet 78101b780c72: Trage complet 7e78b657334d: Trage complet 650327159ca8: Trage complet 47ebf73ab754: Trage complet bf51ac76a6d9: Trage complet 0cd115d04d04d05dd05dd Trage complet 6de86c8ed6e9: Trage complet 8d1825f8be4b: Trage complet Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Stare: Descărcați o imagine mai nouă pentru sysdig / sysdig: ultima

2. Rulați Sysdig într-un container introducând:

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 / modules: / host / lib / modules: ro -v / usr: / host / usr: ro sysdig / sysdig
* Configurarea legăturilor / usr / src de la gazdă * Descărcarea sysdig-sondă, dacă este prezent * Rularea instalării dkms pentru eroarea sysdig! ecou Anteturile dvs. de kernel pentru kernel 3.10.0-957.12.2.el7.x86_64 nu pot fi găsite la /lib/modules/3.10.0-957.12.2.el7.x86_64/build sau /lib/modules/3.10.0-957.12 .2.el7.x86_64 / sursă. * Executarea construirii dkms a eșuat, nu a putut găsi /var/lib/dkms/sysdig/0.26.4/build/make.log * Încercarea de a încărca un sistem sysdig-sondă, dacă este prezent * Încercarea de a găsi sysdig-sonda precompilată pentru 3.10 .0-957.12.2.el7.x86_64 S-a găsit configurat kernel la /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Încercarea de a descărca modulul precompilat de la https://s3.amazonaws.com/download .draios.com / stable / sysdig-probe-binaries / sysdig-sonda-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Descărcați succesul, încărcarea modulului rădăcină @ 7b14a23f22eb: / #

Câteva lucruri de notat despre comanda de mai sus:

  • Steagul -i menține STDIN deschis.
  • Parametrul --privileged oferă acces la toate dispozitivele de pe gazdă. De asemenea, setează SELinux pentru a permite proceselor care rulează în interiorul containerului același acces la gazdă ca un proces care rulează pe gazdă.
  • Steagul -v specifică lista de fișiere (pe gazdă) la care Sysdig poate avea acces.

Rotiți o instalare Wordpress

În această secțiune, veți instala Wordpress folosind comanda docker-compose.

  1. Într-o nouă fereastră de terminal, treceți în directorul de proiecte și introduceți următoarele comenzi:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Creați un fișier numit docker-compose cu următorul conținut:

versiune: „3.3” servicii: db: imagine: mysql: 5.7 volume: - db_data: / var / lib / mysql restart: mereu mediu: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depinde_on: wordpress: ultimele porturi: - "8000: 80" repornește: întotdeauna mediu: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volume: db_data: {}

3. Rulați comanda docker-compose up în modul detașat cu:

docker-compune -d
Crearea rețelei "wordpress-sysdig_default" cu driverul implicit Crearea volumului "wordpress-sysdig_db_data" cu driverul implicit Tragerea wordpress (wordpress: cea mai recentă) ... cea mai recentă: extragere din bibliotecă / wordpress 8ec398bc0356: Trage complet 85cf4fc86478: Trage complet 970dadf4ccb6: 8c04561117a4: Pull d6b7434b63a2 complet: Pull complet 83d8859e9744: Pull 9c3d824d0ad5 complet: Pull 9e316fd5b3b3 complet: Pull complet 578b40496c37: Pull 814ae7711d3c complet: Pull 4896fed78b6b complet: Pull e74d71e9611d complet: Pull 46017765526c complet: Pull complet 280386098458: Pull f32eb0d8c540 complet: Trageți 5c47b9ea747a complet: Trageți ecda5b7aad12 complet: Trageți complet 84256a6b6b44: Trageți complet 35d4f385efb7: Pull bf697c2ae701 complet: Trageți d054b015f084 complet: Pull complet Digest: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Stare: imagine descărcate nouă pentru WordPress: cele mai recente Crearea WordPress-sysdig_db_1 ... Crearea WordPress-face sysdig_word apăsați_1 ... gata

4. Puteți verifica starea containerelor dvs. cu:

docker ps

Dacă totul merge bine, ar trebui să vezi ceva similar cu următoarea ieșire:

ID-ul CONTAINERULUI IMAGINEA CREATĂ STATUS NUMELE PORTI f390eec29f52 wordpress: ultimul "docker-entrypoint.s ..." Acum aproximativ un minut În sus Aproximativ un minut 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "mysql: 5.7" dock s ... "În urmă cu aproximativ un minut Sus Aproximativ un minut 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "acum 13 minute Sus 13 minute sysdig

5. Acum, Wordpress este în funcțiune. Îndreptați-vă browserul către http: // localhost: 8000 pentru a porni asistentul de instalare:

6. După terminarea asistentului de instalare, să mergem mai departe și să creăm un post de exemplu:

Colectarea datelor într-un fișier

În această secțiune, vom arăta cum puteți utiliza Sysdig pentru a colecta evenimente și a le analiza ulterior.

  1. Pentru a descărca toate evenimentele capturate într-un fișier, treceți la containerul Sysdig și introduceți următoarea comandă:
sysdig -w monitoring-wordpress.scap

2. Într-o fereastră nouă a terminalului, utilizați ab pentru a face 10000 de solicitări cu maximum 100 de solicitări care rulează simultan:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Este vorba despre ApacheBench, versiunea 2.3 <$ Revizuire: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licențiat la Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (aveți răbdare) Completate 100 de cereri Completate 200 de solicitări Completate 300 de cereri Completate 400 de solicitări Completate 500 de solicitări Completate 600 de solicitări Completate 700 de cereri Completate 800 de cereri Completate 900 de solicitări Completate 1000 de cereri Finalizate 1000 de cereri

Rețineți că ieșirea de mai sus a fost trunchiată pentru scurtitate.

3. Mutați-vă înapoi în turul containerului Sysdig și opriți capturarea datelor introducând „CTRL + C”.

Analiza datelor

Acum, dacă te uiți la dimensiunea fișierului de monitorizare-wordpress.scap, vei observa că Sysdig a capturat nu mai puțin de 80 M de date:

ls -lh monitoring-wordpress.scap
-rw-r - r--. 1 rădăcină rădăcină 80M 7 ianu. 16:28 monitoring-wordpress.scap

Pentru a-ți găsi drumul prin acest munte de date, vei folosi ceva numit dalta.

Un dalta este practic un script Lua care analizează fluxul de evenimente și execută acțiuni utile.

Puteți rula următoarea comandă pentru a afișa lista cu dalta:

sysdig -cl
Categorie: Aplicație --------------------- Jurnal de solicitări httplog httptop Top cereri HTTP memcachelog jurnal de solicitări memcached Categorie: Utilizare CPU ---------- --------- spectrogram Vizualizarea latenței sistemului de operare în timp real. subsecoffset Vizualizați timpul de execuție al compensării subsecundului. topcontainers_cpu Cele mai bune containere după utilizarea procesorului topprocs_cpu Procesele de top în funcție de utilizarea CPU Categorie: Erori ---------------- topcontainers_error Containere de top după numărul de erori topfiles_errors Fișiere de top după numărul de erori topprocs_errors procesele de top la număr de erori

Rețineți că ieșirea de mai sus a fost trunchiată pentru scurtitate.

Pentru a prelua informații detaliate despre un dalta, executați comanda sysdig urmată de steagul -i și numele dalta, ca în exemplul următor:

sysdig -i httptop
Categorie: Aplicație --------------------- httptop Top cereri HTTP Afișează cererile HTTP de top de: ncalls, time sau bytes Args: [string] by - Afișează tranzacțiile HTTP de top de: ncalls, time sau by tes, implicit este ncalls

Continuând exemplul nostru, iată cum puteți utiliza dalta httptop pentru a afișa cererile HTTP de top:

sysdig -r monitoring-wordpress.scap -c httptop
url metoda ncalls ------------------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 OPȚIUNI * 2 GET localhost: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / containers / 6bd8418eb03f / json 1 GET localhost / v1.24 / containere / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b742f8b8b7

Puteți vedea aceleași informații într-un format compatibil cu containerul cu steagul -pcontainer:

sysdig -r monitoring-wordpress.scap -c httptop -pcontainer
ncalls container metoda url ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 gazdă GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPȚIUNI * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / 1 / cont. cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da859

Săpând mai adânc

Sysdig captează informații bogate în conținut care vă permit să obțineți detalii despre funcționarea interioară a containerelor dvs. Să presupunem că executați câteva containere și doriți să știți ce proces consumă cel mai mult procesor.

  1. Enumerați containerele care au fost active în perioada în care ați capturat evenimente:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. Puteți identifica containerul care a consumat cel mai mult procesor cu:

sysdig -r monitoring-wordpress.scap -c topcontainers_cpu
CPU% container.name --------------------------------------------- ----------------------------------- 5,37% wordpress-sysdig_wordpress_1 1,35% wordpress-sysdig_db_1 gazdă 0,54% 0,51% sysdig

3. Puteți săpa și mai profund și puteți identifica cel mai intens proces de procesare cu dalta topprocs_cpu:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name conține wordpress_1
CPU PID Process 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

Dacă doriți să vedeți mai multe detalii, dalta ps oferă o alternativă mai verosioasă:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID USER VIRT RES FDLIMIT CMD 5896 5896 rădăcină 232.82M 22.32M 429496729 apache2 8383 8383 www-date 307.44M 25.46M 429496729 apache2 8422 8422 www-data 235.44M 22.90M 429496729 apache2 8424 8424 www-data 307.4467 67.46M 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 429496729 apache2 9300 9300 www 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Sfaturi utile

Dacă executați Sysdig pentru a captura evenimente ca în exemplul de mai sus (sysdig -w monitoring-wordpress.scap), fișierul eveniment va crește continuu până când va consuma tot spațiul disponibil. Există câteva metode care vă pot ajuta să preveniți acest lucru:

  • Specificați numărul de evenimente pe care ar trebui să le surprindă Sysdig trecându-l pe steagul -n. După ce Sysdig surprinde numărul specificat de evenimente, acesta va ieși automat:
sysdig -n 5000 -w monitorizare-wordpress.scap
  • Folosiți steagul -C pentru a configura Sysdig astfel încât să rupă captura în fișiere mai mici de o dimensiune specificată. Următorul exemplu salvează continuu evenimente în fișiere <10MB:
sysdig -C 10 -w monitorizare-wordpress.scap

Acest lucru va crea o grămadă de fișiere nu mai mari de 10 MB:

ls -lh monitorizare-wordpress *
-rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ian 17 17:13 monitorizare-wordpress.scap0 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ian 17 17:14 monitorizare-wordpress.scap1 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ian 17 17:14 monitorizare-wordpress.scap2 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ianu. 17:14 monitorizare-wordpress.scap3 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ianu. 17:14 monitorizare-wordpress.scap4 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ian 17 17:14 monitorizare-wordpress.scap5 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ian 17 17:14 monitorizare-wordpress.scap6 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ianu. 17:14 monitorizare-wordpress.scap7 -rw-r - r--. 1 rădăcină rădăcină 6.4M 7 ianu. 17:14 monitorizare-wordpress.scap8
  • Specificați numărul maxim de fișiere pe care Sysdig trebuie să le păstreze cu indicatorul -W. De exemplu, puteți combina steagurile -C și -W astfel:
sysdig -C 10-W 4 -w monitorizare-wordpress.scap

Comanda de mai sus va păstra doar ultimele patru fișiere de captare:

ls -lh monitorizare-wordpress *
-rw-r - r--. 1 rădăcină rădăcină 7.2M 7 ian 17 17:21 monitorizare-wordpress.scap0 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ianu. 17:21 monitorizare-wordpress.scap1 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ian 17 17:21 monitorizare-wordpress.scap2 -rw-r - r--. 1 rădăcină rădăcină 9.6M 7 ianu. 17:21 monitorizare-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10-W 4 -w monitorizare-wordpress.scap

Monitorizare în timp real

Cu Sysdig, puteți analiza, de asemenea, datele în timp real. La prima vedere, acest lucru poate părea o sarcină descurajantă deoarece, în mod implicit, toate evenimentele sunt tipărite continuu în consolă. Din fericire, dalta este aici pentru a vă ajuta.

Să luăm un exemplu.

Analizați-vă procesele pe bază de container

  1. Rulați următoarea comandă pentru a lista containerele:
docker ps
ID-ul CONTAINERULUI IMAGINEA CREATĂ STATUS NUMELE DE PORTI 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" Acum 9 minute Up 9 minute sysdig 06def7875617 wordpress: ultimul "docker-entrypoint.s ..." acum 3 ore În urmă cu 3 ore 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." acum 3 ore Up 3 ore 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Puteți analiza procesele care rulează în containerul WordPress cu:

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

3. În mod similar, puteți analiza procesele care rulează în containerul MySQL:

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

Rețineți că, nu diferă cu mult de acest exemplu, Sysdig poate monitoriza traficul de rețea, utilizarea discului etc.

În acest tutorial, ați trecut peste elementele fundamentale ale utilizării Sysdig pentru a obține o înțelegere clară a activității generate de containerele dvs. Exemplele din acest post de blog v-au ajutat să începeți și, în tutorialele viitoare, vă vom arăta cum să utilizați Csysdig și Sysdig Inspect.