Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Prometheus

最終更新 Markdown で表示Agent セットアップ

このチュートリアルでは、Cloudflare Workers と Durable Objects で作られたオープンソースの Cloudflare Prometheus Exporter を使い、Cloudflare のメトリクスを Prometheus に書き出す方法を説明します。

概要

Cloudflare Prometheus Exporter を設定する前に、次の点を確認してください。

  • すべての Cloudflare プラン(Free、Pro、Business、Enterprise)で使えます。Free プランのゾーンは、取得できるメトリクスが限られます。
  • Cloudflare GraphQL Analytics API と REST API を使います。
  • リクエスト、帯域、脅威、Workers、ロードバランサー、SSL 証明書、ファイアウォールイベント、ヘルスチェック、Magic Transit、Stream など、90 以上の Prometheus メトリクスを書き出します。
  • Cloudflare Worker として動き、Durable Objects でステートフルなカウンターの蓄積とバックグラウンド更新を行います。
  • 複数アカウントに対応し、アクセスできるアカウントとゾーンを自動で検出します。

前提条件

Exporter をデプロイする前に、次を用意してください。

タスク 1 — Exporter をデプロイする

Exporter は、ボタンからデプロイするか、手動でデプロイできます。

ボタンからデプロイする

次のボタンを選び、Cloudflare Workers アカウントに Exporter をデプロイします。

Deploy to Cloudflare Workers

デプロイ後、シークレットとして CLOUDFLARE_API_TOKEN を設定します。Exporter を HTTP Basic Auth で保護する場合は、任意で BASIC_AUTH_USERBASIC_AUTH_PASSWORD も設定します。

手動でデプロイする

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 Read 必須
Account > Account Analytics Read 必須
Account > Workers Scripts Read 必須
Zone > SSL and Certificates Read 任意
Zone > Firewall Services Read 任意
Zone > Load Balancers Read 任意
Account > Logs Read 任意
Account > Magic Transit Read 任意

タスク 3 — Prometheus を設定する

Prometheus の設定に、Exporter をスクレイプ対象として追加します。

scrape_configs:
  - job_name: 'cloudflare'
    scrape_interval: 60s
    scrape_timeout: 30s
    static_configs:
      - targets: ['your-worker.your-subdomain.workers.dev']

Basic Auth を使う場合

Exporter で 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 の上書き > 環境変数 > デフォルト です。ランタイムの設定 API を使うと、再デプロイせずに動的に変更できます。

環境変数は wrangler.jsonc で設定するか、wrangler secret put で設定します。

変数 デフォルト 説明
CLOUDFLARE_API_TOKEN - Cloudflare API トークン(シークレット)
SCRAPE_DELAY_SECONDS 300 メトリクス取得前の待ち時間(データの伝播を待つ)
TIME_WINDOW_SECONDS 60 クエリの時間窓
METRIC_REFRESH_INTERVAL_SECONDS 60 バックグラウンド更新の間隔
CF_ACCOUNTS - 対象にするアカウント ID のカンマ区切り一覧(デフォルト: すべて)
CF_ZONES - 対象にするゾーン ID のカンマ区切り一覧(デフォルト: すべて)
METRICS_DENYLIST - 除外するメトリクスのカンマ区切り一覧
EXCLUDE_HOST false メトリクスからホストラベルを除外する
METRICS_PATH /metrics メトリクスエンドポイントのカスタムパス
BASIC_AUTH_USER - Basic Auth のユーザー名(シークレット)
BASIC_AUTH_PASSWORD - Basic Auth のパスワード(シークレット)

設定オプションの一覧は、Exporter の README を参照してください。

エンドポイント

パス メソッド 説明
/ GET トップページ
/metrics GET Prometheus メトリクス
/health GET 稼働確認
/config GET ランタイム設定をすべて取得する
/config/:key PUT 設定の上書きを保存する(KV に永続化)
/config/:key DELETE 設定キーをデフォルトに戻す

利用できるメトリクス

Exporter は、次のカテゴリで 90 以上のメトリクスを提供します。

  • ゾーンのリクエスト — 総リクエスト数、キャッシュ済みリクエスト、ステータスコード・国・コンテンツタイプ・HTTP バージョン別のリクエストなど
  • ゾーンの帯域 — 総帯域、キャッシュ済み帯域、コンテンツタイプ別・国別の帯域
  • ゾーンの脅威 — 国別・種類別の脅威件数
  • Firewall — アクション・ソース・ルール別のファイアウォールイベント。ボット検出メトリクス
  • Workers — スクリプト別のリクエスト数、エラー数、CPU 時間、所要時間
  • ロードバランサー — プールの健全性、リクエスト数、RTT、ステアリングポリシー、オリジンの重み
  • ヘルスチェック — ヘルスチェックイベント、RTT、TTFB、TCP 接続時間、TLS ハンドシェイク時間
  • SSL 証明書 — 種類・発行者別の証明書検証ステータス
  • Cache — キャッシュヒット率と、キャッシュミス時のオリジン所要時間
  • エラー率 — 4xx/5xx の件数、エッジとオリジンのエラー率、オリジン応答時間
  • Logpush — アカウント単位・ゾーン単位の失敗ジョブ数
  • Magic Transit — トンネルの健全性、SLO ステータス、トンネルごとのトラフィック(ビットとパケット)
  • Magic Firewall — ルールごとのサンプリング済みトラフィック(ビットとパケット)
  • Network Analytics — Magic Transit、DDoS 防御、IDPS、TCP 保護、DNS 保護のトラフィック量
  • Stream — 動画再生回数、視聴時間、ライブ入力のメトリクス
  • ホスト名メトリクス — ホスト名ごとのリクエスト数、レイテンシの平均とパーセンタイル(HOST_METRICS_ALLOWLIST が必要)

型とラベルを含むメトリクスの一覧は、Exporter の README を参照してください。

Free プランのゾーンの制限

Cloudflare の Free プランのゾーンは、GraphQL Analytics API を使えません。Exporter は、この API が必要なメトリクスについて、Free プランのゾーンを自動で検出し、スキップします。

Free プランのゾーンでも、次は書き出します。

  • cloudflare_zone_certificate_validation_status(SSL 証明書)
  • cloudflare_zone_lb_origin_weight(設定済みの場合のロードバランサーの重み)

スキップしたゾーンは、cloudflare_zones_skipped_free_tier メトリクスで監視できます。

役に立ちましたか?