diff --git a/content/documentation/admin/healthchecks/types.ru.md b/content/documentation/admin/healthchecks/types.ru.md index 5d6547b..77df749 100644 --- a/content/documentation/admin/healthchecks/types.ru.md +++ b/content/documentation/admin/healthchecks/types.ru.md @@ -216,7 +216,7 @@ conditions: ## URL -Правило типа **URL** выполняет проверку доступности HTTP/HTTPS-эндпоинта по заданным параметрам. Система формирует HTTP-запрос и сравнивает код ответа с ожидаемым. +Правило типа **URL** выполняет проверку доступности HTTP/HTTPS-эндпоинта: формируется запрос по заданным параметрам, затем результат оценивается по одному или нескольким **условиям** (выражениям Go template). Условия могут проверять код ответа, заголовки, тело ответа и параметры сущности. Во всех строковых полях используется шаблонизация с применением сущности, например: @@ -228,12 +228,32 @@ conditions: ### Параметры конфигурации -| Название | Опциональность | Описание | Примеры | -|--------------------|-----------------|-----------------------------------------------------------|-----------------------| -| URL | **Обязательно** | Полный адрес ресурса, к которому будет выполняться запрос | `https://example.com` | -| Метод | Опционально | HTTP-метод запроса | GET, POST | -| Тело запроса | Опционально | Тело запроса | | -| Ожидаемый статус | **Обязательно** | Код HTTP-статуса, с которым сравнивается полученный ответ | 200, 204. | +| Название | Опциональность | Описание | Примеры | +|-----------------------|-----------------|-----------------------------------------------------------------------------------------------|-----------------------| +| URL | **Обязательно** | Полный адрес ресурса, к которому выполняется запрос | `https://example.com` | +| Метод | Опционально | HTTP-метод запроса | GET, POST | +| Тело запроса | Опционально | Тело запроса в YAML (после шаблонизации сериализуется в JSON) | | +| Условия | Опционально | Одно или несколько выражений Go template для проверки ответа | см. ниже | +| Режим условия | Опционально | При нескольких условиях: **AllOf** (все должны выполниться) или **AnyOf** (достаточно одного) | AllOf, AnyOf | +| Не логировать значение| Опционально | Не сохранять значения, полученные в ответ на запрос | | + +Если условия не заданы, используется одно условие по умолчанию: `{{ eq .status.code 200 }}`. + +### Данные для условий + +В выражениях условий доступны: + +- **`.status`** — данные ответа: `.status.code` (код HTTP), `.status.status` (строка статуса), `.status.headers` (заголовки ответа), `.status.contentLength`. Поле **`.status.headers`** — это карта «имя заголовка → массив строк» (все значения заголовка; имена приводятся к нижнему регистру). Примеры: первый элемент заголовка — `{{ index (index .status.headers "content-type") 0 }}`; перебор значений — `{{ range index .status.headers "set-cookie" }}...{{ end }}`. +- **`.response`** — тело ответа, приведённое к типам (если ответ в JSON). +- **`.entity`** — параметры проверяемой сущности. + +Примеры условий: + +```go +{{ eq .status.code 200 }} +{{ eq (index (index .status.headers "content-type") 0) "application/json" }} +{{ gt .status.contentLength 0 }} +``` ### Обработка шаблонов @@ -254,7 +274,7 @@ name: "{{ .entity.name }}" ### Проверка результата -Метод сравнивает фактический HTTP-статус ответа с ожидаемым значением. В случае несовпадения возвращается ошибка со значением кода ответа. +Результат проверки считается успешным, если в зависимости от режима условия выполняются все условия (AllOf) или хотя бы одно (AnyOf). Если при вычислении условия возникает ошибка (например, тело ответа не JSON, а в условии используется `.response`), проверка завершается с ошибкой. Учитывайте, что `URL` также может быть динамическим и шаблонизироваться на основе параметров сущности: diff --git a/content/documentation/release-notes/v1.3.0.ru.md b/content/documentation/release-notes/v1.3.0.ru.md index 3828c2c..29af764 100644 --- a/content/documentation/release-notes/v1.3.0.ru.md +++ b/content/documentation/release-notes/v1.3.0.ru.md @@ -7,8 +7,25 @@ weight: 940 Выпуск релиза планируется 02.03.2026 {{< /alert >}} +## Изменения, влияющие на обратную совместимость + +### Проверки статуса: правило типа URL + +- **Условия вместо «ожидаемого статуса»:** проверка результата теперь выполняется по одному или нескольким выражениям Go template (условиям). Поле «Ожидаемый статус» в конфигурации правила больше не используется. Если условия не заданы, подставляется одно по умолчанию: `{{ eq .status.code 200 }}`. [Подробнее](../../admin/healthchecks/types/#url). + ## Новые возможности +### Проверки статуса + +#### Правило типа URL + +Обновлена логика настройки и работы правил проверки статуса типа **URL** ([подробнее](../../admin/healthchecks/types/#url)): + +- **Условия проверки** — предусмотрена возможность задания одного или нескольких выражений Go template. В выражениях доступны данные ответа (`.status`: код, заголовки, длина содержимого; `.response`: тело ответа) и параметры сущности (`.entity`) для проверки кода ответа, заголовков, тела ответа и свойств сущности. +- **Режим условия** — при наличии нескольких условий задаётся режим **AllOf** (требуется выполнение всех условий) или **AnyOf** (достаточно выполнения одного условия). +- **Опция «Не логировать значение»** — предусмотрена возможность не сохранять значения, полученные в ответ на запрос. +- В условиях обеспечивается доступ ко всем заголовкам ответа, в том числе с несколькими значениями, через `.status.headers`. + ### Виджеты #### Просмотр репозитория