HTTP проверки с помощью Proto Observability

Отслеживание состояния локальных или удаленных HTTP-эндпоинтов. HTTP-проверка может обнаруживать коды неправильных ответов (например, 404), определять скорое истечение срока действия SSL-сертификатов, искать в ответах определенный текст и многое другое. Проверка также предоставляет время ответа HTTP в качестве метрики.

Описание

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.