Sysdig: Какво представлява и как да го използваме

Sysdig е универсален инструмент за видимост на системата с поддръжка за контейнери. Това, което прави Sysdig специален, е, че той се закача в ядрото на машината и отделя информацията на база контейнер. За обхвата на този урок ще се съсредоточим върху отворения код на Sysdig.

В следващите раздели ще:

  • Инсталирайте Sysdig
  • Завъртете инсталация на Wordpress с помощта на docker-compose
  • Използвайте Sysdig, за да събирате събития и да ги анализирате по-късно
  • Използвайте Sysdig, за да анализирате данни в реално време

Предварителни

  • Docker е инсталиран във вашата система. За подробности относно инсталирането на Docker, вижте страницата Install Docker.
  • Docker Compose е инсталиран във вашата система. Вижте страницата Install Docker Compose за инструкции как да инсталирате Docker Compose.
  • Заглавките на ядрото са инсталирани в хост системата.

Инсталирайте Sysdig

Следвайте тези стъпки, за да инсталирате Sysdig вътре в контейнер Docker:

  1. В прозорец на терминал изпълнете следната команда, за да издърпате изображението на Docker на Sysdig:
docker дръпвам sysdig / sysdig
Използването на етикет по подразбиране: най-новите най-новите: Дърпане от sysdig / sysdig 2967486b0658: Pull пълна 78101b780c72: Pull пълна 7e78b657334d: Pull пълна 650327159ca8: Pull пълна 47ebf73ab754: Pull пълна bf51ac76a6d9: Pull пълна 0cd11104dbf6: Pull пълна e6dcf17d00d8: Pull пълна 230d60083576: Pull пълна fd5ea9faf384: Издърпайте пълен 6de86c8ed6e9: Издърпайте пълен 8d1825f8be4b: Издърпайте пълен Дайджест: 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 / модули: / 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: зависим_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 -d
Създаване на мрежа "wordpress-sysdig_default" с драйвера по подразбиране Създаване на том "wordpress-sysdig_db_data" с драйвер по подразбиране Издърпване на wordpress (wordpress: най-късно) ... последно: Издърпване от библиотека / wordpress 8ec398bc0356: Издърпайте пълно 85cf4fc86478: Издърпайте пълно 970dadf4ccb6: 8c04561117a4: Pull пълна d6b7434b63a2: Pull пълна 83d8859e9744: Pull пълна 9c3d824d0ad5: Pull пълна 9e316fd5b3b3: Pull пълна 578b40496c37: Pull пълна 814ae7711d3c: Pull пълна 4896fed78b6b: Pull пълна e74d71e9611d: Pull пълна 46017765526c: Pull пълна 280386098458: Pull пълна f32eb0d8c540: Издърпайте пълна 5c47b9ea747a: Издърпайте пълна ecda5b7aad12: Pull пълна 84256a6b6b44: Pull пълна 35d4f385efb7: Pull пълна bf697c2ae701: Pull пълна d054b015f084: Pull пълна Digest: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Статус: Изтеглен нова картинка за WordPress: последна Създаване на WordPress-sysdig_db_1 ... направено Създаване на WordPress-sysdig_word натиснете_1 ... готово

4. Можете да проверите състоянието на вашите контейнери с:

докер пс

Ако всичко върви добре, трябва да видите нещо подобно на следния изход:

ID на КОНТЕЙНЕР ИЗОБРАЖЕНИЕ КОМАНДА СЪЗДАДЕН СТАТУСНИ ИМЕТА НА ПОРТ 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 минути нагоре 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 Адам Туис, Zeus Technology Ltd, http://www.zeustech.net/ Лицензиран за софтуерната фондация Apache, http://www.apache.org/ Бенчмаркинг localhost (бъдете търпеливи) Завършени 100 заявки Завършени 200 заявки Завършени 300 заявки Завършени 400 заявки Завършени 500 заявки Завършени 600 заявки Завършени 700 заявки Завършени 800 заявки Завършени 900 заявки Завършени 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 Топ HTTP заявки memcachelog memcached искания дневник Категория: Използване на процесора ---------- --------- спектрограма Визуализирайте латентността на OS в реално време. subsecoffset Визуализирайте времето за изпълнение на подсекундата. topcontainers_cpu Най-добрите контейнери по използване на процесора topprocs_cpu Топ процеси по използване на процесора Категория: Грешки ---------------- topcontainers_error Най-горе контейнери по брой грешки topfiles_errors Топ файлове по брой грешки topprocs_errors топ процеси по брой на грешки

Обърнете внимание, че горната продукция е съкратена за краткост.

За да извлечете подробна информация за длето, изпълнете командата sysdig, последвана от флага -i и името на длето, както е в следния пример:

sysdig -i httptop
Категория: Приложение --------------------- httptop Топ HTTP заявки Показване на най-добрите HTTP заявки по: ncalls, време или байтове Args: [string] by - Показване на най-добрите HTTP транзакции от: ncalls, време или от tes, по подразбиране е ncalls

Продължавайки нашия пример, ето как можете да използвате httptop длето за показване на най-добрите HTTP заявки:

sysdig -r мониторинг-wordpress.scap -c httptop
URL адрес на метода ncalls ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 OPTIONS * 2 GET localhost: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / контейнери / 6bd8418eb03f / json 1 GET localhost / v1.24 / контейнери / 06def7875617 / JSON 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901 1 GET Localhost: 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 / 1/1/2/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1, 1/1/1/1/1, 1, 1, 1, 1, 7 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39977bf5bfbdbdddddddddddddddddddddbdbdddbdddbdddddbdddddddb ,b, 26,,,,,,,,,,,,,,,,,,,,,, отзвучна, несериозни отчетнически способности се оказват.

Копае по-дълбоко

Sysdig улавя информация, богата на съдържание, която ви позволява да получите подробна информация за вътрешната работа на вашите контейнери. Да предположим, че използвате няколко контейнера и искате да знаете кой процес консумира най-много процесор.

  1. Избройте контейнерите, които са били активни през периода, в който сте заснели събития:
sysdig -r мониторинг-wordpress.scap -c l контейнери

2. Можете да идентифицирате контейнера, който е консумирал най-много CPU с:

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
CPU% процесен 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 PID ПОТРЕБИТЕЛ VIRT RES FDLIMIT CMD 5896 5896 корен 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 42MM 2667 292 267 295 292 292 292 292 292 292 294 292 292 292 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 302 432 982 427 292 292 292 292 322 422 424 492 294, 294, 492, 29, 29, 23, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 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 429497 674cheche 29494967 apa9 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 трябва да заснеме, като му предаде флага. След като Sysdig заснеме определения брой събития, той автоматично ще излезе:
sysdig -n 5000 -w мониторинг-wordpress.scap
  • Използвайте флаг -C, за да конфигурирате Sysdig, така че да разбие улавянето на по-малки файлове с определен размер. Следващият пример непрекъснато записва събития във файлове <10MB:
sysdig -C 10 -w мониторинг-wordpress.scap

Това ще създаде куп файлове не по-големи от 10 MB:

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 на КОНТАЙНЕР ИЗОБРАЖЕНИЕ КОМАНДА СЪЗДАДЕН СТАТУТНИ ПОРТИ ИМЕНИ 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" преди 9 минути нагоре 9 минути sysdig 06def7875617 wordpress: най-новите "docker-entrypoint.s…" преди 3 часа Up 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.