Как настроить мониторинг доступности сайтов через Prometheus Blackbox Exporter и визуализировать результаты в Grafana?
Мониторинг доступности сайтов с помощью Prometheus Blackbox Exporter и Grafana — это мощная связка для отслеживания uptime, времени отклика и SSL-сертификатов. Рассмотрим пошаговую настройку.
## 1. Установка Blackbox Exporter
Скачайте актуальный релиз с GitHub:
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.24.0/blackbox_exporter-0.24.0.linux-amd64.tar.gz
tar xvf blackbox_exporter-*.tar.gz
cd blackbox_exporter-*/
Создайте конфигурационный файл `blackbox.yml`:
yaml
modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_http_versions: [«HTTP/1.1», «HTTP/2.0»]
valid_status_codes: []
method: GET
follow_redirects: true
preferred_ip_protocol: «ip4″
icmp_check:
prober: icmp
timeout: 5s
Запустите экспортер:
./blackbox_exporter —config.file=blackbox.yml
По умолчанию он слушает на порту `9115`.
## 2. Настройка Prometheus
Добавьте в `prometheus.yml` новый job:
yaml
scrape_configs:
— job_name: ‘blackbox’
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
— targets:
— https://example.com
— https://mysite.ru
— https://api.service.com
relabel_configs:
— source_labels: [__address__]
target_label: __param_target
— source_labels: [__param_target]
target_label: instance
— target_label: __address__
replacement: localhost:9115
Перезапустите Prometheus. Убедитесь, что метрики появились на `http://localhost:9090`.
## 3. Ключевые метрики Blackbox Exporter
— `probe_success` — 1 если сайт доступен, 0 если нет
— `probe_duration_seconds` — время отклика
— `probe_http_status_code` — HTTP-код ответа
— `probe_ssl_earliest_cert_expiry` — дата истечения SSL-сертификата
— `probe_dns_lookup_time_seconds` — время DNS-резолвинга
## 4. Настройка Grafana
1. Добавьте Prometheus как источник данных в Grafana (Configuration → Data Sources).
2. Создайте новый дашборд или импортируйте готовый — ID `7587` (Blackbox Exporter dashboard) с сайта grafana.com.
3. Добавьте панели с ключевыми запросами:
**Статус доступности:**
promql
probe_success{job=»blackbox»}
**Время отклика:**
promql
probe_duration_seconds{job=»blackbox»}
**Дней до истечения SSL:**
promql
(probe_ssl_earliest_cert_expiry — time()) / 86400
## 5. Настройка алертов
В Prometheus добавьте правила алертинга:
yaml
groups:
— name: blackbox_alerts
rules:
— alert: SiteDown
expr: probe_success == 0
for: 2m
labels:
severity: critical
annotations:
summary: «Сайт {{ $labels.instance }} недоступен»
— alert: SSLCertExpiringSoon
expr: (probe_ssl_earliest_cert_expiry — time()) / 86400 < 30
labels:
severity: warning
annotations:
summary: "SSL сертификат истекает через {{ $value }} дней"
Такая конфигурация даёт полноценный мониторинг доступности с уведомлениями и красивой визуализацией.
