Sysdig: Hvad det er, og hvordan man bruger det

Sysdig er et universelt systemsynligt værktøj med understøttelse af containere. Det, der gør Sysdig specielt, er, at den kobler sig ind i maskinens kerne og adskiller oplysningerne pr. Container. Til omfanget af denne tutorial vil vi fokusere på open source-versionen af ​​Sysdig.

I de næste sektioner skal du:

  • Installer Sysdig
  • Spin op en Wordpress-installation vha. Docker-compose
  • Brug Sysdig til at samle begivenheder og analysere dem på et senere tidspunkt
  • Brug Sysdig til at analysere data i realtid

Forudsætninger

  • Docker er installeret på dit system. Yderligere oplysninger om installation af Docker finder du på siden Install Docker.
  • Docker Compose er installeret på dit system. Se siden Install Docker Compose for at få instruktioner om, hvordan du installerer Docker Compose.
  • Kernehovederne er installeret på værtssystemet.

Installer Sysdig

Følg disse trin for at installere Sysdig inde i en Docker-container:

  1. I et terminalvindue skal du udføre følgende kommando for at trække Sysdig Docker-billedet:
docker pull sysdig / sysdig
Brug af standardmærke: seneste seneste: Trækker fra sysdig / sysdig 2967486b0658: Træk komplet 78101b780c72: Træk komplet 7e78b657334d: Træk komplet 650327159ca8: Træk komplet 47ebf73ab754: Træk komplet bf51ac76a6d9: Pull komplet 0cd6d04d006 Træk komplet 6de86c8ed6e9: Træk komplet 8d1825f8be4b: Træk komplet Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Downloadet nyere billede til sysdig / sysdig: seneste

2. Kør Sysdig i en container ved at gå ind i:

docker run -i -t - name sysdig - privilegeret -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
* Opsætning / usr / src-links fra vært * Aflæsning af sysdig-probe, hvis den er til stede * Kørsel af dkms-installation til sysdig Fejl! echo Dine kerneoverskrifter for kerne 3.10.0-957.12.2.el7.x86_64 kan ikke findes på /lib/modules/3.10.0-957.12.2.el7.x86_64/build eller /lib/modules/3.10.0-957.12 .2.el7.x86_64 / kilde. * Kørsel af dkms build mislykkedes, kunne ikke finde /var/lib/dkms/sysdig/0.26.4/build/make.log * Forsøger at indlæse en system sysdig-sonde, hvis den er til stede * Forsøger at finde forudkompileret sysdig-sonde til 3.10 .0-957.12.2.el7.x86_64 Fundet kernekonfiguration på /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Forsøger at downloade forudkompileret modul fra 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 Download succes, lastning af modul root @ 7b14a23f22eb: / #

Et par ting at bemærke om ovennævnte kommando:

  • Flagget -i holder STDIN åben.
  • Parametret - privilegeret giver adgang til alle enheder på værten. Det indstiller også SELinux til at give processerne, der kører inde i containeren, den samme adgang til værten som en proces, der kører på værten.
  • Flagget -v specificerer listen over filer (på værten), som Sysdig kan få adgang til.

Spin op en Wordpress-installation

I dette afsnit installerer du Wordpress ved hjælp af kommandoen docker-compose.

  1. I et nyt terminalvindue skal du flytte til dit projektmappe og skrive følgende kommandoer:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Opret en fil kaldet docker-komponer med følgende indhold:

version: '3.3' tjenester: db: image: mysql: 5.7 bind: - db_data: / var / lib / mysql genstart: altid miljø: MYSQL_ROOT_PASSWORD: hvernigordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: image:: wordpress: seneste porte: - "8000: 80" genstart: altid miljø: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {}

3. Kør docker-komponere-kommandoen i løsrevet tilstand med:

docker-komponere up -d
Oprettelse af netværk "wordpress-sysdig_default" med standarddriveren Oprettelse af lydstyrke "wordpress-sysdig_db_data" med standarddriver Trækker wordpress (wordpress: seneste) ... seneste: Trækker fra bibliotek / wordpress 8ec398bc0356: Træk komplet 85cf4fc86478: Træk komplet 970dadf4ccb6: 8c04561117a4: Pull komplet d6b7434b63a2: Pull komplet 83d8859e9744: Pull komplet 9c3d824d0ad5: Pull komplet 9e316fd5b3b3: Pull komplet 578b40496c37: Pull komplet 814ae7711d3c: Pull komplet 4896fed78b6b: Pull komplet e74d71e9611d: Pull komplet 46017765526c: Pull komplet 280.386.098.458: Pull komplet f32eb0d8c540: Træk fuldstændig 5c47b9ea747a: Træk komplet ecda5b7aad12: Træk komplet 84256a6b6b44: Træk komplet 35d4f385efb7: Træk komplet bf697c2ae701: Træk komplet d054b015f084: Træk komplet Digest: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 status: Downloadet nyere billede for wordpress: nyeste Oprettelse wordpress-sysdig_db_1 ... gjort Oprettelse wordpress-sysdig_word press_1 ... færdig

4. Du kan bekræfte status for dine containere med:

docker ps

Hvis alt går godt, skal du se noget, der ligner følgende output:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f390eec29f52 wordpress: seneste "docker-entrypoint.s ..." Omkring et minut siden Op Om et minut 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. s… "For ca. et minut siden Op Om et minut 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "13 minutter siden Op 13 minutter sysdig

5. Nu er Wordpress i gang. Ret din browser til http: // localhost: 8000 for at starte installationsguiden:

6. Når installationsguiden er færdig, lad os gå videre og oprette et eksempelpost:

Indsamling af data til en fil

I dette afsnit viser vi, hvordan du kan bruge Sysdig til at samle begivenheder og analysere dem på et senere tidspunkt.

  1. Hvis du vil dumpe alle optagne begivenheder til en fil, skal du flytte til Sysdig-containeren og indtaste følgende kommando:
sysdig -w monitoring-wordpress.scap

2. Brug ab i et nyt terminalvindue til at fremsætte 10000 anmodninger med maksimalt 100 anmodninger, der kører samtidigt:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Dette er ApacheBench, version 2.3 <$ Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licenseret til Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (vær tålmodig) afsluttet 100 anmodninger afsluttet 200 anmodninger afsluttet 300 anmodninger afsluttet 400 anmodninger afsluttet 500 forespørgsler afsluttet 600 forespørgsler afsluttet 700 forespørgsler afsluttet 800 forespørgsler afsluttet 900 forespørgsler afsluttet 1000 forespørgsler afsluttet 1000 anmodninger

Bemærk, at ovennævnte output blev afkortet for korthed.

3. Gå tilbage til tour Sysdig-containeren, og stop indsamlingen af ​​data ved at indtaste “CTRL + C”.

Analyse af data

Hvis du nu ser på størrelsen på filen monitoring-wordpress.scap, vil du bemærke, at Sysdig erobrede ikke mindre end 80M data:

ls -lh monitoring-wordpress.scap
-rw-r - r--. 1 root root 80M 7 jan. 16:28 monitoring-wordpress.scap

For at finde din vej gennem dette bjerg af data, skal du bruge noget, der kaldes en mejsel.

En mejsel er dybest set et Lua-script, der analyserer begivenhedsstrømmen og udfører nyttige handlinger.

Du kan køre følgende kommando for at få vist listen med mejsler:

sysdig -cl
Kategori: Ansøgning --------------------- httplog HTTP-anmodningslog httptop Top HTTP anmodninger memcachelog memcached anmodningslog Kategori: CPU-brug ---------- --------- spektrogram Visualiser OS-latenstid i realtid. subsecoffset Visualiser eksekveringstid for subsecond offset. topcontainers_cpu Top containere efter CPU-brug topprocs_cpu Top processer efter CPU-brug Kategori: Fejl ---------------- topcontainers_error Top containere efter antal fejl topfiles_errors Topfiler efter antal fejl topprocs_errors topprocesser efter antal af fejl

Bemærk, at ovennævnte output blev afkortet for korthed.

For at hente detaljerede oplysninger om en mejsel skal du køre sysdig-kommandoen efterfulgt af -i-flagget og navnet på en mejsel, som i følgende eksempel:

sysdig -i httptop
Kategori: Ansøgning --------------------- httptop Top HTTP-anmodninger Vis top HTTP-anmodninger af: ncalls, tid eller bytes Args: [string] af - Vis top HTTP-transaktioner af: ncalls, tid eller ved tes, standard er ncalls

Fortsætter vores eksempel, her er hvordan du kan bruge httptop mejsel til at få vist de øverste HTTP-anmodninger:

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

Du kan se de samme oplysninger i et containervenligt format med -containerflagget:

sysdig -r monitoring-wordpress.scap -c httptop -container
ncalls containermetode url ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 vært GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo ALTERNATIVER * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.27h7 / sy1457 sy7 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a2b7d7db

Graver dybere

Sysdig indhenter indholdsrig information, der giver dig mulighed for at få detaljeret indsigt i dine indre containere. Lad os antage, at du kører et par containere og vil vide, hvilken proces der bruger den mest CPU.

  1. Liste over containere, der var aktive i den periode, hvor du fandt begivenheder:
sysdig -r monitoring-wordpress.scap -c lscontainere

2. Du kan identificere den beholder, der forbrugte mest CPU med:

sysdig -r monitoring-wordpress.scap -c topcontainers_cpu
CPU% container.navn --------------------------------------------- ----------------------------------- 5,37% wordpress-sysdig_wordpress_1 1,35% wordpress-sysdig_db_1 0,84% vært 0,51% sysdig

3. Du kan grave endnu dybere og identificere den mest CPU-intensive proces med topprocs_cpu mejsel:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name indeholder wordpress_1
CPU% 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

Hvis du vil se flere detaljer, giver ps mejslet et mere ordinært alternativ:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID-BRUGER VIRT RES FDLIMIT CMD 5896 5896 rod 232.82M 22.32M 429496729 apache2 8383 8383 www-data 307.44M 25.46M 429496729 apache2 8422 8422 www-data 235.44M 22.90M 429496729 apache2 8424 8424 www-data 297.42 apache2 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 429496700 ap 22,89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Nyttige tip

Hvis du kører Sysdig til at fange begivenheder som i ovenstående eksempel (sysdig -w monitoring-wordpress.scap), vil begivenhedsfilen vokse kontinuerligt, indtil den bruger al den tilgængelige plads. Der er nogle få metoder, der kan hjælpe med at forhindre, at dette sker:

  • Angiv antallet af begivenheder, som Sysdig skal fange ved at sende det -n-flagget. Når Sysdig fanger det specificerede antal begivenheder, afslutter det automatisk:
sysdig -n 5000 -w monitoring-wordpress.scap
  • Brug -C-flaget til at konfigurere Sysdig, så det bryder optagelsen i mindre filer af en specificeret størrelse. Følgende eksempel gemmer kontinuerligt begivenheder til filer <10MB:
sysdig -C 10-w monitoring-wordpress.scap

Dette vil skabe en masse filer, der ikke er større end 10 MB:

ls -lh overvågning-wordpress *
-rw-r - r--. 1 root root 9.6M 7. jan 17:13 monitoring-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7. jan 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 jan 17 17:14 monitoring-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7. jan 17:14 monitoring-wordpress.scap3 -rw-r - r--. 1 root root 9.6M 7. jan 17:14 monitoring-wordpress.scap4 -rw-r - r--. 1 root root 9.6M 7. januar 17:14 monitoring-wordpress.scap5 -rw-r - r--. 1 root root 9.6M 7 jan 17:14 monitoring-wordpress.scap6 -rw-r - r--. 1 root root 9.6M 7. januar 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 root root 6.4M 7. januar 17:14 monitoring-wordpress.scap8
  • Angiv det maksimale antal filer, som Sysdig skal have med -W-flagget. For eksempel kan du kombinere -C og -W-flagene sådan:
sysdig -C 10-W 4-w overvågning-wordpress.scap

Ovenstående kommando vil kun beholde de sidste fire indfangningsfiler:

ls -lh overvågning-wordpress *
-rw-r - r--. 1 root root 7.2M 7. januar 17:21 monitoring-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7. jan 17:21 monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7. jan 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 monitoring-wordpress.scap

Overvågning i realtid

Med Sysdig kan du også analysere data i realtid. Ved første øjekast kan dette virke som en skræmmende opgave, fordi alle hændelser som standard udskrives kontinuerligt på konsollen. Heldigvis er mejsler her for at hjælpe.

Lad os tage et eksempel.

Analyser dine processer på basis af en container

  1. Kør følgende kommando for at liste dine containere:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" 9 minutter siden Op 9 minutter sysdig 06def7875617 wordpress: seneste "docker-entrypoint.s ..." 3 timer siden Op 3 timer 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." 3 timer siden Op 3 timer 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Du kan analysere processerne, der kører i WordPress-containeren med:

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

3. Tilsvarende kan du analysere processerne, der kører i MySQL-beholderen:

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

Bemærk, at Sysdig ikke meget forskellig fra dette eksempel, kan overvåge netværkstrafik, diskbrug osv.

I denne tutorial er du gået over grundlæggende forhold ved at bruge Sysdig for at få en klar forståelse af aktiviteten genereret af dine containere. Eksemplerne i dette blogindlæg hjalp dig med at komme i gang, og i fremtidige tutorials viser vi dig, hvordan du bruger Csysdig og Sysdig Inspect.