Коротка відповідь
middleПровіряю лог-файли, метрики та health‑check endpoint за останні три дні: якщо всі запити повертають 200 і логів помилок немає, застосунок працював стабільно. Якщо використовую CI/CD, перевіряю статус останніх деплойментів і uptime‑моніторинг. У разі відсутності аномалій, підтверджую стабільність.
Повне пояснення
Що це і навіщо
Під «працював справно» розуміємо, що всі критичні процеси виконувалися без помилок і відповідають вимогам SLA. Для перевірки потрібні дані про виконання запитів, логування та моніторинг.
Ключові принципи
- Логи – запис всіх помилок, попереджень і інформаційних повідомлень.
- Метрики – час відповіді, кількість запитів, використання ресурсів.
- Health‑check – endpoint (наприклад,
/health) що повертає статус 200 при нормальній роботі. - Моніторинг – інструменти (Prometheus, Grafana, Datadog) що збирають метрики.
- CI/CD – статус деплойментів, автоматичні тести.
Як це працює
- Логи збираються через Winston/PM2 і зберігаються у файловій системі або в ELK‑стек.
- Метрики збираються через
prom-clientу Node.js і експортуються на/metrics. - Health‑check повертає JSON:
{status:'ok', uptime:123456}. - Моніторинг підключає ці точки, створює графіки і алерти.
- CI/CD запускає unit/integration тести після кожного коміту.
Практика і реалізація (Node.js/Express)
// health-check
app.get('/health', (req, res) => {
res.json({status: 'ok', uptime: process.uptime()});
});
// metrics with prom-client
const client = require('prom-client');
app.get('/metrics', async (req, res) => {
res.set('Content-Type', client.register.contentType);
res.end(await client.register.metrics());
});
Тестування
- Unit: Jest + supertest для
/health. - Integration: перевірка, що всі маршрути повертають 200.
- E2E: Playwright, що запускає реальний сервер і перевіряє uptime.
Безпека
- Логи не містять конфіденційних даних (паролі, токени).
- Метрики доступні лише внутрішньому мережі.
Оптимізація
- Кешування результатів health‑check (наприклад, 5 секунд).
- Підключення
clusterабо PM2 для масштабування.
Часті помилки
- Логи не збираються – перевірте конфіг Winston.
- Health‑check повертає 500 – перевірте залежності (DB, Redis).
- Метрики не експортуються – переконайтеся, що
/metricsдоступний. - CI/CD не запускає тести – перевірте скрипти в
package.json. - Моніторинг не підключений – налаштуйте Prometheus.
- Uptime > 0, але помилки – перевірте
error‑middleware. - Відсутність алертів – налаштуйте пороги в Grafana.
- Логи зберігаються лише у пам’яті – використайте
winston-daily-rotate-file.
Cheatsheet
| Команда | Що робить |
|---|---|
npm run start:dev | Запускає сервер з hot‑reload |
npm test | Запускає unit тести |
node dist/index.js | Запуск продакшн‑версії |
Follow‑up питання
- Як налаштувати алерти в Grafana для health‑check?
- Які метрики найважливіші для моніторингу Node.js сервера?