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

Обновлено 15.10.2026
Эта проверка отслеживает версии протокола TLS, срок действия сертификата и т.д.

Описание

TLS-проверка подключается к сервису по TLS (или читает файл сертификата) и контролирует:

  • доступность TLS-соединения;
  • версию протокола TLS, согласованную с сервером;
  • корректность сертификата: цепочку доверия и соответствие имени сервера;
  • срок действия сертификата — с предупреждением заранее.

Проверка подходит для веб-сервисов, API, почтовых серверов, баз данных с TLS и любых других сервисов, где важно не пропустить истечение сертификата.

Установка

Проверка входит в поставку Агента Proto Observability. Отдельная установка не требуется. Для проверки удалённых сервисов Агенту нужен сетевой доступ к проверяемому адресу и порту.

Конфигурация

Создайте файл tls.d/conf.yaml в каталоге conf.d/ директории конфигурации Агента (за основу можно взять conf.yaml.example в том же каталоге).

Пример для удалённых сервисов:

init_config:

instances:
  - name: portal
    server: portal.corp.local
    port: 443
    days_warning: 30
    days_critical: 7

  - name: api_by_ip
    server: 10.20.0.15
    port: 8443
    server_hostname: api.corp.local   # имя для SNI и проверки сертификата

  - name: postgres_tls
    server: db.corp.local
    port: 5432
    start_tls: postgres

Пример для файла сертификата на хосте Агента:

init_config:

instances:
  - name: nginx_cert
    local_cert_path: /etc/nginx/ssl/portal.pem

Файл сертификата должен быть доступен на чтение пользователю Агента (pobp-agent).

Настройки и их описание

НастройкаОписание
serverИмя или IP-адрес сервиса. Обязательный, если не задан local_cert_path.
portПорт (по умолчанию 443).
nameИмя экземпляра проверки; добавляется ко всем данным как тег name. Рекомендуется задавать всегда: других тегов, различающих экземпляры, проверка не добавляет.
server_hostnameИмя для SNI и для проверки соответствия сертификата. По умолчанию — значение server. Укажите его, если server задан IP-адресом.
local_cert_pathПуть к файлу сертификата (PEM или DER) вместо подключения к серверу. В этом режиме проверки tls.can_connect и tls.version не выполняются.
start_tlsПереход на TLS внутри протокола для сервисов, которые не принимают TLS сразу. Поддерживаются postgres и mysql.
allowed_versionsДопустимые версии протокола: SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3. По умолчанию — только TLSv1.2 и TLSv1.3. Можно задать в init_config для всех экземпляров.
days_warningЗа сколько дней до истечения сертификата tls.cert_expiration переходит в warning (по умолчанию 14).
days_criticalЗа сколько дней до истечения сертификата tls.cert_expiration переходит в critical (по умолчанию 7).
seconds_warning, seconds_criticalТе же пороги в секундах; если заданы, заменяют days_warning и days_critical.
tls_verifyПо умолчанию true. Проверять цепочку доверия сертификата.
tls_validate_hostnameПо умолчанию true. Проверять, что сертификат выдан на server_hostname.
tls_ca_certПуть к файлу или каталогу корневых сертификатов — для сертификатов, выпущенных корпоративным центром сертификации.
tls_cert, tls_private_key, tls_private_key_passwordКлиентский сертификат и ключ — для серверов, требующих взаимной аутентификации.
fetch_intermediate_certsПо умолчанию false. Загружать недостающие промежуточные сертификаты по ссылкам из сертификата (AIA), если сервер отдаёт неполную цепочку. Агенту нужен доступ к адресам из сертификата.
send_cert_durationПо умолчанию false. Отправлять метрики tls_issued_days и tls_issued_seconds.
timeoutТаймаут подключения в секундах (по умолчанию 10).
tagsСписок пользовательских тегов.

Общие параметры (min_collection_interval, service) описаны на странице Общие параметры интеграций. Для проверки сертификатов интервал можно увеличить до нескольких минут.

Метрики

  • tls_days_left — дней до истечения сертификата.
  • tls_seconds_left — секунд до истечения сертификата.
  • tls_issued_days — срок, на который выдан сертификат, в днях (при send_cert_duration: true).
  • tls_issued_seconds — срок, на который выдан сертификат, в секундах (при send_cert_duration: true).

Сервисные проверки

Сервисные проверки сохраняются как метрики со значением статуса: 0 — ok, 1 — warning, 2 — critical.

tls.can_connect

Метрика tls_can_connect. ok — TLS-соединение установлено, critical — нет. В режиме local_cert_path не отправляется.

tls.version

Метрика tls_version. ok — согласованная версия протокола входит в allowed_versions, critical — не входит. В режиме local_cert_path не отправляется.

tls.cert_validation

Метрика tls_cert_validation. ok — сертификат прошёл проверку, critical — цепочка доверия не построена, сертификат выдан на другое имя или не читается.

tls.cert_expiration

Метрика tls_cert_expiration.

  • ok — до истечения больше days_warning;
  • warning — осталось меньше days_warning;
  • critical — осталось меньше days_critical или сертификат уже истёк.

Проверка работоспособности

Запустите команду статуса Агента и убедитесь, что в разделе Collector есть tls без ошибок.

Пример для Linux:

sudo protoobp-agent status
sudo -u pobp-agent protoobp-agent check tls

Команды для других платформ — на странице Команды и проверка работы.

Для оповещения об истекающих сертификатах создайте правило алертинга по метрике tls_days_left или tls_cert_expiration — см. Руководство по настройке оповещений.

Устранение неполадок

  • tls.cert_validation в статусе critical для сертификата корпоративного центра сертификации. Укажите корневой сертификат в tls_ca_cert.
  • tls.cert_validation в статусе critical при подключении по IP-адресу. Укажите имя, на которое выдан сертификат, в server_hostname.
  • Ошибка неполной цепочки сертификатов. Настройте сервер, чтобы он отдавал промежуточные сертификаты, или включите fetch_intermediate_certs: true.
  • tls.version в статусе critical. Сервер согласовал устаревшую версию протокола. Отключите старые версии на сервере; если это пока невозможно, добавьте версию в allowed_versions.
  • tls.can_connect в статусе critical. Проверьте, что server:port доступен из сети Агента и на этом порту работает TLS. Для PostgreSQL и MySQL укажите start_tls.