Сисдіг: Що це таке і як ним користуватися

Sysdig - це універсальний інструмент видимості системи з підтримкою контейнерів. Що робить Sysdig особливим, це те, що він приєднується до ядра машини і відокремлює інформацію на основі контейнера. В рамках цього підручника ми зупинимося на відкритій версії Sysdig.

У наступних розділах ви:

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

Передумови

  • Докер встановлений у вашій системі. Детальніше про встановлення Docker див. На сторінці Встановити Docker.
  • Docker Compose встановлений у вашій системі. Щоб дізнатися, як встановити Docker Compose, зверніться до сторінки "Встановити Docker Compose".
  • Заголовки ядра встановлюються в хост-системі.

Встановити Sysdig

Виконайте наступні дії, щоб встановити Sysdig всередині контейнера Docker:

  1. У вікні термінала виконайте таку команду, щоб витягнути зображення Docker Sysdig:
докер тягнути sysdig / sysdig
Використання за замовчуванням тег: останні останнє: витягати з sysdig / sysdig 2967486b0658: Причіпні повний 78101b780c72: Причіпні повний 7e78b657334d: Причіпні повний 650327159ca8: Причіпні повний 47ebf73ab754: Причіпні повний bf51ac76a6d9: Причіпні повний 0cd11104dbf6: Причіпні повний e6dcf17d00d8: Висувна повний 230d60083576: Висувна повний 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 Завантаження вдалося, завантаження root модуля @ 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 -d
Створення мережі "wordpress-sysdig_default" з драйвером за замовчуванням Створення гучності "wordpress-sysdig_db_data" з драйвером за замовчуванням Витягнення wordpress (wordpress: останнє) ... останнє: Потягнення з бібліотеки / wordpress 8ec398bc0356: Витягніть повністю 85cf4fc86478: Потягніть повністю 970dadf4ccb6: 8c04561117a4: Причіпні повний d6b7434b63a2: Причіпні повний 83d8859e9744: Причіпні повний 9c3d824d0ad5: Причіпні повний 9e316fd5b3b3: Причіпні повний 578b40496c37: Причіпні повний 814ae7711d3c: Причіпні повний 4896fed78b6b: Причіпні повний e74d71e9611d: Причіпні повний 46017765526c: Причіпні повний 280386098458: Причіпні повний f32eb0d8c540: Витягніть повністю 5c47b9ea747a: витягніть повний ecda5b7aad12: Висунути повний 84256a6b6b44: Висунути повний 35d4f385efb7: Висунути повний bf697c2ae701: Причіпні повний d054b015f084: Висунути повний дайджест: sha256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Статус: Завантажено новіше зображення для WordPress: остання Створення WordPress-sysdig_db_1 ... зроблено Створення WordPress-sysdig_word натисніть_1 ... зроблено

4. Ви можете перевірити стан своїх контейнерів за допомогою:

докер пс

Якщо все йде добре, ви повинні побачити щось подібне до наступного виводу:

ІДЕНТИФІКАТОР КОНТАЙНЕРУ КОМАНДА СТВОРЕНА СТАТУСНА ІМЯ ПОРТУВАННЯ 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 quad журналів Категорія: CPU Використання ---------- --------- спектрограма Візуалізуйте затримку ОС у режимі реального часу. subsecoffset Візуалізація часу виконання підсекундного зміщення. topcontainers_cpu Найпопулярніші контейнери з використанням процесора topprocs_cpu Найкращі процеси використання 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 / контейнери / 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 / 1/1/7/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 cd06093b141b / 1 sysdig JSON GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901

Копати глибше

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

  1. Перерахуйте контейнери, які були активними протягом періоду, коли ви захоплювали події:
sysdig -r моніторинг-wordpress.scap -c l -контейнери

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 можна викопати ще глибше і визначити найбільш інтенсивний процес 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 4294967 299007 239.467M 4294967 23949729 237.467M 429496729 apache2 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.6М 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 Monitoring-wordpress.scap3 -rw-r - r--. 1 корінь кореня 9.6M 7 січня 17:14 моніторинг-wordpress.scap4 -rw-r - r--. 1 корінь кореня 9.6М 7 січня 17:14 моніторинг-wordpress.scap5 -rw-r - r--. 1 корінь кореня 9.6М 7 січня 17:14 моніторинг-wordpress.scap6 -rw-r - r--. 1 корінь кореня 9.6М 7 січня 17:14 моніторинг-wordpress.scap7 -rw-r - r--. 1 корінь кореня 6.4M 7 січня 17:14 Monitoring-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 root root 9.6M 7 січня 17:21 Monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w monitoring-wordpress.scap

Моніторинг у реальному часі

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

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

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

  1. Виконайте таку команду, щоб перерахувати контейнери:
докер пс
ІДЕНТИФІКАТОР ІМЕНТУ КОМАНДИ СТВОРЕНИЙ СТАТУСНИЙ ПОРТ ІМЕНІ 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 години тому до 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.