Sysdig: Wat et ass a wéi een et benotzt

Sysdig ass e universal System Visibilitéitstool mat Ënnerstëtzung fir Container. Wat Sysdig speziell mécht, ass datt et sech selwer an de Kär vun der Maschinn haakst an d'Informatioun op enger Per-Container Basis segreéiert. Fir den Ëmfang vun dësem Tutorial, wäerte mir eis op d'fräi Quellversioun vu Sysdig fokusséieren.

An den nächsten Abschnitter wäert Dir:

  • Sysdig installéieren
  • Spin eng Wordpress Installatioun mat Hëllef vun Docker-Compose
  • Benotzt Sysdig fir Eventer ze sammelen an se zu engem spéideren Zäitpunkt ze analyséieren
  • Benotzt Sysdig fir Daten an Echtzäit ze analyséieren

Viraussetzunge

  • Docker ass op Ärem System installéiert. Fir Detailer iwwer d'Docker installéieren, kuckt op d'Installatioun Docker Säit.
  • Docker Compose ass op Ärem System installéiert. Kuckt d'Installatiounssäit Docker Compose fir Instruktiounen iwwer d'Installatioun vun Docker Compose.
  • D'Kernel Header ginn am Host-System installéiert.

Sysdig installéieren

Follegt dës Schrëtt fir Sysdig an engem Docker Container z'installéieren:

  1. An enger terminaler Fënster, fuert de folgenden Kommando aus fir de Sysdig Docker Bild ze zéien:
docker zéien sysdig / sysdig
Benotzend Standardtag: Neist lescht: Pulling aus sysdig / sysdig 2967486b0658: Pull complete 78101b780c72: Pull complete 7e78b657334d: Pull complete 650327159ca8: Pull complete 47ebf73ab754: Pull complete bf51ac76a6d9: Pull complete 0cd6460000 pd6d07d Pull komplett 6de86c8ed6e9: Pull komplett 8d1825f8be4b: Pull complete Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Erofgelueden neit Bild fir sysdig / sysdig: lescht

2. Run Sysdig an engem Container andeems Dir:

docker lafen -i -t --name sysdig --privilegéiert -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
* Ariichten / usr / src Linken vum Host * Sysdig-Sond eroflueden, wa präsent * Running dkms installéiere fir sysdig Feeler! echo Är Kernel Header fir Kärelen 3.10.0-957.12.2.el7.x86_64 kënnen net fonnt ginn op /lib/modules/3.10.0-957.12.2.el7.x86_64/build oder /lib/modules/3.10.0-957.12 .2.el7.x86_64 / Quell. * Running dkms build failed, could not find /var/lib/dkms/sysdig/0.26.4/build/make.log * Probéiert e System ze laden sysdig-probe, wa präsent * Probéiert de prekompiléierte sysdig-probe fir 3.10 ze fannen .0-957.12.2.el7.x86_64 Found kernel config at /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Probéiert de prekompiléierte Modul erofzelueden vum https://s3.amazonaws.com/download .draios.com / stabil / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Download erfollegräich, Luede Modul root @ 7b14a23f22eb: / #

E puer Saachen fir iwwer de genannte Kommando ze notéieren:

  • Den -i Fändel hält de STDIN op.
  • Den --privilegéierten Parameter gëtt Zougang zu all Geräter am Host. Och setzt SELinux datt d'Prozesser am Bann vum Container de selwechte Zougang zum Host erlaben wéi e Prozess deen op dem Host leeft.
  • De -v Fändel spezifizéiert d'Lëscht vun Dateien (am Host) op deem Sysdig Zougang kann.

Spin Up eng Wordpress Installatioun

An dëser Sektioun installéiert Dir Wordpress mam Kommando docker-compose.

  1. An enger neier Terminalfenster, réckelt an Äre Projetsregister an tippt folgend Kommandoen:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Erstellt eng Datei mam Numm Docker-Compose mat dem folgenden Inhalt:

Versioun: '3.3' Servicer: db: image: mysql: 5.7 Bänn: - db_data: / var / lib / mysql Restart: ëmmer Ëmfeld: MYSQL_ROOT_PASSWORD: puerordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: image: :__ wordpress: lescht Ports: - "8000: 80" Restart: ëmmer Ëmfeld: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress Volumen: db_data: {}

3. Run den Docker-Compos-up Kommando am ofgeschlossene Modus mat:

docker-komponéieren up -d
Netzwierk erstellen "wordpress-sysdig_default" mam Standarddreiwer Erstellt Volumen "wordpress-sysdig_db_data" mam Standarddreiwer Pulling wordpress (wordpress: leschten) ... lescht: Pulling from Library / wordpress 8ec398bc0356: Pull complete 85cf4fc86478: Pull complete 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: Pull komplett 5c47b9ea747a: Pull komplett ecda5b7aad12: Pull komplett 84256a6b6b44: Pull komplett 35d4f385efb7: Pull komplett bf697c2ae701: Pull komplett d054b015f084: Pull komplett erbléckt: sha256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Status: erofgeluede Neien Bild fir geschter: neisten Créatioun geschter-sysdig_db_1 ... gemaach Créatioun geschter-sysdig_word press_1 ... gemaach

4. Dir kënnt de Status vun Äre Container verifizéieren mat:

docker ps

Wann alles gutt leeft, sollt Dir eppes ähnlech wéi de folgenden Ausgang gesinn:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f390eec29f52 wordpress: last "docker-entrypoint.s ..." Virun enger Minutt Up Iwwer eng Minutt 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. s… "Virun enger Minutt Up Virun enger Minutt 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "virun 13 Minutten Up 13 Minutten sysdig

5. Elo ass Wordpress a leeft. Wielt Äre Browser op http: // localhost: 8000 fir d'Installatioun Wizard ze starten:

6. Wann d'Installatiouns-Assistent fäerdeg ass, loosst eis e Probe Post maachen:

Daten sammelen an eng Datei

An dëser Sektioun wäerte mir weisen wéi Dir Sysdig benotze kënnt fir Eventer ze sammelen an se zu engem spéideren Zäitpunkt ze analyséieren.

  1. Fir all erfaasst Eventer an eng Datei ze dumpelen, réckelen an de Sysdig Container, a gitt de folgenden Kommando:
sysdig -w Iwwerwaachung-wordpress.scap

2. An enger neier Terminal Fenster benotzt ab fir 10000 Ufroen ze maachen mat maximal 100 Ufroe gläichzäiteg:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Dëst ass ApacheBench, Versioun 2.3 <$ Versioun: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Lizenzéiert vun der Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (sief gedelleg) 100 Ufroën ofgeschloss 200 Ufroën ofgeschloss 300 Ufroën fäerdeg 300 Ufroën ofgeschloss 400 Ufroen ofgeschloss 500 Ufroen ofgeschloss 600 Ufroën ofgeschloss 700 Ufroën fäerdeg 800 Ufroën fäerdeg 900 Ufroën fäerdeg 1000 Ufroën fäerdeg 1000 Ufroën

Notéiert datt den uewe genannte Ausgang fir Kuerzgeschäftelung gekierzt gouf.

3. Gitt zréck an den Tour Sysdig Container a stoppt d'Donnéeën unzeginn andeems Dir "CTRL + C" agitt.

Donnéeën analyséieren

Elo, wann Dir d'Gréisst vun der Iwwerwaachung-wordpress.scap Datei kuckt, mierkt Dir datt Sysdig net manner wéi 80M Daten agefaang huet:

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

Fir Äre Wee duerch dëse Bierg vun Daten ze fannen, benotzt Dir eppes dat eng Beitel genannt gëtt.

Eng Biesel ass grondsätzlech e Lua Skript dat den Event Stream analyséiert an nëtzlech Aktiounen ausféiert.

Dir kënnt de folgenden Kommando ausmaachen fir d'Lëscht vun de Chiselen ze weisen:

sysdig -cl
Kategorie: Applikatioun --------------------- httplog HTTP Ufro Log httptop Top HTTP Ufroen memcachelog memcached Ufroen Log Kategorie: CPU Benotzung ---------- --------- Spektrogramm Visualiséiere OS latency an Echtzäit. subsecoffset Visualiséieren subsecond Offset Ausféierung Zäit. topcontainers_cpu Top Container no CPU Benotzung topprocs_cpu Top Prozesser duerch CPU Benotzung Kategorie: Feeler ---------------- topcontainers_error Top Container no Zuel vu Feeler topfiles_errors Top Dateien no Zuel vu Feeler topprocs_errors Top Prozesser per Nummer vu Feeler

Notéiert datt den uewe genannte Ausgang fir Kuerzgeschäftelung gekierzt gouf.

Fir detailléiert Informatioun iwwer e Chisel z'erhalen, lafen de sysdig Kommando gefollegt vum -i Fändel an den Numm vum Chisel, wéi an de folgenden Beispill:

sysdig -i httptop
Kategorie: Applikatioun --------------------- httptop Top HTTP-Ufroen Show Top HTTP-Ufroen vun: ncalls, Zäit oder Bytes Args: [string] vun - Show Top HTTP Transaktiounen vun: ncalls, Zäit oder duerch Tes, Standard ass ncalls

Weider eist Beispill, hei ass wéi Dir de httptop Chisel benotze kënnt fir déi Top HTTP-Ufroen ze weisen:

sysdig -r monitoring-wordpress.scap -c httptop
ncalls Method url ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 Optiounen * 2 GET localhost: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / Container / 6bd8418eb03f / json 1 GET localhost / v1.24 / Behälter / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b234d738b7a7a7b2b

Dir kënnt déiselwecht Informatioun an engem Container-frëndlecht Format mam -Pcontainer Fändel gesinn:

sysdig -r monitoring-wordpress.scap -c httptop -pcontainer
ncalls Container Method url ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 Host GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPSCHREIWEN * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1ET4s7 / 1 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a2b7d7a7b

Gräift déif

Sysdig erfaasst inhaltlech räich Informatioun déi Iech detailléiert Abléck kritt an d'Innere Wierkung vun Äre Container. Loosst eis unhuelen datt Dir e puer Container leeft a wëlle wëssen, wéi ee Prozess deen am meeschte CPU verbraucht.

  1. Lëscht déi Container déi aktiv waren während der Period an där Dir d'Evenementer erfaasst hutt:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. Dir kënnt de Container identifizéieren deen de meeschte CPU verbraucht huet mat:

sysdig -r monitoring-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. Dir kënnt nach méi déif verdauen a mam CPU-intensiven Prozess mam Toprocs_cpu Schnouer z'identifizéieren:

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

Wann Dir méi Detailer wëllt gesinn, bitt de ps Chisel eng méi verbose Alternativ:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID USER 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 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 429490029 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

Nëtzlech Tipps

Wann Dir Sysdig lafe fir Eventer ze halen wéi am uewe genannte Beispill (sysdig -w monitoring-wordpress.scap), wäert d'Evenementdatei kontinuéierlech wuessen bis se all verfügbare Raum verbraucht. Et ginn e puer Methoden déi hëllefen kënnen dëst ze verhënneren:

  • Gitt d'Zuel vun den Evenementer un, déi Sysdig sollt erfëllen, andeems en den -n Fändel passéiert. Soubal d'Sysdig déi spezifizéiert Unzuel vun Evenementer erfaasst huet, gëtt se automatesch eraus:
sysdig -n 5000 -w Iwwerwachung-wordpress.scap
  • Benotzt den -C Fändel fir Sysdig ze konfiguréieren sou datt se d'Erfaassung a méi kleng Dateie vun enger spezifizéierter Gréisst briechen. Déi folgend Beispill späichert kontinuéierlech Evenementer op Dateien <10MB:
sysdig -C 10 -w Iwwerwachung-wordpress.scap

Dëst wäert eng Rëtsch Dateien net méi grouss wéi 10 MB erstellen:

ls -lh Iwwerwaachung-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: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 Jan 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 Jan 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 root Root 6.4M Jan 7 17:14 monitoring-wordpress.scap8
  • Gitt déi maximal Unzuel vun Dateien spezifizéieren déi Sysdig sollt mam -W Fändel behalen. Zum Beispill kënnt Dir d'-C an -W Fändelen wéi sou kombinéieren:
sysdig -C 10 -W 4 -w Iwwerwaachung-wordpress.scap

De Kommando uewendriwwer behält nëmmen déi lescht véier Capture Dateien:

ls -lh Iwwerwaachung-Wordpress *
-rw-r - r--. 1 root Root 7.2M 7 Jan 17 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 Jan 17:21 monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w monitoring-wordpress.scap

Real-Time Iwwerwaachung

Mat Sysdig, kënnt Dir och Daten an Echtzäit analyséieren. Op den éischte Bléck kann dëst wéi eng beängschtegend Aufgab schéngen well, als Standard, all Eventer kontinuéierlech op d'Konsol gedréckt ginn. Glécklecherweis sinn d'Pisele hei fir ze hëllefen.

Loosst eis e Beispill huelen.

Analyséiert Är Prozesser op enger Per Container Basis

  1. Run de folgende Kommando fir Är Container ze Lëscht:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" virun 9 Minutten Up 9 Minutten sysdig 06def7875617 wordpress: leschten "docker-entrypoint.s ..." 3 Stonnen virun Up 3 Stonnen 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." virun 3 Stonnen Up 3 Stonnen 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Dir kënnt d'Prozesser analyséieren déi am WordPress Container lafen mat:

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

3. Ähnlech kënnt Dir d'Prozesser analyséieren déi am MySQL Container lafen:

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

Notiz datt, net vill anescht wéi dëst Beispill, Sysdig kann Netzverkéier iwwerwaachen, Diskverbrauch asw.

An dësem Tutorial ass Dir iwwer d'Grondlage vun der Benotzung vu Sysdig gaang fir e kloere Versteesdemech vun der Aktivitéit vun Äre Container ze kréien. D'Beispiller an dësem Blog Post hu gehollef Iech unzefänken, an zukünfteg Tutorials, mir weisen Iech wéi Dir Csysdig a Sysdig Inspect benotzt.