Sysdig: Čo to je a ako to používať

Sysdig je univerzálny systém viditeľnosti nástroj s podporou kontajnerov. Čo robí Sysdig špeciálnym, je to, že sa pripája do jadra stroja a oddeľuje informácie podľa jednotlivých kontajnerov. V rámci tejto príručky sa zameriame na otvorenú verziu programu Sysdig.

V nasledujúcich sekciách budete:

  • Nainštalujte program Sysdig
  • Roztočte inštaláciu Wordpress pomocou docker-compose
  • Pomocou programu Sysdig zbierajte udalosti a analyzujte ich neskôr
  • Použite Sysdig na analýzu údajov v reálnom čase

predpoklady

  • Docker je nainštalovaný vo vašom systéme. Podrobnosti o inštalácii Docker nájdete na stránke Install Docker.
  • Docker Compose je nainštalovaný vo vašom systéme. Pokyny na inštaláciu aplikácie Docker Compose nájdete na stránke Install Docker Compose.
  • Hlavičky jadra sú nainštalované v hostiteľskom systéme.

Nainštalujte program Sysdig

Ak chcete nainštalovať Sysdig vo vnútri kontajnera Docker, postupujte takto:

  1. V okne terminálu vykonajte nasledujúci príkaz, aby ste stiahli obraz doku Sysdig Docker:
ukotviť / vytrhnúť doku / sysdig
Pomocou predvolenej značky: najnovšej najnovšej: Vytiahnutie zo systému sysdig / sysdig 2967486b0658: Vytiahnutie dokončené 78101b780c72: Vytiahnutie úplné 7e78b657334d: Vytiahnutie kompletné 47ebf73ab754: Vytiahnutie úplné bf51ac76a6d9: Kompletné vytiahnutie: 0dd6: Pullf8: Pullf: Pullf: Pull: Pull: Pull: Pull: Pull: Pull: Pull. Vytiahnite úplné 6de86c8ed6e9: Vytiahnite úplné 8d1825f8be4b: Vytiahnite úplné Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Stav: Stiahnutý novší obrázok pre sysdig / sysdig: sysdig / sysdig

2. Spustite program Sysdig v kontajneri zadaním:

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
* Nastavenie odkazov / usr / src z hostiteľa * Vykladanie sondy sysdig, ak je k dispozícii * Spustenie inštalácie dkms pre chybu sysdig! echo Vaše hlavičky jadra pre jadro 3.10.0-957.12.2.el7.x86_64 nenájdete na adrese /lib/modules/3.10.0-957.12.2.el7.x86_64/build alebo /lib/modules/3.10.0-957.12 .2.el7.x86_64 / zdroj. * Spustenie zostavenia dkms zlyhalo, nepodarilo sa nájsť /var/lib/dkms/sysdig/0.26.4/build/make.log * Pokúšame sa načítať systémovú sondu sysdig, ak je k dispozícii * Pokúša sa nájsť predkompilovanú sysdig-sondu pre 3.10 .0-957.12.2.el7.x86_64 Našla sa konfigurácia jadra na adrese /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Pokúšam sa stiahnuť predkompilovaný 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 Stiahnutie bolo úspešné, načítanie root modulu @ 7b14a23f22eb: / #

Niekoľko poznámok k vyššie uvedenému príkazu:

  • Vlajka -i udržuje STDIN otvorený.
  • Parameter --privileged poskytuje prístup ku všetkým zariadeniam na hostiteľovi. Tiež nastavuje SELinux, aby umožnil procesom prebiehajúcim vo vnútri kontajnera rovnaký prístup k hostiteľovi ako proces bežiaci na hostiteľovi.
  • Parameter -v určuje zoznam súborov (na hostiteľovi), ku ktorým má Sysdig prístup.

Roztočte inštaláciu Wordpress

V tejto časti nainštalujete program Wordpress pomocou príkazu docker-compose.

  1. V novom okne terminálu sa presuňte do adresára projektov a zadajte nasledujúce príkazy:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Vytvorte súbor s názvom docker-compose s nasledujúcim obsahom:

verzia: '3.3' služby: db: image: mysql: 5.7 zväzky: - db_data: / var / lib / mysql restart: vždy prostredie: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: závisí_on: - db image: wordpress: najnovšie porty: - "8000: 80" reštart: vždy prostredie: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress zväzky: db_data: {}

3. Spustite príkaz docker-compose up v odpojenom režime s:

docker-compose up -d
Vytváranie siete „wordpress-sysdig_default“ s predvoleným ovládačom Vytváranie zväzku „wordpress-sysdig_db_data“ s predvoleným ovládačom Vytiahnutie wordpress (wordpress: najnovšie) ... najnovšie: Vytiahnutie z knižnice / wordpress 8ec398bc0356: Vytiahnutie dokončené 85cf4fc86478: Vytiahnutie dokončené 970dadf4cbcccccc hotovo 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: vytiahnuť kompletné ecda5b7aad12: vytiahnite kompletné 84256a6b6b44: vytiahnite kompletné 35d4f385efb7: vytiahnite kompletné bf697c2ae701: pull kompletné d054b015f084: vytiahnite kompletné Digest: sha256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Stav: Stiahnuté novšie obraz pre WordPress: najnovšie Vytvorenie Wordpress-sysdig_db_1 ... urobil Vytvorenie wordpress-sysdig_word press_1 ... hotovo

4. Stav svojich kontajnerov môžete overiť pomocou:

docker ps

Ak všetko pôjde dobre, mali by ste vidieť niečo podobné nasledujúcemu výstupu:

ID KONTAJNERU OBRÁZOK PRÍKAZ VYTVORENÝ STATUS NÁZVY PRÍSLUŠENSTVO f390eec29f52 wordpress: najnovšie „docker-entrypoint.s…“ Asi pred minútou Nahoru Asi o minútu 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. ...

5. Teraz je Wordpress v prevádzke. Ak chcete spustiť sprievodcu inštaláciou, nasmerujte prehliadač na adresu http: // localhost: 8000:

6. Po dokončení sprievodcu inštaláciou pokračujte a vytvorte ukážku príspevku:

Zhromažďovanie údajov do súboru

V tejto sekcii ukážeme, ako môžete použiť program Sysdig na zhromažďovanie udalostí a ich neskoršiu analýzu.

  1. Ak chcete výpis všetkých zachytených udalostí do súboru presunúť, prejdite do kontajnera Sysdig a zadajte nasledujúci príkaz:
sysdig -w monitoring-wordpress.scap

2. V novom okne terminálu použite ab na vykonanie 10000 požiadaviek s maximálnym počtom 100 požiadaviek bežiacich súčasne:

ab-n 1000 -c 100 http: // localhost: 8000 /? p = 7
Toto je ApacheBench, verzia 2.3 <$ Revízia: 1430300 $> Autorské práva 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licencované pre Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (buďte trpezliví) Splnených 100 požiadaviek Splnených 200 požiadaviek Splnených 300 požiadaviek Splnených 400 požiadaviek Splnených 500 požiadaviek Splnených 600 požiadaviek Splnených 700 požiadaviek Splnených 800 požiadaviek Splnených 900 požiadaviek Splnených 1000 žiadostí Ukončené 1 000 žiadostí

Všimnite si, že vyššie uvedený výstup bol skrátený kvôli stručnosti.

3. Prejdite späť na prehliadku kontajnera Sysdig a zastavte zaznamenávanie údajov zadaním „CTRL + C“.

Analýza údajov

Ak sa teraz pozriete na veľkosť súboru monitoring-wordpress.scap, všimnete si, že Sysdig zachytil najmenej 80 miliónov údajov:

ls -lh monitoring-wordpress.scap
-RW-r - r--. 1 koreňový koreň 80M 7. januára 16:28 monitoring-wordpress.scap

Aby ste si našli cestu cez túto horu údajov, budete používať niečo, čo sa nazýva sekáč.

Sekáč je v podstate Lua skript, ktorý analyzuje tok udalostí a vykonáva užitočné akcie.

Zoznam príkazov môžete zobraziť pomocou nasledujúceho príkazu:

sysdig -cl
Kategória: Aplikácia --------------------- Protokol HTTP žiadostí HTTP httptop Najvyššie požiadavky HTTP Protokol protokolu Memcachelog Memcached Request Category Kategória: CPU --------- spectrogram Vizualizácia latencie OS v reálnom čase. subsecoffset Vizualizujte čas vykonávania sekundového ofsetu. topcontainers_cpu Najlepšie nádoby podľa využitia CPU topprocs_cpu Najlepšie procesy podľa využitia CPU Kategória: Chyby ---------------- topcontainers_error Najlepšie kontajnery podľa počtu chýb topfiles_errors Najlepšie súbory podľa počtu chýb topprocs_errors najvyššie procesy podľa čísla chýb

Všimnite si, že vyššie uvedený výstup bol skrátený kvôli stručnosti.

Ak chcete získať podrobné informácie o sekáči, spustite príkaz sysdig, za ktorým nasleduje príznak -i a názov sekáča, ako v nasledujúcom príklade:

sysdig -i httptop
Kategória: Aplikácia --------------------- httptop Najlepšie HTTP požiadavky Zobraziť najlepšie HTTP požiadavky podľa: ncalls, time alebo bytes Args: [string] by - Zobraziť top HTTP transakcie podľa: ncalls, time or by tes, predvolená hodnota je ncalls

V nasledujúcom príklade uvádzame, ako môžete pomocou sekáča httptop zobraziť najčastejšie požiadavky HTTP:

sysdig -r monitoring-wordpress.scap -c httptop
Vyvoláva webovú adresu metódy ----------------------------------------------- --------------------------------- 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 / kontajnery / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901 1 GET localhost: 8000 /

Rovnaké informácie môžete vidieť vo formáte prijateľnom pre nádoby s príznakom -pcontainer:

sysdig -r monitoring-wordpress.scap -c httptop -pcontainer
Vyvolá adresu URL metódy kontajnera ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1 000 hostiteľa GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPTIONS * 1 sysdig ZÍSKAJTE /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / materials / 06.2786shosting / 06.278sp6) cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a2d2d9d2d9d2d9d2d9d2d9d2d9d2d9d2d9d9d2d9d2d9d2d9d9d2d9d9d9d2d9d2d9d9d9d9d9d2d9d2d9d9d9d9d9d9d9d9d2d9d9d9d9d2d9d2d9d9d9d9d2d9d9d9d9d9d9d9d9d9d9d9d9d7d9d9d9d7d9d9d9d9d9d9d9d9d9d9d9d2dd7dd7327

Hĺbenie

Sysdig zachytáva informácie bohaté na obsah, vďaka ktorým získate podrobné informácie o vnútornom fungovaní kontajnerov. Predpokladajme, že prevádzkujete niekoľko kontajnerov a chcete vedieť, ktorý proces spotrebuje najviac procesora.

  1. Uveďte zoznam kontajnerov, ktoré boli aktívne počas obdobia, v ktorom ste zachytili udalosti:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. Môžete identifikovať kontajner, ktorý spotreboval najviac CPU, pomocou:

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% hostiteľa 0,51% sysdig

3. Pomocou sekáča topprocs_cpu môžete kopať ešte hlbšie a identifikovať proces s najväčšou náročnosťou na procesor:

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

Ak chcete vidieť viac podrobností, dláto ps ponúka oveľa podrobnejšiu alternatívu:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID USER virt RES FDLIMIT CMD 5896 5896 koreň 232.82M 22.32 429496729 apache2 8383 8383 www-dát 307.44M 25.46 429496729 apache2 8422 8422 www-dát 235.44M 22.90 429496729 apache2 8424 8424 www-dát 307.44M 25.46 429496729 apache2 8897 8897 www-dáta 235,44M 22,89M 429496729 apache2 9154 9154 www-dáta 235,44M 22,91M 429496729 apache2 9241 9241 www-dáta 307,44M 25,66M 429496729 apache2 9242 9242 www-data 307.44M 426 426 426 426 426 426 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žitočné tipy

Ak spustíte program Sysdig na zachytenie udalostí ako vo vyššie uvedenom príklade (sysdig -w monitoring-wordpress.scap), súbor udalostí bude rásť nepretržite, až kým nezaberie všetok dostupný priestor. Existuje niekoľko metód, ktoré môžu zabrániť tomu, aby sa to stalo.

  • Zadajte počet udalostí, ktoré má Sysdig zachytiť odovzdaním príznaku -n. Keď Sysdig zaznamená zadaný počet udalostí, automaticky sa ukončí:
sysdig -n 5000 -w monitoring-wordpress.scap
  • Pomocou príznaku -C nakonfigurujte Sysdig tak, aby rozdelil zachytenie na menšie súbory určitej veľkosti. Nasledujúci príklad nepretržite ukladá udalosti do súborov <10 ​​MB:
sysdig -C10-w monitoring-wordpress.scap

Takto sa vytvorí veľa súborov, ktoré nie sú väčšie ako 10 MB:

ls -lh monitoring-wordpress *
-RW-r - r--. 1 koreňový koreň 9.6M 7. januára 17:13 monitoring-wordpress.scap0 -rw-r - r--. 1 koreňový koreň 9.6M 7. januára 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 koreňový koreň 9.6M 7. januára 17:14 monitoring-wordpress.scap2-rw-r - r--. 1 koreňový koreň 9.6M 7. januára 17:14 monitoring-wordpress.scap3-rw-r - r--. 1 koreňový koreň 9.6M 7. januára 17:14 monitoring-wordpress.scap4-rw-r - r--. 1 koreňový koreň 9.6M 7. januára 17:14 monitoring-wordpress.scap5-rw-r - r--. 1 koreňový koreň 9.6M 7. januára 17:14 monitoring-wordpress.scap6-rw-r - r--. 1 koreňový koreň 9.6M 7. januára 17:14 monitoring-wordpress.scap7-rw-r - r--. 1 koreňový koreň 6.4M 7. januára 17:14 monitoring-wordpress.scap8
  • Zadajte maximálny počet súborov, ktoré má Sysdig uchovávať s príznakom -W. Napríklad môžete kombinovať príznaky -C a -W takto:
sysdig -C10-W4-w monitoring-wordpress.scap

Vyššie uvedený príkaz zachová iba posledné štyri súbory na zachytenie:

ls -lh monitoring-wordpress *
-RW-r - r--. 1 koreňový koreň 7.2M 7. januára 17:21 monitoring-wordpress.scap0 -rw-r - r--. 1 koreňový koreň 9.6M 7. januára 17:21 monitoring-wordpress.scap1 -rw-r - r--. 1 koreňový koreň 9.6M 7. januára 17:21 monitoring-wordpress.scap2-rw-r - r--. 1 root root 9.6M 7. januára 17:21 monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C10-W 4 -w monitoring-wordpress.scap

Monitorovanie v reálnom čase

S Sysdig tiež môžete analyzovať údaje v reálnom čase. Na prvý pohľad sa to môže javiť ako náročná úloha, pretože v predvolenom nastavení sa všetky udalosti nepretržite tlačia na konzolu. Našťastie sú tu pomocné sekáče.

Urobme príklad.

Analyzujte svoje procesy na základe jednotlivých kontajnerov

  1. Spustite nasledujúci príkaz a zobrazte zoznam svojich kontajnerov:
docker ps
ID KONTAJNERU OBRÁZOK PRÍKAZ VYTVORENÝ STATUS NÁZVY PRÍSTAVOV 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" "Pred 9 minútami Nahor 9 minútami sysdig 06def7875617 wordpress: najnovšie" docker-entrypoint.s ... "pred 3 hodinami Nahor 3 hodiny 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5,7 "docker-entrypoint.s…" pred 3 hodinami Up 3 hodiny 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Procesy prebiehajúce v kontajneri WordPress môžete analyzovať pomocou:

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

3. Podobne môžete analyzovať procesy bežiace v kontajneri MySQL:

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

Všimnite si, že Sysdig, ktorý sa príliš nelíši od tohto príkladu, môže monitorovať sieťovú prevádzku, využitie disku a tak ďalej.

V tomto návode ste prešli základmi používania programu Sysdig, aby ste jasne porozumeli aktivite generovanej vašimi kontajnermi. Príklady v tomto blogovom príspevku vám pomohli začať a v budúcich príručkách vám ukážeme, ako používať Csysdig a Sysdig Inspect.