Blackbox Exporter#

Blackbox Exporter — это инструмент мониторинга доступности и работоспособности сетевых сервисов (endpoints) по протоколам HTTP/HTTPS, DNS, TCP, ICMP и gRPC. Он является частью экосистемы Prometheus (подробнее про Prometheus в разделе «Инструменты Prometheus») и позволяет собирать метрики, которые могут быть использованы для анализа состояния внешних и внутренних сервисов. Blackbox Exporter работает, отправляя запросы к целевым сервисам и анализируя их ответы, что позволяет выявлять проблемы с доступностью, временем ответа и корректностью работы.

Важно

В DropApp целевой инструмент отслеживания и анализа метрик – VictoriaMetrics-cluster (подробнее про VictoriaMetrics-cluster в разделе «Инструменты VictoriaMetrics» -> «VictoriaMetrics-cluster»). Сценарий настройки интеграции Blackbox Exporter с VictoriaMetrics-cluster приведен ниже в разделе «Сценарий развертывания».

Функциональность#

  1. Мониторинг доступности сервисов: проверяет доступность сервисов по протоколам HTTP/HTTPS, DNS, TCP, ICMP, gRPC.

  2. Анализ времени ответа: измеряет время, затраченное на получение ответа от целевого сервиса.

  3. Проверка SSL/TLS сертификатов: валидирует срок действия и корректность SSL/TLS сертификатов.

  4. Настраиваемые параметры: предоставляет возможность настройки параметров проверки, таких как тайм-ауты, количество попыток и ожидаемые коды ответа.

  5. Интеграция с Prometheus: предоставляет метрики для дальнейшего анализа в Prometheus и визуализации в Grafana (подробнее про Grafana в разделе «Инструменты Grafana»).

Базовая аутентификация и TLS#

Blackbox Exporter поддерживает протокол TLS и функцию базовой аутентификации для лучшего контроля endpoints HTTP. Для настройки данной функции используется общий формат файла веб-конфигурации для сервисов, экспортирующих метрики (по умолчанию web-config.yml). Для указания файла веб-конфигурации используйте флаг --web.config.file.

Пример файла web-config.yml:

# Пример конфигурации TLS и базовой аутентификации.
#
# Также необходимы действующий TLS-сертификат и файл ключа данного сертификата.
tls_server_config:
  cert_file: <server.crt>
  key_file: <server.key>

# Для подключения требуются имена пользователей и пароли.
basic_auth_users:
  user1: <hash1>
  user2: <hash2>

Где:

  • <server.crt> – TLS-сертификат;

  • <server.key> – файл ключа сертификата;

  • user1, user2 - имена пользователей, для которых указаны захешированные пароли <hash1> и <hash2> соответственно.

Внимание

Настройки TLS и базовой аутентификации влияют на все endpoints HTTP: /metrics, /probe, веб-интерфейс.

Сценарий развертывания#

Blackbox Exporter может быть развернут как docker-контейнер или через Helm-чарт.

Для развертывания Blackbox Exporter выполните следующие шаги:

  1. Установите Blackbox Exporter:

    • с помощью Helm командой:

    helm install blackbox-exporter prometheus-community/prometheus-blackbox-exporter
    
    • с использованием docker-образа:

    docker run --rm \<image-registry>/blackbox-exporter:v0.25.0
      -p 9115/tcp \
      --name blackbox_exporter \
      -v $(pwd):/config \
      quay.io/prometheus/blackbox-exporter:latest --config.file=/config/blackbox.yml
    

    Где <image-registry> – фактический реестр (каталог) с образами DropApp.

  2. Настройте конфигурацию:

    • Создайте конфигурационный файл blackbox.yml, в котором определите модули для проверки различных типов сервисов.

    Пример конфигурации для HTTP-проверки:

    modules:
       http_2xx:
         prober: http
         http:
           preferred_ip_protocol: "ip4"
           valid_status_codes: [200]
    
  3. Настройте интеграцию с VictoriaMetrics-cluster с помощью vmagent.

    Пример настройки vmagent в victoriametrics.yaml:

    scrape_configs:
      - job_name: 'blackbox'
        metrics_path: /probe
        params:
          module: [http_2xx]
        static_configs:
          - targets:
            - http://example.com
            - http://another-example.com
        relabel_configs:
          - source_labels: [address]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: address
            replacement: blackbox-exporter:9115
        remote_write:
          url: "http://vminsert.example.com:8428/api/v1/write"
    

    Где vminsert.example.com – адрес службы vminsert VictoriaMetrics-cluster.

  4. Запустите Blackbox Exporter командой:

    ./blackbox_exporter --config.file=blackbox.yml
    
  5. Проверьте работоспособность, перейдя по ссылке http://localhost:9115/probe?target=<site-name>&module=http_2xx, где <site-name> - адрес веб-ресурса, например ya.ru. В ответ вернутся показатели HTTP-запроса, где probe_success будет указывать на успешность запроса.

    Примечание

    Добавление параметра debug=true вернет отладочную информацию для запроса.

    Endpoint для просмотра показателей работы Blackbox Exporterhttp://localhost:9115/metrics.

Сценарии использования#

Мониторинг доступности веб-ресурса#

  1. Настройте модуль HTTP:

    • В конфигурационном файле blackbox.yml определите модуль для проверки HTTP-ответа с кодом 200:

    modules:
      http_2xx:
        prober: http
        http:
        valid_status_codes: [200]
    
  2. Добавьте настройки в конфигурацию VictoriaMetrics-cluster для проверки доступности веб-ресурса:

    scrape_configs:
      - job_name: 'blackbox-http'
        metrics_path: /probe
        params:
          module: [http_2xx]
        static_configs:
          - targets:
            - http://example.com
        relabel_configs:
          - source_labels: [address]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: address
            replacement: blackbox-exporter:9115
        remote_write:
          url: "http://vminsert.example.com:8428/api/v1/write"
    
  3. Проанализируйте время ответа и доступность веб-ресурса с помощью VictoriaMetrics-cluster и Grafana.

Проверка срока действия SSL/TLS сертификата#

  1. В конфигурационном файле blackbox.yml определите модуль для проверки SSL/TLS сертификата:

    modules:
      tls_ssl_expiry:
        prober: tcp
        tcp:
          tls: true
          tls_config:
            insecure_skip_verify: false
    
  2. Добавьте настройки в конфигурацию VictoriaMetrics-cluster для проверки SSL/TLS сертификата:

    scrape_configs:
      - job_name: 'blackbox-tls'
        metrics_path: /probe
        params:
          module: [tls_ssl_expiry]
        static_configs:
          - targets:
            - example.com:443
        relabel_configs:
          - source_labels: [address]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: address
            replacement: blackbox-exporter:9115
        remote_write:
          url: "http://vminsert.example.com:8428/api/v1/write"
    
  3. Проанализируйте срок действия SSL/TLS сертификата и настройки уведомлений о приближении истечения срока действия с помощью VictoriaMetrics-cluster и Grafana.

Проверка доступности базы данных#

  1. Определите модуль для проверки доступности базы данных через TCP в конфигурационном файле blackbox.yml:

    modules:
      db_tcp_check:
        prober: tcp
        tcp:
          preferred_ip_protocol: "ip4"
    
  2. Добавьте настройки в конфигурацию VictoriaMetrics-cluster для проверки доступности базы данных:

    scrape_configs:
      - job_name: 'blackbox-db-tcp'
        metrics_path: /probe
        params:
          module: [db_tcp_check]
        static_configs:
          - targets:
            - db.example.com:5432
        relabel_configs:
          - source_labels: [address]
            target_label: __param_target
          - source_labels: [__param_target]
            target_label: instance
          - target_label: address
            replacement: blackbox-exporter:9115
        remote_write:
          url: "http://vminsert.example.com:8428/api/v1/write"
    
  3. Проанализируйте доступность базы данных и время ответа с помощью VictoriaMetrics-cluster и Grafana.