Sysdig: Hva det er og hvordan du bruker det

Sysdig er et universelt systemsynlig verktøy med støtte for containere. Det som gjør Sysdig spesiell, er at den kobler seg inn i maskinens kjerne og segregerer informasjonen per container. For omfanget av denne opplæringen vil vi fokusere på åpen kildekode-versjonen av Sysdig.

I de neste seksjonene vil du:

  • Installer Sysdig
  • Spinn opp en Wordpress-installasjon ved hjelp av docker-compose
  • Bruk Sysdig til å samle hendelser og analysere dem på et senere tidspunkt
  • Bruk Sysdig til å analysere data i sanntid

Forutsetninger

  • Docker er installert på systemet ditt. For detaljer om installering av Docker, se Installere Docker-siden.
  • Docker Compose er installert på systemet ditt. Se siden Install Docker Compose for å få instruksjoner om hvordan du installerer Docker Compose.
  • Kjerneoverskriftene er installert på vertssystemet.

Installer Sysdig

Følg disse trinnene for å installere Sysdig inne i en Docker-beholder:

  1. Utfør følgende kommando for å trekke Sysdig Docker-bildet i et terminalvindu:
docker pull sysdig / sysdig
Bruker standardkode: siste siste: Trekker fra sysdig / sysdig 2967486b0658: Trekk komplett 78101b780c72: Trekk komplett 7e78b657334d: Trekk fullstendig 650327159ca8: Trekk komplett 47ebf73ab754: Trekk komplett bf51ac76a6d9: Pull complete 0cd114d006d Pull complete 6de86c8ed6e9: Pull complete 8d1825f8be4b: Pull complete Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Lastet ned nyere bilde for sysdig / sysdig:

2. Kjør Sysdig i en container ved å gå inn i:

docker run -i -t --name sysdig - privilegerte -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
* Sette opp / usr / src-koblinger fra verten * Laste ut sysdig-sonde, hvis til stede * Kjører dkms install for sysdig Feil! ekko Kjerneoverskriftene for kjernen 3.10.0-957.12.2.el7.x86_64 kan ikke finnes 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. * Å kjøre dkms build mislyktes, kunne ikke finne /var/lib/dkms/sysdig/0.26.4/build/make.log * Prøver å laste inn et system sysdig-sonde, hvis det er til stede * Prøver å finne forhåndskompilert sysdig-sonde for 3.10 .0-957.12.2.el7.x86_64 Fant kjernekonfigur på /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Prøver å laste ned forhåndskompilerte moduler 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 Last ned vellykket, lasting av modulrot @ 7b14a23f22eb: / #

Noen ting å merke om kommandoen ovenfor:

  • Flagget -i holder STDIN åpen.
  • Parametre - privilegert gir tilgang til alle enheter på verten. Den setter også SELinux slik at prosessene som kjører inne i beholderen har samme tilgang til verten som en prosess som kjører på verten.
  • Flagget -v spesifiserer listen over filer (på verten) som Sysdig kan få tilgang til.

Spinn opp en Wordpress-installasjon

I denne delen vil du installere Wordpress ved å bruke docker-komponere-kommandoen.

  1. I et nytt terminalvindu flytter du til prosjektkatalogen din og skriver følgende kommandoer:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Lag en fil som heter docker-komponer med følgende innhold:

versjon: '3.3' tjenester: db: image: mysql: 5.7 bind: - db_data: / var / lib / mysql omstart: alltid miljø: MYSQL_ROOT_PASSWORD: hvernigordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: image:: wordpress: siste porter: - "8000: 80" omstart: alltid miljø: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {}

3. Kjør kommandoen docker-komponere i frittliggende modus med:

docker-komponere opp -d
Opprette nettverk "wordpress-sysdig_default" med standarddriveren Opprette volum "wordpress-sysdig_db_data" med standard driver Trekke wordpress (wordpress: siste) ... siste: Trekke fra bibliotek / wordpress 8ec398bc0356: Trekk fullstendig 85cf4fc86478: Trekk komplett 970dadf4ccb6: Pull complete 8c04561117a4: Pull komplett d6b7434b63a2: Pull komplett 83d8859e9744: Pull komplett 9c3d824d0ad5: Pull komplett 9e316fd5b3b3: Pull komplett 578b40496c37: Pull komplett 814ae7711d3c: Pull komplett 4896fed78b6b: Pull komplett e74d71e9611d: Pull komplett 46017765526c: Pull komplett 280386098458: Pull komplett f32eb0d8c540: Trekk komplett 5c47b9ea747a: Trekk komplett ecda5b7aad12: pull komplett 84256a6b6b44: pull komplett 35d4f385efb7: pull komplett bf697c2ae701: pull komplett d054b015f084: pull komplett Digest: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Status: Lastet ned nyere bilde for WordPress: siste Opprette wordpress-sysdig_db_1 ... gjort Opprette wordpress-sysdig_word trykk_1 ... ferdig

4. Du kan bekrefte statusen til containerne dine med:

docker ps

Hvis alt går bra, bør du se noe som ligner på følgende utdata:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f390eec29f52 wordpress: last "docker-entrypoint.s ..." For omtrent et minutt siden Up About a minute 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. s… "For omtrent ett minutt siden Up About a minute 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "13 minutter siden Opp 13 minutter sysdig

5. Nå er Wordpress i gang. Pek nettleseren din til http: // localhost: 8000 for å starte installasjonsveiviseren:

6. Når installasjonsveiviseren er ferdig, la oss gå videre og opprette et eksempelinnlegg:

Samler inn data til en fil

I denne delen viser vi hvordan du kan bruke Sysdig til å samle hendelser og analysere dem på et senere tidspunkt.

  1. Hvis du vil dumpe alle fangede hendelser til en fil, flytter du til Sysdig-beholderen og skriver inn følgende kommando:
sysdig -w monitoring-wordpress.scap

2. I et nytt terminalvindu, bruk ab til å sende inn 10000 forespørsler med maksimalt 100 forespørsler som kjører samtidig:

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

Merk at utdataene ovenfor ble avkortet for korthet.

3. Gå tilbake til turneen i Sysdig-beholderen, og stopp datainnsamlingen ved å legge inn “CTRL + C”.

Analysere data

Hvis du ser på størrelsen på overvåking-wordpress.scap-filen, vil du legge merke til at Sysdig fanget ikke mindre enn 80M data:

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

For å finne veien gjennom dette fjellet med data, bruker du noe som kalles meisel.

En meisel er i utgangspunktet et Lua-skript som analyserer hendelsesstrømmen og utfører nyttige handlinger.

Du kan kjøre følgende kommando for å vise listen over meisler:

sysdig -cl
Kategori: Søknad --------------------- httplog HTTP-forespørselslogg httptop Topp HTTP-forespørsler memcachelog memcached forespørselslogg Kategori: CPU-bruk ---------- --------- spektrogram Visualiser OS-latenstid i sanntid. subsecoffset Visualiser eksekveringstid for subsecond offset. topcontainers_cpu Topp containere etter CPU-bruk topprocs_cpu Toppprosesser etter CPU-bruk Kategori: Feil ---------------- topcontainers_error Toppcontainere etter antall feil topfiles_errors Toppfiler etter antall feil topprocs_errors toppprosesser etter antall av feil

Merk at utdataene ovenfor ble avkortet for korthet.

For å hente detaljert informasjon om en meisel, kjør sysdig-kommandoen etterfulgt av -i-flagget og navnet på beitelaget, som i følgende eksempel:

sysdig -i httptop
Kategori: Søknad --------------------- httptop Topp HTTP-forespørsler Vis topp HTTP-forespørsler av: ncalls, time eller bytes Args: [string] av - Vis topp HTTP-forespørsler av: ncalls, tid eller av tes, standard er ncalls

Fortsetter vårt eksempel, slik kan du bruke httptop meiselen til å vise de beste HTTP-forespørslene:

sysdig -r monitoring-wordpress.scap -c httptop
ncalls-metoden 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/db39680b63ac47a1d989da7b2427017017017017017017

Du kan se den samme informasjonen i et containervennlig format med -beholderflagget:

sysdig -r monitoring-wordpress.scap -c httptop -container
ncalls containermetode url ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 vert GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo ALTERNATIVER * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24h7 / sy1457s7 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a2b7d7d07d

Graver dypere

Sysdig fanger innholdsrik informasjon som lar deg få detaljert innsikt i innerarbeidene til containerne dine. La oss anta at du kjører noen få containere og vil vite hvilken prosess som bruker mest CPU.

  1. Liste over containerne som var aktive i perioden du fanget opp hendelser:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. Du kan identifisere beholderen som forbrukte 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% vert 0,51% sysdig

3. Du kan grave enda dypere og identifisere den mest CPU-intensive prosessen med topprocs_cpu beitel:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name inneholder wordpress_1
CPU% prosess 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, gir ps meiselen et mer ordinært alternativ:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID BRUKER VIRT RES FDLIMIT CMD 5896 5896 root 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 307.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 tips

Hvis du kjører Sysdig for å fange hendelser som i eksemplet ovenfor (sysdig -w monitoring-wordpress.scap), vil hendelsesfilen vokse kontinuerlig til den bruker all tilgjengelig plass. Det er noen få metoder som kan forhindre at dette skjer:

  • Angi antall hendelser Sysdig skal fange ved å sende det -n-flagget. Når Sysdig fanger opp det angitte antallet hendelser, vil det automatisk avslutte:
sysdig -n 5000 -w overvåking-wordpress.scap
  • Bruk -C-flagget for å konfigurere Sysdig slik at det bryter fangsten til mindre filer av en spesifisert størrelse. Følgende eksempel lagrer hendelser kontinuerlig til filer <10MB:
sysdig -C 10 -w monitoring-wordpress.scap

Dette vil lage en haug med filer som ikke er større enn 10 MB:

ls -lh overvåking-wordpress *
RW-r - r-. 1 rotrot 9.6M 7. jan 17:13 monitoring-wordpress.scap0 -rw-r - r--. 1 rotrot 9.6M 7. jan 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 rotrot 9.6M 7. jan 17:14 monitoring-wordpress.scap2 -rw-r - r--. 1 rotrot 9.6M 7. jan 17:14 monitoring-wordpress.scap3 -rw-r - r--. 1 rotrot 9.6M 7. jan 17:14 monitoring-wordpress.scap4 -rw-r - r--. 1 rotrot 9.6M 7. jan 17:14 monitoring-wordpress.scap5 -rw-r - r--. 1 rotrot 9.6M 7. jan 17:14 monitoring-wordpress.scap6 -rw-r - r--. 1 rotrot 9.6M 7. jan 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 rotrot 6.4M 7. januar 17:14 monitoring-wordpress.scap8
  • Angi det maksimale antallet filer Sysdig skal ha med -W-flagget. For eksempel kan du kombinere flaggene -C og -W slik:
sysdig -C 10 -W 4-w overvåking-wordpress.scap

Kommandoen ovenfor vil bare beholde de fire siste fangstfilene:

ls -lh overvåking-wordpress *
RW-r - r-. 1 rotrot 7.2M 7. jan 17:21 monitoring-wordpress.scap0 -rw-r - r--. 1 rotrot 9.6M 7. jan 17:21 monitoring-wordpress.scap1 -rw-r - r--. 1 rotrot 9.6M 7. jan 17:21 monitoring-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7. jan 17:21 monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w monitoring-wordpress.scap

Sanntidsovervåking

Med Sysdig kan du også analysere data i sanntid. Ved første øyekast kan dette virke som en skremmende oppgave fordi alle hendelser som standard blir skrevet ut kontinuerlig på konsollen. Heldigvis er meisler her for å hjelpe.

La oss ta et eksempel.

Analyser prosessene dine på basis av en beholder

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

2. Du kan analysere prosessene som kjører i WordPress-beholderen med:

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

3. På samme måte kan du analysere prosessene som kjører i MySQL-beholderen:

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

Merk at Sysdig ikke er veldig forskjellig fra dette eksemplet, kan overvåke nettverkstrafikk, diskbruk og så videre.

I denne opplæringen har du gått over grunnleggende grunner for å bruke Sysdig for å få en klar forståelse av aktiviteten generert av containerne dine. Eksemplene i dette blogginnlegget hjalp deg med å komme i gang, og i fremtidige opplæringsprogrammer vil vi vise deg hvordan du bruker Csysdig og Sysdig Inspect.