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 приведен ниже в разделе «Сценарий развертывания».
Функциональность#
Мониторинг доступности сервисов: проверяет доступность сервисов по протоколам HTTP/HTTPS, DNS, TCP, ICMP, gRPC.
Анализ времени ответа: измеряет время, затраченное на получение ответа от целевого сервиса.
Проверка SSL/TLS сертификатов: валидирует срок действия и корректность SSL/TLS сертификатов.
Настраиваемые параметры: предоставляет возможность настройки параметров проверки, таких как тайм-ауты, количество попыток и ожидаемые коды ответа.
Интеграция с 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 выполните следующие шаги:
Установите 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.Настройте конфигурацию:
Создайте конфигурационный файл
blackbox.yml, в котором определите модули для проверки различных типов сервисов.
Пример конфигурации для HTTP-проверки:
modules: http_2xx: prober: http http: preferred_ip_protocol: "ip4" valid_status_codes: [200]Настройте интеграцию с 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– адрес службыvminsertVictoriaMetrics-cluster.Запустите Blackbox Exporter командой:
./blackbox_exporter --config.file=blackbox.ymlПроверьте работоспособность, перейдя по ссылке
http://localhost:9115/probe?target=<site-name>&module=http_2xx, где<site-name>- адрес веб-ресурса, напримерya.ru. В ответ вернутся показатели HTTP-запроса, гдеprobe_successбудет указывать на успешность запроса.Примечание
Добавление параметра
debug=trueвернет отладочную информацию для запроса.Endpoint для просмотра показателей работы Blackbox Exporter –
http://localhost:9115/metrics.
Сценарии использования#
Мониторинг доступности веб-ресурса#
Настройте модуль HTTP:
В конфигурационном файле
blackbox.ymlопределите модуль для проверки HTTP-ответа с кодом 200:
modules: http_2xx: prober: http http: valid_status_codes: [200]Добавьте настройки в конфигурацию 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"Проанализируйте время ответа и доступность веб-ресурса с помощью VictoriaMetrics-cluster и Grafana.
Проверка срока действия SSL/TLS сертификата#
В конфигурационном файле
blackbox.ymlопределите модуль для проверки SSL/TLS сертификата:modules: tls_ssl_expiry: prober: tcp tcp: tls: true tls_config: insecure_skip_verify: falseДобавьте настройки в конфигурацию 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"Проанализируйте срок действия SSL/TLS сертификата и настройки уведомлений о приближении истечения срока действия с помощью VictoriaMetrics-cluster и Grafana.
Проверка доступности базы данных#
Определите модуль для проверки доступности базы данных через TCP в конфигурационном файле
blackbox.yml:modules: db_tcp_check: prober: tcp tcp: preferred_ip_protocol: "ip4"Добавьте настройки в конфигурацию 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"Проанализируйте доступность базы данных и время ответа с помощью VictoriaMetrics-cluster и Grafana.