← Аналитика / analytics / analytics-integrations
Prometheus
В этом руководстве объясняется, как экспортировать метрики Cloudflare в Prometheus ↗ с помощью Cloudflare Prometheus Exporter ↗, инструмент с открытым исходным кодом, созданный на основе Cloudflare Workers и Durable Objects.
Обзор
Прежде чем настраивать Cloudflare Prometheus Exporter, учтите, что эта интеграция:
- Доступно для всех тарифных планов клиентов Cloudflare (Free, Pro, Business и Enterprise). У зон на плане Free доступность метрик ограничена.
- Основано на Cloudflare GraphQL Analytics API и REST API.
- Экспортирует более 90 метрик Prometheus: запросы, пропускная способность, угрозы, Workers, балансировщики нагрузки, SSL-сертификаты, события файрвола, проверки состояния, Magic Transit, Stream и другое.
- Работает как Cloudflare Worker с Durable Objects, обеспечивая накопление счётчиков с сохранением состояния и фоновое обновление.
- Поддерживает настройки с несколькими аккаунтами и автоматически обнаруживает все доступные аккаунты и зоны.
Предварительные требования
Прежде чем развернуть экспортёр, убедитесь, что вы:
- Иметь аккаунт Cloudflare.
- Есть API-токен Cloudflare с необходимыми разрешениями (см. Создание API-токена ниже).
- Иметь инстанс Prometheus для scrape-запросов к экспортёру.
Задача 1 - Развёртывание экспортёра
Развернуть экспортёр можно с помощью развёртывания в один клик или вручную.
Развёртывание в один клик
Нажмите кнопку ниже, чтобы развернуть экспортёр в своём аккаунте Cloudflare Workers:
После развёртывания настройте CLOUDFLARE_API_TOKEN в качестве секрета (secret). При необходимости настройте BASIC_AUTH_USER и BASIC_AUTH_PASSWORD для защиты экспортёра с помощью HTTP Basic Auth.
Ручное развёртывание
git clone https://github.com/cloudflare/cloudflare-prometheus-exporter.git
cd cloudflare-prometheus-exporter
bun install
wrangler secret put CLOUDFLARE_API_TOKEN
bun run deployЗадача 2 - Создание API-токена
Создайте токен Cloudflare API со следующими правами доступа:
Создание токена с предустановленными правами доступа ↗
| Разрешение | Доступ | Обязательный |
|---|---|---|
| Zone > Analytics | Чтение | Да |
| Account > Account Analytics | Чтение | Да |
| Account > Workers Scripts | Чтение | Да |
| Zone > SSL and Certificates | Чтение | Необязательно |
| Zone > Firewall Services | Чтение | Необязательно |
| Zone > Load Balancers | Чтение | Необязательно |
| Account > Logs | Чтение | Необязательно |
| Account > Magic Transit | Чтение | Необязательно |
Задача 3 - Настройка Prometheus
Добавьте экспортёр как scrape target в конфигурацию Prometheus:
scrape_configs:
- job_name: 'cloudflare'
scrape_interval: 60s
scrape_timeout: 30s
static_configs:
- targets: ['your-worker.your-subdomain.workers.dev']С Basic Auth
Если вы настроили Basic Auth на экспортёре, обновите конфигурацию Prometheus:
scrape_configs:
- job_name: 'cloudflare'
scrape_interval: 60s
scrape_timeout: 30s
basic_auth:
username: 'your-username'
password: 'your-password'
static_configs:
- targets: ['your-worker.your-subdomain.workers.dev']Конфигурация
Конфигурация применяется в следующем порядке: Переопределения KV > переменные окружения > значения по умолчанию. Для динамических изменений без повторного развёртывания можно использовать runtime config API.
Задайте переменные окружения в wrangler.jsonc или через wrangler secret put:
| Переменная | По умолчанию | Описание |
|---|---|---|
CLOUDFLARE_API_TOKEN |
- | API-токен Cloudflare (секретный) |
SCRAPE_DELAY_SECONDS |
300 |
Задержка перед получением метрик (распространение данных) |
TIME_WINDOW_SECONDS |
60 |
Временное окно запроса |
METRIC_REFRESH_INTERVAL_SECONDS |
60 |
Интервал фонового обновления |
CF_ACCOUNTS |
- | ID аккаунтов для включения, через запятую (по умолчанию: all) |
CF_ZONES |
- | ID зон для включения, через запятую (по умолчанию: all) |
METRICS_DENYLIST |
- | Список метрик для исключения, через запятую |
EXCLUDE_HOST |
false |
Исключить метки хоста из метрик |
METRICS_PATH |
/metrics |
Пользовательский путь для конечной точки метрик |
BASIC_AUTH_USER |
- | Имя пользователя для Basic Auth (секретный) |
BASIC_AUTH_PASSWORD |
- | Пароль для Basic Auth (секретный) |
Полный список параметров конфигурации см. в README экспортёра ↗.
Конечные точки
| Путь | Метод | Описание |
|---|---|---|
/ |
GET | Целевая страница |
/metrics |
GET | Метрики Prometheus |
/health |
GET | Health check |
/config |
GET | Получение всей конфигурации runtime |
/config/:key |
PUT | Задайте переопределение конфигурации (сохраняется в KV) |
/config/:key |
DELETE | Сброс ключа конфигурации до значения по умолчанию |
Доступные метрики
Экспортёр предоставляет более 90 метрик в следующих категориях:
- Запросы зоны - общее количество запросов, количество запросов из кеша, запросы по коду состояния, стране, типу контента, версии HTTP и другим параметрам.
- Пропускная способность зоны - общий трафик, трафик из кеша, трафик по типу контента и по стране.
- Угрозы зоны - количество угроз по странам и типам.
- Firewall - события firewall по действию, источнику и правилу. Метрики обнаружения ботов.
- Workers - количество запросов, количество ошибок, время CPU и длительность по скриптам.
- Балансировщики нагрузки - статус пулов, количество запросов, RTT, политика маршрутизации и веса origin-серверов.
- Проверки работоспособности - события проверки работоспособности, RTT, TTFB, время установления TCP-соединения и время TLS handshake.
- SSL-сертификаты - статус проверки сертификата по типу и издателю.
- Кеш - коэффициент попаданий в кеш и время отклика origin-сервера при промахе кеша.
- Частота ошибок - количество ошибок 4xx/5xx, доля ошибок на периферийной сети и origin-сервере, время отклика origin-сервера.
- Logpush - количество неудачных заданий на уровне аккаунта и зоны.
- Magic Transit - состояние туннеля, статус SLO и трафик по отдельным туннелям (в битах и пакетах).
- Magic Firewall - выборочный трафик по отдельным правилам (в битах и пакетах).
- Network Analytics - объём трафика в Magic Transit, DDoS defense, IDPS, TCP protection и DNS protection.
- Stream - количество воспроизведений видео, время просмотра, метрики живых трансляций.
- Метрики по хостам - количество запросов, средняя задержка и процентили по каждому хосту (требуется
HOST_METRICS_ALLOWLIST).
Полный список метрик с типами и метками см. в README экспортёра ↗.
Ограничения зон в тарифе Free
Зоны на тарифе Cloudflare Free не имеют доступа к GraphQL Analytics API. Экспортёр автоматически определяет такие зоны на бесплатном тарифе и пропускает для них метрики, которые требуют этого API.
Зоны в тарифе Free всё равно экспортируют:
cloudflare_zone_certificate_validation_status(SSL-сертификаты)cloudflare_zone_lb_origin_weight(веса load balancer, если они настроены)
Пропущенные зоны можно отслеживать с помощью cloudflare_zones_skipped_free_tier метрику.