Skip to content
← Все статьи

Prometheus blackbox-мониторинг сайтов и API

Коротко. blackbox_exporter — это отдельный сервис Prometheus, который проверяет эндпоинты «снаружи»: делает HTTP-запрос, TCP-коннект, DNS-резолв или ICMP-Ping инструмент и отдаёт метрики probe_success, probe_duration_seconds и probe_http_status_code. Prometheus периодически скрейпит экспортёр, передавая ему target через relabeling, а Alertmanager шлёт уведомления при падении. Это идеальный инструмент для проверки доступности без агента на целевом хосте.

Зачем нужен blackbox_exporter

Обычные экспортёры (node_exporter, cAdvisor) смотрят на систему «изнутри». Blackbox смотрит «снаружи» — как пользователь. Он отвечает на вопрос «отвечает ли мой сайт» без установки агента на целевую машину. Один экспортёр обслуживает множество таргетов — список приходит из Prometheus при каждом скрейпе.

  • http_2xx — проверка HTTP/SSL/TLS проверку, кода ответа, редиректов, срока SSL;
  • tcp_connect — доступность TCP-порта (БД, очередь, SMTP);
  • dns — резолв записи и валидация ответа;
  • icmp — пинг (требует прав на raw-сокеты).

Конфиг blackbox_exporter

Модули описываются в blackbox.yml. Каждый модуль — это пресет проверки: протокол, таймаут, ожидаемые коды, версия IP.

modules:
  http_2xx:
    prober: http
    timeout: 5s
    http:
      valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
      valid_status_codes: [200, 301, 302]
      method: GET
      follow_redirects: true
      fail_if_ssl: false
      fail_if_not_ssl: true
      preferred_ip_protocol: "ip4"
  tcp_connect:
    prober: tcp
    timeout: 5s
  dns_example:
    prober: dns
    dns:
      query_name: "example.com"
      query_type: "A"

Джоб в prometheus.yml

Ключевой трюк — relabeling: адрес таргета подменяется на адрес экспортёра, а реальный URL передаётся в параметре target. Так один экспортёр проверяет десятки эндпоинтов.

scrape_configs:
  - job_name: 'blackbox-http'
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
      - targets:
          - https://example.com
          - https://api.example.com/health
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: blackbox-exporter:9115

Ключевые метрики

МетрикаЧто показываетПример алерта
probe_success1 = ок, 0 = провалprobe_success == 0
probe_duration_secondsОбщее время пробы> 2s в течение 5 мин
probe_http_status_codeHTTP-код ответа>= 500
probe_ssl_earliest_cert_expiryСрок действия SSL< 14 дней

Правило алерта

Алерт на падение и на скорое истечение сертификата:

groups:
  - name: blackbox
    rules:
      - alert: EndpointDown
        expr: probe_success == 0
        for: 3m
        labels:
          severity: critical
        annotations:
          summary: "Эндпоинт {{ $labels.instance }} недоступен"
      - alert: SslCertExpiringSoon
        expr: probe_ssl_earliest_cert_expiry - time() < 14 * 24 * 3600
        for: 1h
        labels:
          severity: warning
        annotations:
          summary: "SSL на {{ $labels.instance }} истекает менее чем через 14 дней"
Параметр for: 3m критичен: без него любая одиночная сетевая ошибка превратится в инцидент и разбудит дежурного среди ночи зря.

Слепое пятно и внешний слой

blackbox_exporter запускается в вашей инфраструктуре. Если упадёт сеть или дата-центр, где он живёт, — упадёт и проверка, и вы не получите алерт о реальном падении сайта. Это классическое слепое пятно self-hosted мониторинга.

enterno.io закрывает его как внешний synthetic-мониторинг: проверки HTTP / SSL / ping / DNS идут из независимых регионов RU / EU / US. Бесплатно — 10 мониторов с интервалом 5 минут, на платных тарифах — 1 минута и 30 секунд. Это дополнение к Prometheus, а не замена: внутренний blackbox даёт детальную диагностику, внешний чекер — честный взгляд снаружи и резервный канал алертов в Telegram, Slack, email, webhook.

FAQ

Чем blackbox_exporter отличается от node_exporter?

node_exporter отдаёт метрики системы изнутри (CPU, память, диск). blackbox_exporter проверяет эндпоинты снаружи, эмулируя пользователя. Это разные слои мониторинга.

Можно ли мониторить API-эндпоинт с проверкой тела ответа?

Да, в модуле http можно задать fail_if_body_not_matches_regexp, чтобы алерт срабатывал, если в ответе нет ожидаемой строки.

Нужен ли отдельный экспортёр на каждый сайт?

Нет. Один blackbox_exporter обслуживает любое число таргетов — список приходит из prometheus.yml через relabeling.

Как добавить внешнюю проверку рядом с blackbox?

Поднимите внешний synthetic-монитор на enterno.io и тяните метрики через API. Получите взгляд снаружи без своей сетевой зависимости.

Хотите взгляд снаружи? Создайте монитор на enterno.io/monitors и подключите его к Prometheus/Grafana через API v4. Дальше по теме: мониторинг как код, health-check эндпоинты, мониторинг аптайма API.

Проверьте ваш сайт прямо сейчас

Проверить свой сайт →
Другие статьи: DevOps
DevOps
Мониторинг RAG-пайплайнов
22.06.2026 · 31 просм.
DevOps
Управление логами: лучшие практики для продакшена
16.03.2026 · 142 просм.
DevOps
Стратегии деплоя без простоя
16.03.2026 · 124 просм.
DevOps
Мониторинг доступности в Kubernetes
18.06.2026 · 30 просм.