Sysdig: што гэта такое і як ім карыстацца

Sysdig з'яўляецца універсальным інструментам бачнасці сістэмы з падтрымкай кантэйнераў. Што робіць Sysdig асаблівым, гэта тое, што ён падключаецца да ядра машыны і аддзяляе інфармацыю на аснове кантэйнера. У раздзеле гэтага ўрока мы спынімся на версіі Sysdig з адкрытым зыходным кодам.

У наступных раздзелах вы будзеце:

  • Усталюйце Sysdig
  • Закруціце ўстаноўку Wordpress з дапамогай докер-кампазіцыі
  • Выкарыстоўвайце Sysdig для збору падзей і аналізу іх у далейшы час
  • Выкарыстоўвайце Sysdig для аналізу дадзеных у рэжыме рэальнага часу

Перадумовы

  • Docker усталяваны ў вашай сістэме. Больш падрабязную інфармацыю аб усталяванні Docker можна знайсці на старонцы "Усталяваць Docker".
  • Docker Compose усталяваны ў вашай сістэме. Зверніцеся на старонку "Ўсталяваць Docker Compose", каб даведацца, як усталяваць Docker Compose.
  • Загалоўкі ядра ўсталёўваюцца ў хост-сістэме.

Усталюйце Sysdig

Выканайце наступныя дзеянні, каб усталяваць Sysdig ўнутры кантэйнера Docker:

  1. У акне тэрмінала выканайце наступную каманду, каб выцягнуць выяву Докера Sysdig:
docker цягнуць sysdig / sysdig
Выкарыстанне па змаўчанні тэг: апошнія апошняе: выцягваць з sysdig / sysdig 2967486b0658: Прычапныя поўны 78101b780c72: Прычапныя поўны 7e78b657334d: Прычапныя поўны 650327159ca8: Прычапныя поўны 47ebf73ab754: Прычапныя поўны bf51ac76a6d9: Прычапныя поўны 0cd11104dbf6: Прычапныя поўны e6dcf17d00d8: Высоўная поўны 230d60083576: Высоўная поўны fd5ea9faf384: Pull Complete 6de86c8ed6e9: Pull complete 8d1825f8be4b: Pull complete Дайджэст: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Статус: Загружана новае малюнак для sysdigig

2. Запусціце Sysdig у кантэйнер, увёўшы:

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 / module: / host / lib / модулі: ro -v / usr: / host / usr: ro sysdig / sysdig
* Настройка / usr / src-спасылкі з хоста * Выгрузка sysdig-зонда, калі ён ёсць * Запуск dkms для ўстаноўкі sysdig Памылка! echo Загалоўкі ядра для ядра 3.10.0-957.12.2.el7.x86_64 нельга знайсці на /lib/modules/3.10.0-957.12.2.el7.x86_64/build або /lib/modules/3.10.0-957.12 .2.el7.x86_64 / крыніца. * Запуск зборкі dkms не атрымаўся, не атрымалася знайсці /var/lib/dkms/sysdig/0.26.4/build/make.log * Спроба загрузіць сістэмны датчык sysdig, калі ён ёсць * Спроба знайсці загадзя скампіляваны sysdig-зонд на 3.10 .0-957.12.2.el7.x86_64 Знойдзены канфігурацыя ядра на /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Спроба загрузкі загадзя скампіляванага модуля з 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 Загрузка ўдалася, загрузка кораня модуля @ 7b14a23f22eb: / #

Некалькі рэчаў, якія варта адзначыць вышэйзгаданай камандзе:

  • Сцяг -i трымае STDIN адкрытым.
  • Параметр --privileged забяспечвае доступ да ўсіх прылад хаста. Акрамя таго, ён усталёўвае SELinux, каб дазволіць працэсам, якія працуюць у кантэйнеры, такі ж доступ да хоста, як і працэс, які працуе на хосце.
  • Сцяг -v вызначае спіс файлаў (на хосце), да якіх можа атрымаць доступ Sysdig.

Закручванне ўстаноўкі Wordpress

У гэтым раздзеле вы ўсталюеце Wordpress з дапамогай каманды docker-compose.

  1. У новым акне тэрмінала перайдзіце ў каталог вашых праектаў і набярыце наступныя каманды:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Стварыце файл пад назвай docker-compose з наступным змесцівам:

версія: '3.3' паслугі: db: image: mysql: 5.7 тамоў: - db_data: / var / lib / mysql перазагрузка: заўсёды асяроддзе: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: zavis_on wordpress: апошнія парты: - "8000: 80" перазагрузка: заўсёды навакольнае асяроддзе: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: аб'ёмы wordpress: db_data: {}

3. Запусціце каманду docker-compose up у асобным рэжыме з дапамогай:

docker-складаць -d
Стварэнне сеткі "wordpress-sysdig_default" з драйверам па змаўчанні Стварэнне гучнасці "wordpress-sysdig_db_data" з драйверам па змаўчанні Выцягванне wordpress (wordpress: апошняе) ... апошняе: Выцягванне з бібліятэкі / wordpress 8ec398bc0356: Выцягванне завершана 85cf4fc86478: Pull complete 970dadf4ccb6: 8c04561117a4: Прычапныя поўны d6b7434b63a2: Прычапныя поўны 83d8859e9744: Прычапныя поўны 9c3d824d0ad5: Прычапныя поўны 9e316fd5b3b3: Прычапныя поўны 578b40496c37: Прычапныя поўны 814ae7711d3c: Прычапныя поўны 4896fed78b6b: Прычапныя поўны e74d71e9611d: Прычапныя поўны 46017765526c: Прычапныя поўны 280.386.098.458: Прычапныя поўны f32eb0d8c540: Выцягніце цалкам 5c47b9ea747a: выцягніце поўны ecda5b7aad12: Высунуць поўны 84256a6b6b44: Высунуць поўны 35d4f385efb7: Высунуць поўны bf697c2ae701: Прычапныя поўны d054b015f084: Высунуць поўны дайджэст: sha256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Статус: Загружаны навей малюнак для WordPress: апошняя Стварэнне WordPress-sysdig_db_1 ... зроблена Стварэнне WordPress-sysdig_word націсніце_1 ... зроблена

4. Вы можаце праверыць статус вашых кантэйнераў пры дапамозе:

докер пс

Калі ўсё пойдзе добра, вы павінны ўбачыць нешта падобнае на наступны выхад:

ID кантэйнера IMAGE IMAND СТВАРЭННІ СТАТУСНЫЯ ПАРТЫ ІМЯ f390eec29f52 wordpress: апошні "docker-entrypoint.s ..." Каля хвіліны таму ўверх Каля хвіліны 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entry. s… "Каля хвіліны таму ўверх Каля хвіліны 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "13 хвілін таму Up 13 хвілін sysdig

5. Цяпер Wordpress працуе і працуе. Уключыце браўзэр на http: // localhost: 8000, каб запусціць майстра ўстаноўкі:

6. Пасля завяршэння майстра ўстаноўкі давайце наперад і створым прыкладны пост:

Збор дадзеных у файл

У гэтым раздзеле мы пакажам, як вы можаце выкарыстоўваць Sysdig для збору падзей і аналізу іх у больш позні час.

  1. Каб скінуць усе захаваныя падзеі ў файл, перайдзіце ў кантэйнер Sysdig і ўвядзіце наступную каманду:
sysdig -w маніторынг-wordpress.scap

2. У новым акне тэрмінала выкарыстоўвайце ab, каб зрабіць 10000 запытаў пры адначасовым выкананні максімум 100 запытаў:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Гэта ApacheBench, версія 2.3 <$ Рэдакцыя: 1430300 $> Аўтарскія правы 1996 г. Адам Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Ліцэнзія на праграмны фонд Apache, http://www.apache.org/ Бенчмаркінг localhost (будзьце цярплівыя) Завершана 100 запытаў Завершана 200 запытаў Завершана 300 запытаў Завершана 400 запытаў Завершана 500 запытаў Завершана 600 запытаў Завершана 700 запытаў 800 Запытаў Завершана 900 заявак Завершана 1000 запытаў 1000 Завершана 1000 запытаў

Звярніце ўвагу, што вышэйзгаданы вынік быў скарочаны для сцісласці.

3. Вярніцеся назад, каб агледзіць кантэйнер Sysdig і спыніць захоп дадзеных, увёўшы "CTRL + C".

Аналіз дадзеных

Цяпер, калі вы паглядзіце памер файла Monitoring-wordpress.scap, вы заўважыце, што Sysdig сабраў не менш за 80 млн дадзеных:

ls -lh маніторынг-wordpress.scap
-rw-r - r--. 1 корань кораня 80M 7 студзеня, 16:28 Monitoring-wordpress.scap

Каб знайсці дарогу праз гэтую гору дадзеных, вы будзеце выкарыстоўваць тое, што называецца зубілам.

Долата - гэта сцэнарый Lua, які аналізуе паток падзеі і выконвае карысныя дзеянні.

Вы можаце запусціць наступную каманду для адлюстравання спісу зубілаў:

sysdig -cl
Катэгорыя: Прыкладанне --------------------- httplog часопіс HTTP-запытаў httptop Top HTTP-запыты memcachelog журнал запамінальных запытаў Катэгорыя: Ужыванне CPU ---------- --------- Спектраграма Візуалізацыя затрымкі АС у рэжыме рэальнага часу. subsecoffset Візуалізацыя часу выканання зрушэння падсекунды. topcontainers_cpu Лепшыя кантэйнеры па выкарыстанні працэсара topprocs_cpu Лепшыя працэсы па выкарыстанні працэсара Катэгорыя: Памылкі ---------------- topcontainers_error Найлепшыя кантэйнеры па колькасці памылак topfiles_errors Лепшыя файлы па колькасці памылак topprocs_errors Лепшыя працэсы па колькасці пра памылкі

Звярніце ўвагу, што вышэйзгаданы вынік быў скарочаны для сцісласці.

Каб атрымаць падрабязную інфармацыю пра стамеску, запусціце каманду sysdig, а затым сцяг -i і назву зубіла, як у наступным прыкладзе:

sysdig -i httptop
Катэгорыя: Прыкладанне --------------------- httptop Лепшыя HTTP-запыты Паказваць найважнейшыя HTTP-запыты па: ncalls, time or bytes Аргументы: [string] by - Паказаць найлепшыя HTTP-транзакцыі па: ncalls, час альбо тэстам, па змаўчанні - ncalls

Працягваючы наш прыклад, вось як вы можаце выкарыстоўваць зубіла httptop для адлюстравання лепшых HTTP-запытаў:

sysdig -r маніторынг-wordpress.scap -c httptop
URL-метад ncalls ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 ВАРЫАНТІ * 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 / кантэйнеры / 06def7875617 / 1 GET JSON /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901 1 GET лакальны: 8000 /

Вы можаце бачыць тую ж інфармацыю ў зручным для кантэйнераў фармаце з флагам -pcontainer:

sysdig -r маніторынг-wordpress.scap -c httptop -pcontainer
URL называе кантэйнер ncalls ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 хост GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo ВАРЫАНТЫ * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / s1 / g1 localhost / v1.24 / g1 localhost / v1.24 / g1 localhost / v1.24 / s1 / 1/1/1/1/1/1/1/1/1/1/1, 1, 1, 1, 1 cd06093b141b / 1 sysdig JSON GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901

Капаць глыбей

Sysdig фіксуе насычаную інфармацыю змесцівам, якая дазваляе атрымліваць падрабязную інфармацыю пра ўнутраную працу вашых кантэйнераў. Давайце выкажам здагадку, што вы працуеце з некалькімі кантэйнерамі і хочаце даведацца, які працэс патрабуе найбольш працэсара.

  1. Пералічыце кантэйнеры, якія былі актыўнымі ў перыяд, у які вы фіксавалі падзеі:
sysdig -r маніторынг-wordpress.scap -c lscontainers

2. Вы можаце ідэнтыфікаваць кантэйнер, які спажываў найбольш працэсара з дапамогай:

sysdig -r маніторынг-wordpress.scap -c topcontainers_cpu
CPU% container.name --------------------------------------------- ----------------------------------- 5,37% wordpress-sysdig_wordpress_1 1,35% wordpress-sysdig_db_1 0,84% хост 0,51% sysdig

3. Вы можаце выкапаць яшчэ глыбей і вызначыць найбольш інтэнсіўны працэсар з дапамогай зубіла topprocs_cpu:

sysdig -r маніторынг-wordpress.scap -c topprocs_cpu container.name змяшчае wordpress_1
% Працэсара 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

Калі вы хочаце даведацца больш падрабязнасці, зубіла ps прапануе больш падрабязную альтэрнатыву:

sysdig -r маніторынг-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID ПІД-USER Віртам РЭС FDLIMIT CMD 5896 5896 корань 232.82M 22.32M 429496729 apache2 8383 8383 WWW-дадзеныя 307.44M 25.46M 429496729 apache2 8422 8422 WWW-дадзеныя 235.44M 22.90M 429496729 apache2 8424 8424 WWW-дадзеныя 307.44M 25.46M 429496729 apache2 8897 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 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Карысныя парады

Калі вы запусціце Sysdig для захопу падзей, як у прыведзеным вышэй прыкладзе (sysdig -w monitoring-wordpress.scap), файл падзей будзе пастаянна расці, пакуль ён не затраціць усю даступную прастору. Ёсць некалькі метадаў, якія могуць прадухіліць гэта:

  • Пакажыце колькасць падзей, якія Sysdig павінен захапіць, перадаўшы яму сцяг -n. Пасля таго, як Sysdig зафіксуе зададзеную колькасць падзей, ён аўтаматычна выйдзе:
sysdig -n 5000 -w маніторынг-wordpress.scap
  • Выкарыстоўвайце сцяг -C, каб наладзіць Sysdig так, каб ён разбіваў захоп на меншыя файлы пэўнага памеру. Наступны прыклад бесперапынна захоўвае падзеі ў файлах <10MB:
sysdig -C 10 -w маніторынг-wordpress.scap

Гэта створыць кучу файлаў не больш за 10 Мб:

ls -lh маніторынг-wordpress *
-rw-r - r--. 1 корань кораня 9.6M 7 студзеня, 17:13 маніторынг-wordpress.scap0 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17:14 маніторынг-wordpress.scap1 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17:14 маніторынг-wordpress.scap2 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17:14 маніторынг-wordpress.scap3 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17:14 маніторынг-wordpress.scap4 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17:14 маніторынг-wordpress.scap5 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17:14 маніторынг-wordpress.scap6 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17:14 маніторынг-wordpress.scap7 -rw-r - r--. 1 корань кораня 6.4M 7 студзеня, 17:14 маніторынг-wordpress.scap8
  • Пакажыце максімальную колькасць файлаў, якія Sysdig павінен захоўваць са сцягам -W. Напрыклад, вы можаце камбінаваць сцягі -C і -W так:
sysdig -C 10 -W 4 -w маніторынг-wordpress.scap

Прыведзеная вышэй каманда захавае толькі апошнія чатыры файлы захопу:

ls -lh маніторынг-wordpress *
-rw-r - r--. 1 корань кораня 7.2M 7 студзеня, 17:21 маніторынг-wordpress.scap0 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17.21 маніторынг-wordpress.scap1 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17.21 маніторынг-wordpress.scap2 -rw-r - r--. 1 корань кораня 9.6M 7 студзеня 17.21 маніторынг-wordpress.scap3 корань @ cd06093b141b: / # sysdig -C 10 -W 4 -w маніторынг-wordpress.scap

Маніторынг у рэжыме рэальнага часу

З дапамогай Sysdig вы таксама можаце прааналізаваць дадзеныя ў рэжыме рэальнага часу. На першы погляд, гэта можа здацца складанай задачай, бо па змаўчанні ўсе падзеі пастаянна друкуюцца на кансолі. На шчасце, тут дапамогуць стамескі.

Возьмем прыклад.

Прааналізуйце свае працэсы на аснове кантэйнера

  1. Выканайце наступную каманду, каб пералічыць кантэйнеры:
докер пс
ID кантэйнера IMAGE COMMAND CREATED STATUS PORTS NAMES 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" 9 хвілін таму Да 9 хвілін sysdig 06def7875617 wordpress: апошняя "docker-entrypoint.s…" 3 гадзіны таму 3 гадзіны 0.0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s…" 3 гадзіны таму Up 3 гадзіны 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Вы можаце прааналізаваць працэсы, запушчаныя ў кантэйнеры WordPress з дапамогай:

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

3. Аналагічна вы можаце прааналізаваць працэсы, запушчаныя ў кантэйнеры MySQL:

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

Звярніце ўвагу, што Sysdig мала чым адрозніваецца ад гэтага прыкладу, каб кантраляваць сеткавы трафік, выкарыстанне дыска і гэтак далей.

У гэтым падручніку вы перагледзелі асновы выкарыстання Sysdig, каб атрымаць дакладнае ўяўленне пра дзейнасць, створаную вашымі кантэйнерамі. Прыклады ў гэтым паведамленні ў блогу дапамаглі вам пачаць працу, і ў наступных падручніках мы пакажам вам, як выкарыстоўваць Csysdig і Sysdig Inspect.