Ефективний моніторинг та спостережуваність є важливими для забезпечення продуктивності та надійності програмних додатків. Node.js, відомий своєю подієво-орієнтованою, неблокуючою моделлю I/O, широко використовується для створення швидких і масштабованих додатків. Однак асинхронна природа Node.js може ускладнити моніторинг. Тут на допомогу приходить OpenTelemetry, що пропонує потужне і інтегроване рішення для моніторингу додатків.
У цьому посібнику ми розглянемо, як налаштувати та використовувати OpenTelemetry у вашому Node.js додатку. Ви дізнаєтесь, як інструментувати простий додаток для генерування трас, метрик і логів, що дозволить ефективно моніторити продуктивність. Завдяки інтеграції з KloudMate, ви зможете безперешкодно виявляти вузькі місця та усувати проблеми в реальному часі.
Розуміння KloudMate та OpenTelemetry
OpenTelemetry є потужним фреймворком для збору телеметричних даних, що дає можливість розробникам збирати метрики, логи та трасування з їх додатків. KloudMate покращує ці дані, надаючи дієві інсайти через зручний інтерфейс. Інтегруючи OpenTelemetry з KloudMate, ви можете візуалізувати продуктивність вашого додатку, виявляти вузькі місця та активно оптимізувати ваші сервіси.
Функції KloudMate, такі як карти сервісів, детальні трасування та сповіщення в реальному часі, гарантують, що ваша стратегія спостережуваності є як всеосяжною, так і ефективною. Це поєднання дає змогу розробникам підтримувати високу продуктивність і надійність у розподілених системах, полегшуючи моніторинг стану їхніх додатків.
Інструментування вашого Node.js додатку з OpenTelemetry
Передумови
Переконайтесь, що у вас встановлено наступне на локальній машині:
- Node.js
- TypeScript (якщо ви використовуєте TypeScript)
Приклад додатку
Наводимо приклад на базовому додатку Express, написаному на TypeScript, але ці інструкції можна адаптувати і для інших веб-фреймворків, таких як Koa чи Nest.js.
Крок 1: Встановлення
- Налаштуйте порожній
package.json
у новій директорії.
npm init -y
- Встановіть необхідні залежності для Express.
npm install typescript \
ts-node \
@types/node \
express \
@types/express
- Створіть та запустіть HTTP сервер, створивши файл
app.ts
і додавши наступний код:
/*app.ts*/
import express, { Express } from 'express';
const PORT: number = parseInt(process.env.PORT || '8080');
const app: Express = express();
function getRandomNumber(min: number, max: number) {
return Math.floor(Math.random() * (max - min) + min);
}
app.get('/rolldice', (req, res) => {
res.send(getRandomNumber(1, 6).toString());
});
app.listen(PORT, () => {
console.log(`Listening for requests on http://localhost:${PORT}`);
});
- Запустіть додаток за допомогою відповідної команди і відкрийте http://localhost:8080/rolldice у вашому веб-браузері.
$ npx ts-node app.ts
Listening for requests on http://localhost:8080
Крок 2: Інструментування
Для інструментування вашого додатку з OpenTelemetry:
- Встановіть
Node SDK
та пакетauto-instrumentations
за допомогою наступної команди. Node SDK ініціалізує OpenTelemetry з параметрами за замовчуванням, які підходять для більшості випадків. Пакетauto-instrumentations-node
надає бібліотеки інструментування, які автоматично створюють спани для викликів коду в бібліотеках, таких як Express.
npm install @opentelemetry/sdk-node \
@opentelemetry/api \
@opentelemetry/auto-instrumentations-node \
@opentelemetry/sdk-metrics \
@opentelemetry/exporter-trace-otlp-http \
@opentelemetry/exporter-metrics-otlp-http
-
Налаштування інструментування та конфігурація необхідні до того, як буде застосовано код додатку.
Ми використовуватимемо прапорець — require для цього завдання. -
Створіть файл під назвою
instrumentation.ts
і додайте необхідний код налаштування:
/*instrumentation.ts*/
import { NodeSDK } from '@opentelemetry/sdk-node';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import {
PeriodicExportingMetricReader
} from '@opentelemetry/sdk-metrics';
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
const sdk = new NodeSDK({
traceExporter: new OTLPTraceExporter({
url: `https://otel.kloudmate.com:4318/v1/traces`,
headers: {
Authorization: '',
},
}),
metricReader: new PeriodicExportingMetricReader({
exporter: new OTLPMetricExporter({
url: `https://otel.kloudmate.com:4318/v1/metrics`,
headers: {
Authorization: '',
},
}),
}),
instrumentations: [getNodeAutoInstrumentations()],
});
sdk.start();
Примітка: Ви повинні налаштувати URL експорту, включаючи ключ API KloudMate як заголовок Authorization, щоб надсилати дані до KloudMate.
Крок 3: Запуск інструментованого додатка
Запустіть інструментований додаток, використовуючи прапорець — require для завантаження налаштування інструментування з файлу instrumentation.ts
перед виконанням коду додатку.
$ npx ts-node --require ./instrumentation.ts app.ts
Listening for requests on http://localhost:8080
- Доступ до додатка
Відкрийте веб-браузер і перейдіть за адресою http://localhost:8080/rolldice. Це спрацює з налаштованими точками доступу у вашому додатку. - Перегляд трас у KloudMate
Ви повинні побачити спани, згенеровані інструментуванням OpenTelemetry на сторінці трас у вашому акаунті KloudMate. Це свідчить про те, що телеметричні дані правильно збираються та експортуються до KloudMate.
У наведеному вище прикладі ми використали TypeScript для додатку на Node.js. TypeScript надає додаткову безпеку типів і дуже рекомендується для підтримки та масштабування великих додатків. Кроки налаштування та конфігурації, наведених тут, адаптовані для середовища TypeScript, що гарантує, що ви зможете використовувати переваги як TypeScript, так і OpenTelemetry у вашому додатку на Node.js.
Якщо ви віддаєте перевагу JavaScript, зверніться сюди для отримання вказівок.
Джерело для прикладу додатку: Початок роботи з OpenTelemetry для Node.js.
Налаштування вашого акаунту в KloudMate та інтеграція
Для того, щоб розпочати роботу з KloudMate, перше, що потрібно зробити, — це створити акаунт. Платформа пропонує безкоштовний план, що дозволяє вам досліджувати її широкі можливості без початкових витрат.
Кроки для початку:
- Інтеграція з AWS: Це дозволяє використовувати можливості KloudMate для моніторингу та аналізу ваших ресурсів AWS.
- Інтеграція з OpenTelemetry: KloudMate підтримує інтеграцію з OpenTelemetry, що є нейтральною до постачальників платформою для спостережуваності. Це дозволяє інструментувати ваші додатки та сервіси за допомогою OpenTelemetry та експортувати телеметричні дані до KloudMate для детального аналізу та візуалізації.
- Перевірка інгестії даних: Після налаштування інтеграції важливо перевірити, що телеметричні дані правильно поглинаються. Використовуйте інформаційні панелі та логи в KloudMate, щоб переконатися, що продуктивність та поведінка вашого додатка моніторяться коректно.
Цей крок допомагає підтвердити, що дані надходять як очікується, і що ваш додаток спостерігається всебічно.
Для детальних інструкцій щодо налаштування вашого акаунту в KloudMate та інтеграції з OpenTelemetry, зверніться до офіційної документації: Налаштування KloudMate.
Моніторинг вашого додатку в KloudMate
Після інтеграції вашого додатку на Node.js з OpenTelemetry та KloudMate, ви зможете ефективно моніторити продуктивність, виявляти вузькі місця та усувати проблеми в реальному часі. Платформа спостережуваності KloudMate надає інтуїтивно зрозумілий інтерфейс з розширеними функціями для підтримки здоров'я додатка:
- Доступ до панелі трас
Використовуйте панель трас для повного огляду розподілених трас. Аналізуйте спани, виявляйте вузькі місця та перевіряйте залежності сервісів, контролюючи латентність, тривалість і метрики статусу для оптимізації продуктивності.
- Моніторинг помилок
Панель помилок централізує всі помилки додатка, дозволяючи переглядати їх згрупованими за сервісами або точками доступу. Доступ до детальних діагностики для аналізу корінної причини та фільтрації помилок за серйозністю або частотою для зосередження на критичних проблемах.
- Візуалізація вашої архітектури за допомогою карт сервісів
Карта сервісів KloudMate надає всебічний огляд ваших мікросервісів і їх взаємодій. Ви можете відображати залежності, моніторити показники здоров'я, такі як латентність і рівень помилок, і легко виявляти вузькі місця або некоректні налаштування.
- Відстеження ключових метрик за допомогою панелей моніторингу
Панелі в реальному часі надають інсайти в основні метрики продуктивності. Аналізуйте патерни трафіку, контролюйте тренди латентності та виявляйте аномалії в рівнях помилок, щоб забезпечити надійність системи.
- Налаштування сповіщень
Налаштуйте сповіщення для моніторингу рівнів помилок, сплесків латентності та незвичних патернів запитів у сервісах. Проактивно отримуйте сповіщення, коли порушуються визначені пороги, щоб забезпечити швидку реакцію на інциденти та підтримувати продуктивність системи.
Використовуючи ці можливості, KloudMate дозволяє вам вийти за межі базового моніторингу, надаючи глибокі інсайти в поведінку вашої системи та забезпечуючи надійність і стабільність продуктивності додатка.
Висновок
У цьому посібнику ми охопили основні кроки для налаштування OpenTelemetry для додатків на Node.js та інтеграції з KloudMate. Завдяки інструментуванню вашого додатка, ви отримуєте можливість збирати та аналізувати телеметричні дані, що є критично важливим для підтримки високої продуктивності та надійності.
Інтеграція OpenTelemetry з KloudMate надає глибший огляд поведінки вашого додатка, ефективно вирішуючи проблеми з продуктивністю. Використовуючи ці практики спостережуваності, розробники можуть створювати стійкі додатки, які постійно відповідають очікуванням користувачів.
Перекладено з: Configuring Node.js with OpenTelemetry and KloudMate