Утилита Prometheus Blackbox Exporter#

Blackbox Exporter — это экспортер Prometheus, предназначенный для мониторинга сетевых сервисов (endpoints) посредством «черного ящика» (black-box probing). Поддерживает следующие протоколы:

  • HTTP (включая HTTPS и HTTP/2);

  • DNS;

  • TCP;

  • ICMP (требует привилегий);

  • TLS (проверка сертификатов без отправки данных приложения);

  • gRPC (на основе HTTP/2 и протобафов).

Позволяет собирать метрики, которые могут быть использованы для анализа состояния внешних и внутренних сервисов. Blackbox Exporter работает, отправляя запросы к целевым сервисам и анализируя их ответы, что позволяет выявлять проблемы с доступностью, временем ответа и корректностью работы.

Установка#

Для установки Blackbox Exporter выполните команду:

dnf install blackbox_exporter

Сборка и запуск#

Blackbox Exporter можно собрать и запустить с указанием конфигурационного файла:

blackbox_exporter --config.file=blackbox.yml

Или с использованием Docker-образа:

podman run --rm \
  -p 9115/tcp \
  --name blackbox_exporter \
  -v $(pwd):/config \
  quay.io/prometheus/blackbox-exporter:latest --config.file=/config/blackbox.yml

Примечание

Для ICMP-проб требуется дополнительная настройка привилегий. В Linux это может быть достигнуто с помощью CAP_NET_RAW или запуском контейнера в привилегированном режиме (--privileged).

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

Blackbox Exporter настраивается через YAML-файл (по умолчанию blackbox.yml). Пример конфигурации:

modules:
  http_2xx:
    prober: http
    timeout: 5s
    http:
      method: GET
  icmp:
    prober: icmp
    timeout: 5s

Использование#

Blackbox Exporter предоставляет HTTP endpoint /probe, который принимает два обязательных параметра:

  • target — адрес цели для проверки (например, https://example.com);

  • module — имя модуля из конфигурационного файла, определяющего тип пробы.

Пример запроса:

curl "http://localhost:9115/probe?target=example.com&module=http_2xx"

Blackbox Exporter предоставляет метрики в формате текстового протокола Prometheus по адресу http://localhost:9115/metrics.

Пример вывода:

probe_success 1
probe_duration_seconds 0.123

Интеграция с Prometheus#

Чтобы Prometheus мог использовать Blackbox Exporter для пробы внешних сервисов, необходимо настроить задание с metrics_path: /probe и передавать параметры через params.

Пример конфигурации prometheus.yml:

scrape_configs:
  - job_name: 'blackbox'
    metrics_path: /probe
    params:
      module: [http_2xx]  # Используется из blackbox.yml
    static_configs:
      - targets:
        - http://prometheus.io    # http
        - https://prometheus.io   # https
        - http://example.com:8080 # http по порту 8080
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9115
  - job_name: 'blackbox_exporter'
    static_configs:
      - targets: ['127.0.0.1:9115']

Метрики Blackbox Exporter#

Blackbox Exporter имеет префикс probe_ предоставляет следующие основные метрики:

  • probe_success — индикатор успешности пробы (1 - успех, 0 - сбой);

  • probe_duration_seconds — длительность пробы в секундах;

  • Дополнительные метрики в зависимости от типа пробы (например, probe_http_status_code, probe_dns_lookup_time_seconds, probe_icmp_rtt_seconds и т.д.).

Дополнительная информация#

Дополнительную информацию можно получить, выполнив команду:

blackbox_exporter --help