INTEGRITY Документация

Prometheus

В этом руководстве объясняется, как экспортировать метрики Cloudflare в Prometheus ↗ с помощью Cloudflare Prometheus Exporter ↗, инструмент с открытым исходным кодом, созданный на основе Cloudflare Workers и Durable Objects.

Обзор

Прежде чем настраивать Cloudflare Prometheus Exporter, учтите, что эта интеграция:

Предварительные требования

Прежде чем развернуть экспортёр, убедитесь, что вы:

Задача 1 - Развёртывание экспортёра

Развернуть экспортёр можно с помощью развёртывания в один клик или вручную.

Развёртывание в один клик

Нажмите кнопку ниже, чтобы развернуть экспортёр в своём аккаунте Cloudflare Workers:

Deploy to 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 метрик в следующих категориях:

Полный список метрик с типами и метками см. в README экспортёра ↗.

Ограничения зон в тарифе Free

Зоны на тарифе Cloudflare Free не имеют доступа к GraphQL Analytics API. Экспортёр автоматически определяет такие зоны на бесплатном тарифе и пропускает для них метрики, которые требуют этого API.

Зоны в тарифе Free всё равно экспортируют:

Пропущенные зоны можно отслеживать с помощью cloudflare_zones_skipped_free_tier метрику.