HTTP проверки с помощью Proto Observability
Описание
HTTP проверка позволяет мониторить доступность и качество ответа локальных или удаленных HTTP-эндпоинтов. Проверка умеет:
- фиксировать неуспешные HTTP-коды;
- измерять время ответа;
- искать заданный текст/шаблон в ответе;
- проверять TLS-сертификаты и отслеживать скорое истечение срока их действия.
Установка
Проверка входит в поставку Агента Proto Observability. Отдельная установка не требуется. Проверку удобно запускать как с хоста, где расположен сервис, так и с отдельного хоста (например, для проверки доступности извне).
Конфигурация
Отредактируйте файл http_check.d/conf.yaml в каталоге conf.d/ директории конфигурации Агента.
Пример конфигурации:
init_config:
# Общий путь к корневым сертификатам (опционально)
# ca_certs: /etc/ssl/certs/ca-certificates.crt
instances:
- name: Интернет-магазин
url: https://somesite.com/
tls_verify: true
# tls_ca_cert: /etc/ssl/certs/ca-certificates.crt
- name: Платежный шлюз Paypal.com
url: https://paypal.com/
tls_verify: true
# tls_ca_cert: /etc/ssl/certs/ca-certificates.crt
По умолчанию проверка выполняется при каждом цикле сбора агента (обычно каждые 15 секунд). Чтобы изменить частоту, используйте настройку интервала сбора для проверки на уровне Агента.
Настройки и их описание
| Настройка | Описание |
|---|---|
name |
Имя инстанса проверки. Используется как тег в сервисных проверках. |
url |
URL, который нужно проверить. |
timeout |
Таймаут ожидания ответа в секундах (по умолчанию 10). |
method |
HTTP-метод запроса. |
data |
Тело запроса для методов POST/PUT/DELETE/PATCH. Для SOAP используйте POST и XML-строку в этом параметре. |
headers |
Дополнительные заголовки запроса. |
content_match |
Строка или регулярное выражение (Python regex). Если не найдено — проверка падает. |
reverse_content_match |
Инвертирует логику content_match. Если true, проверка падает, когда строка найдена. |
username, password |
Логин/пароль для Basic Auth. |
http_response_status_code |
Строка или регулярное выражение для кода ответа. По умолчанию допускаются 1xx, 2xx, 3xx. Пример: 401 или 4\\d\\d. |
include_content |
Если true, добавляет первые 500 символов ответа в уведомления. По умолчанию false. |
collect_response_time |
По умолчанию true — отправляет метрику network_http_response_time. Чтобы отключить, задайте false. |
tls_verify |
Проверять TLS-сертификат при обращении к url. |
tls_ignore_warning |
Отключает предупреждения TLS при tls_verify: true. |
tls_ca_cert |
Путь к CA-сертификату для конкретного инстанса (перекрывает init_config.ca_certs). |
check_certificate_expiration |
Проверять срок действия TLS-сертификата. При включении сертификат валидируется независимо от tls_verify. |
tls_retrieve_non_validated_cert |
При tls_verify: false и check_certificate_expiration: true позволяет извлечь сертификат для проверки срока. |
days_warning, days_critical |
Пороги предупреждения/критического статуса по дням до истечения сертификата. |
ssl_server_name |
Имя хоста для подключения при проверке сертификата (SNI) и для сравнения hostname. |
check_hostname |
Если true, логирует предупреждение, если hostname в URL не совпадает с hostname сертификата. |
skip_proxy |
Если true, игнорирует прокси-настройки. По умолчанию false и используются прокси из datadog.yaml. |
allow_redirects |
Разрешить следовать редиректам (по умолчанию true). |
tags |
Список пользовательских тегов. |
Важно: по умолчанию проверка срока действия TLS-сертификата включена.
Метрики
network_http_response_time— время ответа HTTP-запроса (секунды).network_http_can_connect— успешное соединение (1/0).network_http_cant_connect— неуспешное соединение (1/0).http_ssl_days_left— дней до истечения TLS-сертификата.http_ssl_seconds_left— секунд до истечения TLS-сертификата.
Сервисные проверки
http_can_connect
Критический статус, если Агент не может установить HTTP-соединение. ОК, если соединение успешно.
Статусы: ok, critical.
http_ssl_cert
Критический статус, если TLS-сертификат истек. Предупреждение, если срок истекает раньше порога days_warning.
ОК — в остальных случаях.
Статусы: ok, warning, critical, unknown.
Чтобы отключить эту проверку, установите check_certificate_expiration: false.
Проверка работоспособности
Запустите команду статуса Агента и убедитесь, что в разделе Checks есть http_check.
Пример для Linux:
sudo protoobp-agent status
Устранение неполадок
- Проверьте сетевую доступность
urlс хоста Агента. - Уточните корректность TLS-настроек и путь к сертификатам.
- При необходимости увеличьте
timeoutи добавьте диагностическиеtags.