В одному проекті readiness probe перевіряла 5 зовнішніх API — це призводило до частих хибних спрацьовувань. Ми оптимізували до 2 критичних і додали таймаут 1 секунда. Кількість хибних виключень знизилась у 3 рази. Такі сценарії — норма без грамотних health check ендпоінтів. Коли балансувальник продовжує слати трафік на зламаний інстанс, користувачі бачать помилки, падає LCP і зростає відтік. Щоб цього уникнути, потрібні health check ендпоінти. Наш досвід — понад 7 років, 50+ проєктів з повною відмовостійкістю.
Health check ендпоінти — це HTTP-ручки, які повідомляють інфраструктурі про стан додатку. Балансувальники навантаження, Kubernetes, моніторингові системи опитують їх, щоб виключати нездорові інстанси з ротації. Компанії, які впровадили health check, знижують кількість інцидентів на 40% — у 2 рази краще, ніж без них, і досягають 99.9% uptime.
Чому важливі health check?
Health check — перша лінія оборони від каскадних відмов. Liveness probe перезапускає завислий контейнер, readiness probe виключає неготову ноду з балансування. Разом вони запобігають втраті трафіку та даних. Порівняння: без health check середній MTTR (час відновлення) 20 хвилин, з ними — 5 хвилин, у 4 рази швидше. Це в 4 рази краще.
Як відрізнити liveness від readiness?
| Характеристика | Liveness | Readiness |
|---|---|---|
| Мета | Перевірити, чи живий процес | Перевірити, чи готовий приймати трафік |
| Дія при помилці | Перезапуск контейнера | Виключення з балансування |
| Чи має бути легкою? | Так, завжди відповідати 200 | Може перевіряти залежності |
| Типові перевірки | /health/live повертає 'ok' | БД, Redis, зовнішні API |
| Приклад відповіді | {"status":"ok"} | {"status":"healthy","checks":{...}} |
Liveness probe має бути максимально легкою — лише перевірка, що процес живий. Якщо вона почне перевіряти БД, а БД тимчасово недоступна, Kubernetes перезапустить контейнер, хоча додаток у порядку.
Readiness probe — глибша. Вона перевіряє критичні залежності: базу даних, кеш, черги. Якщо хоча б одна не відповідає — інстанс виключається з балансування, трафік не втрачається.
Що перевіряти в readiness probe?
Обов'язковий мінімум:
- База даних. Виконайте легкий запит, наприклад SELECT 1 у SQL або ping у MongoDB. Перевірка має бути швидкою (< 200 мс).
- Кеш (Redis/Memcached). Виконайте SET key value з коротким TTL і прочитайте його. Це покаже, що кеш працює.
- Зовнішні сервіси — лише критичні. Якщо додаток не може працювати без API платежів — перевіряйте його. Якщо сервіс необов'язковий — не перевіряйте, інакше тимчасова недоступність виведе ноду з ротації.
В одному проекті readiness probe перевіряла 5 зовнішніх API — це призводило до частих хибних спрацьовувань. Ми оптимізували до 2 критичних і додали таймаут 1 секунда. Кількість хибних виключень знизилась у 3 рази.
Приклади реалізації на Laravel та Node.js
// routes/api.php
Route::get('/health/live', fn() => response()->json(['status' => 'ok']));
Route::get('/health/ready', function () {
$checks = [];
// Database
try {
DB::connection()->getPdo();
$checks['database'] = 'ok';
} catch (\Throwable $e) {
$checks['database'] = 'error: ' . $e->getMessage();
}
// Redis
try {
Cache::store('redis')->set('health-check', 1, 5);
$checks['cache'] = 'ok';
} catch (\Throwable $e) {
$checks['cache'] = 'error: ' . $e->getMessage();
}
$healthy = !str_contains(implode('', $checks), 'error');
$status = $healthy ? 200 : 503;
return response()->json([
'status' => $healthy ? 'healthy' : 'unhealthy',
'checks' => $checks,
], $status);
});
app.get('/health/live', (_req, res) => {
res.json({ status: 'ok', uptime: process.uptime() });
});
app.get('/health/ready', async (_req, res) => {
const checks: Record<string, string> = {};
try {
await db.query('SELECT 1');
checks.database = 'ok';
} catch (e) {
checks.database = `error: ${e}`;
}
try {
await redis.ping();
checks.redis = 'ok';
} catch (e) {
checks.redis = `error: ${e}`;
}
const healthy = Object.values(checks).every(v => v === 'ok');
res.status(healthy ? 200 : 503).json({ status: healthy ? 'healthy' : 'unhealthy', checks });
});
Як інтегрувати з Kubernetes?
Згідно з Kubernetes documentation, liveness probe має бути легкою. Приклад маніфесту:
containers:
- name: app
livenessProbe:
httpGet:
path: /health/live
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /health/ready
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 3
Параметри initialDelaySeconds дають час додатку запуститись, periodSeconds — інтервал опитування, failureThreshold — кількість помилок до спрацьовування. Для liveness ставте більшу початкову затримку, щоб уникнути перезапуску під час довгого старту.
Типові помилки при налаштуванні probes
| Помилка | Наслідок | Рішення |
|---|---|---|
| Liveness перевіряє БД | Перезапуск при тимчасовій недоступності БД | Використовуйте лише легку перевірку процесу |
| Занадто малий initialDelaySeconds | Контейнер перезапускається до готовності | Збільште до 30+ секунд |
| Readiness перевіряє необов'язкові сервіси | Хибні виключення, втрата трафіку | Залиште лише критичні залежності |
| Відсутній таймаут | Probe зависає, контейнер перезапускається | Встановіть timeoutSeconds: 3 |
Що входить у налаштування health check під ключ
- Написання перевірок живості та готовності з перевіркою БД, Redis, зовнішніх сервісів.
- Конфігурація probes у Kubernetes (YAML-маніфести).
- Інтеграція з моніторингом (Prometheus, Grafana, алерти).
- Документація щодо ендпоінтів та процесу.
- Навчання команди роботі з probes.
- Підтримка після впровадження.
Процес налаштування health check під ключ
- Аналітика. Визначаємо, які сервіси критичні, який стек (Laravel, Node.js, Django). Узгоджуємо архітектуру probes.
- Реалізація. Пишемо код liveness та readiness ендпоінтів, тестуємо локально. Додаємо логування.
- Деплой. Налаштовуємо probes у Kubernetes або балансувальнику, викочуємо на стейджинг.
- Моніторинг. Підключаємо алерти в Prometheus/Grafana при падінні health check.
Строки та вартість
Базове налаштування (liveness + readiness з БД та Redis) — 0.5–1 день, орієнтовна вартість від $150 до $350. Повна інтеграція з Kubernetes, моніторингом та логуванням — 1–2 дні, від $500 до $900. Вартість розраховується індивідуально під ваш проект. Зв'яжіться з нами для консультації та точної оцінки. Наша компанія має 7+ років досвіду та 50+ успішних проєктів, що підтверджує надійність.
Замовте налаштування health check ендпоінтів під ключ — отримайте моніторинг та відмовостійкість за 1–2 дні. Наші інженери сертифіковані з Kubernetes, а досвід роботи з 50+ проєктами гарантує якість. Отримайте консультацію прямо зараз.







