Healthchecks
Введение
Каждый модуль системы Accelera имеет механизм проверки готовности (readiness) и работоспособности (liveness).
Проверка готовности (readiness)
Выполняются для определения готовности приложения к работе/приему задач. Проверяется доступность основных компонент.
Проверка работоспособности (liveness)
Выполняется во время работы приложения чтобы определить, работает ли приложение и убедиться, что оно не находится в состоянии, когда контейнер все еще работает, но приложение не может функционировать. Проверяется доступность основных компонент, наличие доступов к конечным узлам и тд.
Настройка
Для активации healthcheck интерфейса необходимо указать переменную среды ENABLE_METRICS=true.
Параметр активирует REST интерфейс для запроса heatlcheck. Номер порта по умолчанию для каждого модуля - 3010. Если вам нужно указать собственный порт задайте его в переменной среды METRICS_PORT.
Исключением является модуль flows_frontend, его healthcheck доступен по тому же адресу, где и основное API (переменная PORT).
Интерфейс
Каждый модуль имеет REST-api для получения информации о готовности/доступности системы.
Исключением является модуль flows_frontend, описание его реализации - ниже.
Модули обрабатывают следующие endpoint:
- Readiness endpoint: http://hostname:3010/ready Пример ответа:
{
"status": "UP",
"checks": [
{
"name": "Operational DB availability",
"state": "UP",
"data": {
"reason": ""
}
}
]
}- Liveness endpoint: http://hostname:3010/live Пример ответа:
{
"status": "UP",
"checks": [
{
"name": "Operational DB connection alive",
"state": "UP",
"data": {
"reason": ""
}
}
]
}- Health endpoint: http://hostname:3010/health Комплексная проверка, включающая в себя как readiness так и liveness пробы. Пример ответа:
{
"status": "UP",
"checks": [
{
"name": "Operational DB availability",
"state": "UP",
"data": {
"reason": ""
}
},
{
"name": "Operational DB connection alive",
"state": "UP",
"data": {
"reason": ""
}
}
]
}Набор проверок индивидуален для каждого модуля и перечислен в таблице ниже.
Проверки в модулях
flows_backoffice
readiness пробы
| Название проверки | Описание |
|---|---|
| Operational DB availability | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
| Broker availability | Доступность брокера RabbitMQ. Успешность проверки - установка соединения с брокером. |
| Analytics DB availability | Доступность аналитической БД (PostgreSQL или Clickhouse). Успешность проверки - выполнение без ошибок запроса select 1 |
| Redis availability | Доступность Redis. Успешность проверки - установка соединения с Redis. |
| PingCheck GET:localhost:3002/ping | Готовность API принимать запросы клиентов. Успешность проверки - отправка ping запроса на endpoint http://localhost:3005/ping. |
liveness пробы
| Название проверки | Описание |
|---|---|
| Operational DB connection alive | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
| Broker connection alive | Доступность брокера RabbitMQ. Не было событий ошибки/блокировки канала. |
| Analytics DB connection alive | Доступность аналитической БД (PostgreSQL или Clickhouse). Успешность проверки - выполнение без ошибок запроса select 1 |
| Redis connection alive | Доступность Redis. Успешность проверки - запрос ping в redis выполнен без ошибок. |
| PingCheck GET:localhost:3002/ping | API доступно для подключений. Успешность проверки - отправка ping запроса на endpoint http://localhost:3005/ping. |
bulk_worker
readiness пробы
| Название проверки | Описание |
|---|---|
| Broker availability | Доступность брокера RabbitMQ. Успешность проверки - установка соединения с брокером. |
| Analytics DB availability | Доступность аналитической БД (PostgreSQL или Clickhouse). Успешность проверки - выполнение без ошибок запроса select 1 |
| Data Schema ready | Проверка успешного существования/инициализации таблиц. Успешная проверка - таблицы существуют/инициализированы. |
| FS ready | Доступность файловой системы контейнера для создания временных файлов. Успешность проверки - создание файла по необходимому пути и его удаление. |
liveness пробы
| Название проверки | Описание |
|---|---|
| Broker connection alive | Доступность брокера RabbitMQ. Не было событий ошибки/блокировки канала. |
| Analytics DB connection alive | Доступность аналитической БД (PostgreSQL или Clickhouse). Успешность проверки - выполнение без ошибок запроса select 1 |
flows_frontend
Данный модуль - единственный, который имеет одну проверку и на readiness и на liveness, по сути давая понять, что веб-сервер внутри контейнера жив и работоспособен.
пробы
GET /health
Response:
200 OK {"status":"UP"}flows_timers
readiness пробы
| Название проверки | Описание |
|---|---|
| Broker availability | Доступность брокера RabbitMQ. Успешность проверки - установка соединения с брокером. |
| Operational DB availability | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
| Data Schema ready | Проверка успешного существования/инициализации таблицы для таймеров. Успешная проверка - таблица существует/инициализирована. |
liveness пробы
| Название проверки | Описание |
|---|---|
| Broker connection alive | Доступность брокера RabbitMQ. Не было событий ошибки/блокировки канала. |
| Operational DB connection alive | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
flows_actions
readiness пробы
| Название проверки | Описание |
|---|---|
| Operational DB availability | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
| Broker availability | Доступность брокера RabbitMQ. Успешность проверки - установка соединения с брокером. |
| Redis availability | Доступность Redis. Успешность проверки - установка соединения с Redis. |
liveness пробы
| Название проверки | Описание |
|---|---|
| Operational DB connection alive | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
| Broker connection alive | Доступность брокера RabbitMQ. Не было событий ошибки/блокировки канала. |
| Redis connection alive | Доступность Redis. Успешность проверки - запрос ping в redis выполнен без ошибок. |
flows_engine
readiness пробы
| Название проверки | Описание |
|---|---|
| Operational DB availability | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
| Broker availability | Доступность брокера RabbitMQ. Успешность проверки - установка соединения с брокером. |
| Redis availability | Доступность Redis. Успешность проверки - установка соединения с Redis. |
liveness пробы
| Название проверки | Описание |
|---|---|
| Operational DB connection alive | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
| Broker connection alive | Доступность брокера RabbitMQ. Не было событий ошибки/блокировки канала. |
| Redis connection alive | Доступность Redis. Успешность проверки - запрос ping в redis выполнен без ошибок. |
flows_segments
readiness пробы
| Название проверки | Описание |
|---|---|
| Operational DB availability | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
| Source DB availability | Доступность БД-источника. Успешность проверки - выполнение без ошибок запроса select 1 (может быть изменен в зависимости от драйвера подключения). |
| Broker availability | Доступность брокера RabbitMQ. Успешность проверки - установка соединения с брокером. |
| Redis availability | Доступность Redis. Успешность проверки - установка соединения с Redis. |
liveness пробы
| Название проверки | Описание |
|---|---|
| Operational DB connection alive | Доступность операционной БД PostgreSQL. Успешность проверки - выполнение без ошибок запроса select 1 |
| Source DB connection alive | Доступность БД-источника. Успешность проверки - выполнение без ошибок запроса select 1 (может быть изменен в зависимости от драйвера подключения). |
| Broker connection alive | Доступность брокера RabbitMQ. Не было событий ошибки/блокировки канала. |
| Redis connection alive | Доступность Redis. Успешность проверки - запрос ping в redis выполнен без ошибок. |
sql_adapter
readiness пробы
| Название проверки | Описание |
|---|---|
| Source DB availability | Доступность БД-источника. Успешность проверки - выполнение без ошибок запроса select 1 (может быть изменен в зависимости от драйвера подключения). |
| Broker availability | Доступность брокера RabbitMQ. Успешность проверки - установка соединения с брокером. |
| Redis availability | Доступность Redis. Успешность проверки - установка соединения с Redis. |
liveness пробы
| Название проверки | Описание |
|---|---|
| Source DB connection alive | Доступность БД-источника. Успешность проверки - выполнение без ошибок запроса select 1 (может быть изменен в зависимости от драйвера подключения). |
| Broker connection alive | Доступность брокера RabbitMQ. Не было событий ошибки/блокировки канала. |
| Redis connection alive | Доступность Redis. Успешность проверки - запрос ping в redis выполнен без ошибок. |