Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
197 changes: 197 additions & 0 deletions content/documentation/user/external-services-monitoring.ru.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
---
title: Мониторинг внешних сервисов
menuTitle: Мониторинг внешних сервисов
d8Edition: ee
moduleStatus: experimental
---

Мониторинг внешних сервисов — это механизм автоматической проверки доступности и работоспособности внешних сервисов, подключенных к платформе. Система периодически проверяет состояние сервисов и отображает их статус в интерфейсе.

## Как это работает

Платформа автоматически выполняет проверки здоровья внешних сервисов по расписанию. Для каждого сервиса можно настроить параметры проверки: URL, метод запроса, ожидаемый статус код, таймаут и другие параметры.

После каждой проверки система сохраняет результат и обновляет статус здоровья сервиса. Статус может быть:

- **healthy** — сервис работает корректно и доступен
- **unhealthy** — сервис недоступен или возвращает ошибку
- **unknown** — статус еще не определен (первая проверка не выполнена)

## Настройка мониторинга

Настройка мониторинга выполняется в разделе **Администрирование** → **Внешние сервисы** при создании или редактировании внешнего сервиса.

### Параметры мониторинга

| Параметр | Описание | Пример |
|----------|----------|--------|
| **Включить мониторинг** | Включает или выключает автоматические проверки здоровья сервиса | Включено |
| **Интервал проверки** | Как часто выполнять проверку здоровья сервиса | `5m`, `1h`, `30s` |
| **Метод запроса** | HTTP метод для проверки здоровья | `GET`, `POST`, `PUT` |
| **Путь для проверки** | Путь на сервере для проверки здоровья | `/health`, `/api/status` |
| **Ожидаемый статус код** | HTTP статус код, который считается успешным | `200`, `201` |
| **Таймаут запроса** | Максимальное время ожидания ответа | `10s`, `30s` |
| **Заголовки** | Дополнительные HTTP заголовки для запроса | `Content-Type: application/json` |
| **Тело запроса** | Тело запроса (для POST/PUT методов) | JSON или YAML формат |

### Примеры настройки

**Проверка через GET запрос:**

- Метод: `GET`
- Путь: `/health`
- Ожидаемый статус код: `200`
- Таймаут: `10s`

**Проверка через POST запрос:**

- Метод: `POST`
- Путь: `/api/health/check`
- Ожидаемый статус код: `200`
- Тело запроса: `{"check": true}`
- Заголовки: `Content-Type: application/json`

### Использование шаблонов

В заголовках и теле запроса можно использовать шаблоны для подстановки значений:

- `{{.service.name}}` — название сервиса
- `{{.service.url}}` — URL сервиса
- `{{.status}}` — текущий статус
- `{{.error}}` — текст ошибки
- `{{.responseTime}}` — время ответа

## Просмотр статуса здоровья

Статус здоровья внешнего сервиса отображается в нескольких местах:

### В списке внешних сервисов

В разделе **Администрирование** → **Внешние сервисы** в таблице сервисов отображается колонка **Статус** с цветовой индикацией:

- 🟢 Зеленый — сервис работает (healthy)
- 🔴 Красный — сервис недоступен (unhealthy)
- ⚪ Серый — статус не определен (unknown)

### В карточке сервиса

При открытии карточки внешнего сервиса отображается подробная информация о статусе здоровья:

- Текущий статус
- Время последней проверки
- Время последнего успешного ответа
- Время ответа (response time)
- Текст последней ошибки (если есть)

### История проверок

В карточке сервиса доступна история последних проверок здоровья. История содержит:

- Статус каждой проверки
- Время проверки
- Время ответа
- Текст ошибки (если проверка не удалась)

По умолчанию сохраняются последние 10 записей истории. Количество записей можно настроить в конфигурации платформы.

## Виджет для дашборда

Виджет **"Здоровье внешних сервисов"** позволяет отслеживать состояние всех внешних сервисов с включенным мониторингом на дашборде.

### Информация в виджете

Виджет отображает:

- **Сводную статистику** — общее количество сервисов, количество здоровых, нездоровых и с неизвестным статусом
- **Таблицу сервисов** — список всех сервисов с информацией о каждом:
- Название сервиса
- Статус здоровья
- Время ответа
- Время последней проверки
- Описание ошибки (если есть)

### Настройка виджета

Виджет поддерживает пагинацию для удобного просмотра большого количества сервисов. Можно выбрать количество записей на странице: 5, 10, 20, 50 или 100.

## Уведомления

При изменении статуса здоровья сервиса система может отправлять уведомления. Настройка уведомлений выполняется в конфигурации мониторинга каждого сервиса.

### Типы уведомлений

- **Без уведомлений** — уведомления не отправляются
- **Webhook** — отправка уведомления на указанный webhook URL
- **Системное уведомление** — создание системного уведомления в платформе (доступно только администраторам)

### События для уведомлений

Уведомления отправляются при следующих событиях:

- Переход статуса из **healthy** в **unhealthy** — сервис стал недоступен
- Переход статуса из **unhealthy** в **healthy** — сервис восстановился

### Шаблоны в сообщениях

В сообщениях уведомлений можно использовать шаблоны:

- `{{service.name}}` — название сервиса
- `{{service.url}}` — URL сервиса
- `{{status}}` — текущий статус
- `{{error}}` — текст ошибки
- `{{responseTime}}` — время ответа

**Пример сообщения:**

```
Сервис {{.service.name}} ({{.service.url}}) стал недоступен.
Ошибка: {{.error}}
Время ответа: {{.responseTime}}ms
```

## Проверка доступности перед использованием

Платформа автоматически проверяет доступность внешнего сервиса перед его использованием в следующих случаях:

- **Источники данных** — перед синхронизацией данных из внешнего сервиса
- **Действия** — перед выполнением действия, использующего внешний сервис
- **Виджеты** — перед загрузкой данных в виджет
- **Действия виджетов** — перед выполнением действия виджета

Если сервис недоступен (статус **unhealthy**), операция будет заблокирована с соответствующим сообщением об ошибке. Это помогает избежать выполнения операций с недоступными сервисами и получать понятные сообщения об ошибках.

**Важно:** Если мониторинг для сервиса не включен, проверка доступности не выполняется, и сервис может использоваться без ограничений.

## Рекомендации

### Настройка интервала проверки

Выберите интервал проверки в зависимости от критичности сервиса:

- **Критичные сервисы** — проверка каждые 1-5 минут
- **Важные сервисы** — проверка каждые 15-30 минут
- **Обычные сервисы** — проверка каждый час или реже

### Настройка таймаута

Установите таймаут запроса с учетом нормального времени ответа сервиса:

- Для быстрых сервисов — 5-10 секунд
- Для медленных сервисов — 30-60 секунд

### Использование health check endpoints

Рекомендуется использовать специальные endpoints для проверки здоровья (например, `/health`, `/api/status`), которые:

- Быстро отвечают
- Не требуют авторизации или используют минимальные права
- Не создают нагрузку на сервис

### Мониторинг критичных сервисов

Для критичных сервисов рекомендуется:

- Включить уведомления о проблемах
- Установить короткий интервал проверки
- Настроить системные уведомления для администраторов

Loading