Sysdig: Co to je a jak to používat

Sysdig je univerzální systém viditelnosti nástroj s podporou kontejnerů. Co dělá Sysdig zvláštním, je to, že se připojuje k jádru stroje a odděluje informace na základě kontejneru. V rámci tohoto tutoriálu se zaměříme na open-source verzi Sysdig.

V následujících sekcích budete:

  • Nainstalujte Sysdig
  • Roztočte instalaci Wordpress pomocí docker-compose
  • Pomocí programu Sysdig shromažďujte události a analyzujte je později
  • Použijte Sysdig k analýze dat v reálném čase

Předpoklady

  • Docker je nainstalován ve vašem systému. Podrobnosti o instalaci doku naleznete na stránce Install Docker.
  • Docker Compose je nainstalován ve vašem systému. Pokyny k instalaci aplikace Docker Compose naleznete na stránce Install Docker Compose.
  • Záhlaví jádra jsou nainstalována v hostitelském systému.

Nainstalujte Sysdig

Chcete-li nainstalovat Sysdig do kontejneru Docker, postupujte takto:

  1. V okně terminálu proveďte následující příkaz a stáhněte obrázek Sysdig Docker:
ukotvitelného tahu sysdig / sysdig
Pomocí výchozí značky: nejnovější nejnovější: Tahání ze systému sysdig / sysdig 2967486b0658: Tahání kompletní 78101b780c72: Tahání kompletní 7e78b657334d: Tahání kompletní 650327159ca8: Tahání kompletní bf51ac76a6d9: Pull kompletní 0cd116: Pull kompletní: Pullf8: Pull kompletní: Bdd617f4: Vytáhněte kompletní 6de86c8ed6e9: Vytáhněte kompletní 8d1825f8be4b: Vytáhněte kompletní Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Staženo novější obrázek pro sysdig / sysdig: sysdig / sysdig

2. Spusťte program Sysdig v kontejneru zadáním:

docker run -i -t - jméno 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
* Nastavení odkazů / usr / src z hostitele * Vykládání sysdig-sondy, pokud existuje * Spuštění instalace dkms pro sysdig Chyba! echo Vaše hlavičky jádra pro jádro 3.10.0-957.12.2.el7.x86_64 nelze najít na adrese /lib/modules/3.10.0-957.12.2.el7.x86_64/build nebo /lib/modules/3.10.0-957.12 .2el7.x86_64 / zdroj. * Spuštění sestavení dkms se nezdařilo, nelze najít /var/lib/dkms/sysdig/0.26.4/build/make.log * Pokus o načtení systémové sysdig-sondy, pokud existuje * Pokus o nalezení předkompilované sysdig-sondy pro 3.10 .0-957.12.2.el7.x86_64 Nalezená konfigurace jádra na adrese /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Pokouší se stáhnout předkompilovaný modul z https://s3.amazonaws.com/download .draios.com / stabilní / sysdig-sonda-binaries / sysdig-sonda-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Stahování bylo úspěšné, načítání kořenového modulu @ 7b14a23f22eb: / #

Několik poznámek k výše uvedenému příkazu:

  • Vlajka -i udržuje STDIN otevřený.
  • Parametr --privileged poskytuje přístup ke všem zařízením na hostiteli. Také nastavuje SELinux, aby umožnil procesům běžícím uvnitř kontejneru stejný přístup k hostiteli jako proces běžící na hostiteli.
  • Parametr -v určuje seznam souborů (na hostiteli), ke kterým má Sysdig přístup.

Roztočte instalaci Wordpress

V této části nainstalujete Wordpress pomocí příkazu docker-compose.

  1. V novém okně terminálu přejděte do adresáře projektů a zadejte následující příkazy:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Vytvořte soubor s názvem docker-compose s následujícím obsahem:

verze: '3.3' services: db: image: mysql: 5.7 volume: - db_data: / var / lib / mysql restart: vždy prostředí: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: závisí_on: - db image: wordpress: nejnovější porty: - "8000: 80" restart: vždy prostředí: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress svazky: db_data: {}

3. Spusťte příkaz docker-compose up v odpojeném režimu pomocí:

docker-compose up -d
Vytváření sítě "wordpress-sysdig_default" s výchozím ovladačem Vytváření svazku "wordpress-sysdig_db_data" s výchozím ovladačem Tahání wordpress (wordpress: nejnovější) ... nejnovější: Tahání z knihovny / wordpress 8ec398bc0356: Tahání dokončeno 85cf4fc86478: Tahání dokončeno 970dadf4cbcccccccccccc 8c04561117a4: Pull kompletní d6b7434b63a2: Pull kompletní 83d8859e9744: Pull kompletní 9c3d824d0ad5: Pull kompletní 9e316fd5b3b3: Pull kompletní 578b40496c37: Pull kompletní 814ae7711d3c: Pull kompletní 4896fed78b6b: Pull kompletní e74d71e9611d: Pull kompletní 46017765526c: Pull kompletní 280386098458: Pull kompletní f32eb0d8c540: Pull kompletní 5c47b9ea747a: vytáhnout kompletní ecda5b7aad12: vytáhněte kompletní 84256a6b6b44: vytáhněte kompletní 35d4f385efb7: vytáhněte kompletní bf697c2ae701: pull kompletní d054b015f084: vytáhněte kompletní Digest: sha256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Stav: Staženo novější obraz pro wordPress: nejnovější Vytvoření wordPress-sysdig_db_1 ... udělal Vytvoření wordpress-sysdig_word press_1 ... hotovo

4. Stav svých kontejnerů můžete ověřit pomocí:

docker ps

Pokud se vše povede dobře, měli byste vidět něco podobného následujícímu výstupu:

ID KONTAJNERU OBRÁZEK ​​PŘÍKAZ VYTVOŘENÝ STATUS JMÉNO PŘÍLOHY f390eec29f52 wordpress: nejnovější "docker-entrypoint.s ..." Asi před minutou Nahoru Asi minutou 0,0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. s ... "Asi před minutou nahoru Asi před minutou 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "před 13 minutami nahoru 13 minutami sysdig

5. Nyní je Wordpress v provozu. Chcete-li spustit průvodce instalací, přejděte do prohlížeče na adrese http: // localhost: 8000:

6. Jakmile je průvodce instalací hotový, jdeme na to a vytvoříme ukázkový příspěvek:

Sběr dat do souboru

V této sekci vám ukážeme, jak můžete použít Sysdig ke sběru událostí a jejich analýze později.

  1. Chcete-li vypsat všechny zachycené události do souboru, přesuňte se do kontejneru Sysdig a zadejte následující příkaz:
sysdig -w monitoring-wordpress.scap

2. V novém okně terminálu použijte ab k vytvoření 10 000 požadavků, přičemž současně může být spuštěno maximálně 100 požadavků:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Toto je ApacheBench, verze 2.3 <$ Revize: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licencováno pro Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (buďte trpěliví) Splněno 100 požadavků Splněno 200 požadavků Splněno 300 požadavků Splněno 400 požadavků Splněno 500 požadavků Splněno 600 požadavků Splněno 700 požadavků Splněno 800 požadavků Splněno 900 požadavků Splněno 1000 požadavků Dokončeno 1000 požadavků

Všimněte si, že výše uvedený výstup byl zkrácen pro stručnost.

3. Přejděte zpět na prohlídku kontejneru Sysdig a zastavte sběr dat zadáním „CTRL + C“.

Analýza dat

Nyní, když se podíváte na velikost souboru monitoring-wordpress.scap, zjistíte, že Sysdig zachytil nejméně 80 milionů dat:

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

Chcete-li najít cestu touto horou dat, použijte něco, čemu se říká dláto.

Sekáč je v podstatě Lua skript, který analyzuje tok událostí a provádí užitečné akce.

Chcete-li zobrazit seznam dlát, můžete spustit následující příkaz:

sysdig -cl
Kategorie: Aplikace --------------------- Protokol HTTP požadavků HTTP httptop Nejčastější požadavky HTTP Protokol protokolu Memcachelog Memcached Kategorie: CPU Použití ---------- --------- spectrogram Vizualizace latence OS v reálném čase. subsecoffset Vizualizujte čas provedení sekundového offsetu. topcontainers_cpu Nejlepší kontejnery podle využití CPU topprocs_cpu Nejlepší procesy podle využití CPU Kategorie: Chyby ---------------- topcontainers_error Nejlepší kontejnery podle počtu chyb topfiles_errors Nejlepší soubory podle počtu chyb topprocs_errors nejlepší procesy podle čísla chyb

Všimněte si, že výše uvedený výstup byl zkrácen pro stručnost.

Chcete-li získat podrobné informace o sekáči, spusťte příkaz sysdig následovaný příznakem -i a názvem sekáče, jako v následujícím příkladu:

sysdig -i httptop
Kategorie: Aplikace --------------------- httptop Nejčastější požadavky HTTP Zobrazit nejlepší požadavky HTTP podle: ncalls, time or bytes Args: [string] by - Zobrazit top HTTP transakce podle: ncalls, time or by tes, výchozí je ncalls

V následujícím příkladu uvádíme, jak můžete pomocí sekáče httptop zobrazit nejvyšší požadavky HTTP:

sysdig -r monitoring-wordpress.scap -c httptop
ncalls URL metody ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 MOŽNOSTI * 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 / kontejnery / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b2d3f9b2fc2b2fc2b2fc2b2fc2b2fc2b2fc2b2fc2b2fc2b2fc2b2fc2b2fc2b2fc2b2b2b2fc2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2bd2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2

Stejné informace můžete vidět ve formátu pro kontejner s příznakem -pcontainer:

sysdig -r monitoring-wordpress.scap -c httptop -pcontainer
ncalls URL method method ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 hostitel GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPTIONS * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / kontejnery / 06fs6 / kontejnery / 06fs6 / kontejnery / 06fs6 / kontejnery / 06fs6 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a7d989238f477389479382389479382389479389479389479389479389389479389479389479389479389479389479389459

Kopání hlouběji

Sysdig zachycuje informace bohaté na obsah, které vám umožní získat podrobné informace o vnitřním fungování vašich kontejnerů. Předpokládejme, že provozujete několik kontejnerů a chcete vědět, který proces spotřebovává nejvíce CPU.

  1. Seznam kontejnerů, které byly aktivní v období, ve kterém jste zachytili události:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. Můžete identifikovat kontejner, který spotřeboval nejvíce CPU, pomocí:

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% hostitel 0,51% sysdig

3. Pomocí sekáče topprocs_cpu můžete kopat ještě hlouběji a identifikovat nejnáročnější proces:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name obsahuje 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

Pokud chcete vidět více podrobností, nabízí sekáč ps více podrobnější alternativu:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID UŽIVATEL 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 849 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 426 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 946 426 426 426 426 426 426 426 426 426 426 426 22,89M 429496729 apache2 9372 9372 www-data 235,44M 22,89M 429496729 apache2 9413 9413 www-data 233,44M 20,77M 429496729 apache2

Užitečné tipy

Pokud spustíte program Sysdig pro zachycení událostí jako ve výše uvedeném příkladu (sysdig -w monitoring-wordpress.scap), bude soubor událostí růst nepřetržitě, dokud nevyužije veškerý dostupný prostor. K tomu může dojít několika způsoby:

  • Určete počet událostí, které by měl Sysdig zachytit předáním příznaku -n. Jakmile Sysdig zachytí určený počet událostí, automaticky se ukončí:
sysdig -n 5000 -w monitoring-wordpress.scap
  • Pomocí příznaku -C nakonfigurujte Sysdig tak, aby rozdělil zachycení na menší soubory určité velikosti. Následující příklad průběžně ukládá události do souborů <10 MB:
sysdig -C10 -w monitoring-wordpress.scap

Tím vytvoříte spoustu souborů ne větších než 10 MB:

ls -lh monitoring-wordpress *
-rw-r - r--. 1 root root 9.6M 7. ledna 17:13 monitoring-wordpress.scap0-rw-r - r--. 1 root root 9.6M 7. ledna 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7. ledna 17:14 monitoring-wordpress.scap2-rw-r - r--. 1 root root 9.6M 7. ledna 17:14 monitoring-wordpress.scap3-rw-r - r--. 1 root root 9.6M 7. ledna 17:14 monitoring-wordpress.scap4-rw-r - r--. 1 root root 9.6M 7. ledna 17:14 monitoring-wordpress.scap5-rw-r - r--. 1 root root 9.6M 7. ledna 17:14 monitoring-wordpress.scap6-rw-r - r--. 1 root root 9.6M 7. ledna 17:14 monitoring-wordpress.scap7-rw-r - r--. 1 kořenový kořen 6.4M 7. ledna 17:14 monitoring-wordpress.scap8
  • Určete maximální počet souborů, které má Sysdig zachovat s příznakem -W. Například můžete kombinovat příznaky -C a -W takto:
sysdig -C10-W 4 -w monitoring-wordpress.scap

Výše uvedený příkaz zachová pouze poslední čtyři soubory zachycení:

ls -lh monitoring-wordpress *
-rw-r - r--. 1 kořenový kořen 7.2M 7. ledna 17:21 monitoring-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7. ledna 17:21 monitoring-wordpress.scap1-rw-r - r--. 1 root root 9.6M 7. ledna 17:21 monitoring-wordpress.scap2-rw-r - r--. 1 root root 9.6M 7. ledna 17:21 monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C10 -W 4 -w monitoring-wordpress.scap

Monitorování v reálném čase

S Sysdig můžete také analyzovat data v reálném čase. Na první pohled se to může zdát jako skličující úkol, protože ve výchozím nastavení jsou všechny události průběžně vytištěny na konzoli. Naštěstí jsou tu dláta, aby pomohli.

Vezměme si příklad.

Analyzujte své procesy na základě kontejneru

  1. Spusťte následující příkaz a seznam kontejnerů:
docker ps
ID KONTAJNERU OBRÁZEK ​​PŘÍKAZ VYTVOŘENÝ STATUS JMÉNO PŘÍSTUPŮ 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" před 9 minutami Nahoru 9 minutami sysdig 06def7875617 wordpress: nejnovější "docker-entrypoint.s ..." před 3 hodinami Nahoru 3 hodiny 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s…" před 3 hodinami nahoru 3 hodiny 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Procesy spuštěné v kontejneru WordPress můžete analyzovat pomocí:

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

3. Podobně můžete analyzovat procesy spuštěné v kontejneru MySQL:

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

Všimněte si, že není příliš odlišný od tohoto příkladu, Sysdig může monitorovat síťový provoz, využití disku atd.

V tomto tutoriálu jste se seznámili se základy používání programu Sysdig, abyste získali jasnou představu o činnosti generované vašimi kontejnery. Příklady v tomto blogovém příspěvku vám pomohly začít a v budoucích tutoriálech vám ukážeme, jak používat Csysdig a Sysdig Inspect.