Важливе значення моніторингу у Node.js
Розуміння внутрішньої роботи вашого Node.js-додатка дуже важливе! Вам потрібно постійно знаходити прогалини і з'ясовувати, що уповільнює роботу вашого продукту.
Ще більшою проблемою є обробка та передбачення часу простою. Ви повинні знати про це вже перед тим як ваші клієнти почнуть скаржитися. Виходячи з цих потреб, правильний моніторинг дасть вам додаткову інформацію про поведінку вашого застосування:
-
Ведення профілю на рівні коду: Ви повинні розуміти, скільки часу займає робота кожної функції у виробничому середовищі, не тільки локально.
-
Моніторинг мережевих з'єднань: Якщо ви будуєте архітектуру мікросервісу, вам потрібно моніторити мережеві з'єднання та нижчі затримки у зв'язку між вашими сервісами.
-
Панель продуктивності: Щоб підтримувати швидку, стабільну систему, потрібно обов'язково знати і спостерігати найважливіші показники продуктивності вашого додатка.
-
Оповіщення у режимі реального часу: Очевидно, якщо щось піде не так, ви повинні знати про це негайно. Вам потрібні інструменти, які можуть інтегруватися з Pagerduty або Opsgenie.
Моніторинг Серверу vs Моніторинг Додатку
Є концепції, які розробники зазвичай плутають - моніторинг серверів і моніторинг самих додатків. Ці поняття мають розглядатися окремо, оскільки один сервер може обслуговувати декілька додатків.
Давайте розглянемо деякі відмінності між ними!
Моніторинг Серверу
Моніторинг серверу відповідає за хост-машину. Такий моніторинг повинен допомогти вам відповісти на наступні питання:
-
Чи достатньо місця на диску мого сервера?
-
Чи має сервер достатньо процесорного часу?
-
Чи достатньо пам'яті на моєму сервері?
-
Чи досягає сервер мережі?
Для серверного моніторингу ви можете використовувати такі інструменти, як zabbix.
Моніторинг Додатків
Моніторинг додатків повинен давати вам відповіді на наступні запитання:
-
Чи досягає додаток бази даних?
-
Скільки запитів він зараз обробляє?
-
Який час відповіді?
-
Чи може мій додаток обробляти запити? Чи працює він?
Для моніторингу додатків, я рекомендую використовувати інструмент Trace.
Як використовувати Trace для Моніторингу у Node.js
Щоб розпочати роботу з Trace, перейдіть до https://trace.risingstack.com та створіть ваш безкоштовний акаунт.
Після реєстрації, виконуйте наступні дії, щоб додати Trace до вашого Node.js-застосунку.
Чи це не легко? Якщо все зроблено правильно, ви побачите, що сервіс, до якого ви підключились, вже почав відправляти дані до Trace:
1: Міра продуктивності
Як перший крок моніторингу вашого Node.js-додатку, я рекомендую перейти до сторінки метрик та перевірити продуктивність ваших сервісів.
-
Ви можете використовувати панель часу відповіді, щоб побачити дані про медіану і 95-ий процентиль. Це допоможе вам з'ясувати, коли і чому сповільнюється робота вашого додатка, а також як це впливає на користувачів.
-
Граф пропускної здатності (throughput graph) показує кількість запитів на кожну хвилину (rpm) для категорій статус-кодів (200-299 // 300-399 // 400-499 // >500). Таким чином ви можете легко відокремлювати правильні та проблемні HTTP-запити у вашому застосуванні.
-
Граф використання пам'яті показує, скільки пам'яті використовує кожний процес. Розуміння, де відбувається витік пам'яті, іноді є досить корисним.
Для більш детальної інформації, перегляньте нашу документацію.
2: Налаштування оповіщень
Як я згадував раніше, вам потрібна правильна система оповіщень для вашого додатка.
Перейдіть до сторінки оповіщень Trace та натисніть на Створити нове оповіщення (Create a new alert).
-
Найважливіша річ, яку тут потрібно зробити, - налаштувати час простою та оповіщення щодо пам'яті. Trace повідомить вас на email / Slack / Pagerduty / Opsgenie або навіть Webhooks.
-
Я рекомендую налаштувати оповіщення Error rate by status code, щоб знати про HTTP-запити із статус-кодами 4ХХ та 5ХХ.
-
Також може бути корисним створити оповіщення про Час Відповіді (Response time), щоб отримувати повідомлення, коли ваш додаток починає сповільнюватися.
3: Обстеження дампів пам'яті (heapdumps)
Перейдіть до сторінки Profiler та зробіть запит на новий дамп пам'яті, зачекайте 5 хвилин та зробіть ще один запит. Завантажте їх та відкрийте у Сторінці Профілю (Profiles page) Chrome DevTool. Оберіть другий (той, який новіший) та натисніть Порівняння (Comparison).
З цим ви можете легко знайти витіки пам'яті.
4: Моніторинг роботи Процесора
Ведення профілю на рівні коду необхідне, щоб розуміти, скільки часу потрібно для роботи вашої функції у виробничому середовищі. Trace може і це.
Все, що вам потрібно зробити - перейти до вкладки Профілі Процесору (CPU Profiles). Там ви можете зробити запит на завантаження профілю, який ви також можете завантажити на Chrome DevTool.
Після завантаження ви зможете побачити період часу у 10 секунд роботи вашого додатку та усі ваші функції з часом їх роботи.
З цими даними, ви зможете з'ясувати, що сповільнює ваш додаток.
Кінець
Це все.
Протягом цих 13 частин серій туторіалів Node Hero, ви навчилися основам розробки додатків на Node.js.
Я сподіваюся, що ви змогли взяти щось корисне з цього!
Ще немає коментарів