コンテンツにスキップ

Cloudflare R2の有効化

Cloudflare Logpushは、CloudflareダッシュボードまたはAPIを介して直接R2にログをプッシュすることをサポートしています。

R2に関する詳細は、Cloudflare R2のドキュメントを参照してください。

始める前に:

  • R2バケットを作成し、R2 APIトークンを設定します。

    1. R2 UIに移動 > バケットを作成

    2. R2 APIトークンを管理を選択します。

    3. APIトークンを作成を選択します。

    4. 権限の下で、トークンの編集権限を選択します。

    5. シークレットアクセスキーとアクセスキーIDをコピーします。これらはLogpushジョブを設定する際に必要です。

  • 次の権限を持っていることを確認してください:

    • R2書き込み、Logshare編集。

Cloudflareダッシュボードを介して管理

  1. Log in to the Cloudflare dashboard.

  2. Select the Enterprise account or domain (also known as zone) you want to use with Logpush. Depending on your choice, you have access to account-scoped datasets and zone-scoped datasets, respectively.

  3. Go to Analytics & Logs > Logpush.

  4. Select Create a Logpush job.

  1. 宛先を選択で、R2オブジェクトストレージを選択します。

  2. 次の宛先の詳細を入力または選択します:

    • バケット - R2バケット名
    • パス - バケットの場所、例えば、cloudflare-logs/http_requests/example.com
    • ログを日次のサブフォルダに整理する(推奨)
    • 認証の下に、R2アクセスキーIDR2シークレットアクセスキーを追加します。詳細については、R2 APIトークンの管理を参照してください。

宛先の詳細を入力し終えたら、続行を選択します。

  1. ストレージサービスにプッシュするデータセットを選択します。

  2. 次のステップでは、Logpushジョブを構成する必要があります:

    • ジョブ名を入力します。
    • ログが一致する場合の下で、ログに含めるイベントや除外するイベントを選択できます。詳細については、フィルターを参照してください。すべてのデータセットにこのオプションが利用できるわけではありません。
    • 次のフィールドを送信で、すべてのログをストレージ宛先にプッシュするか、プッシュしたいログを選択的に選ぶことができます。
  3. 詳細オプションでは、次のことができます:

    • ログ内のタイムスタンプフィールドの形式を選択します(RFC3339(デフォルト)、Unix、またはUnixNano)。
    • ログのサンプリングレートを選択するか、ランダムにサンプリングされたログのパーセンテージをプッシュします。
    • CVE-2021-44228のためのレダクションを有効にします。このオプションは、${のすべての出現をx{に置き換えます。
  4. Logpushジョブの構成が完了したら、送信を選択します。

APIを介して管理

ジョブを作成するには、次のフィールドを持つPOSTリクエストをLogpushジョブエンドポイントに送信します:

  • name(オプション) - ドメイン名をジョブ名として使用します。
  • destination_conf - バケットパス、アカウントID、R2アクセスキーID、R2シークレットアクセスキーからなるログ宛先。
Terminal window
r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>
  • dataset - 受信したいログのカテゴリ。サポートされているデータセットの完全なリストについては、ログフィールドを参照してください。
  • output_options(オプション) - フィールド、サンプリングレート、タイムスタンプ形式を構成するには、API構成オプションを参照してください。

cURLを使用した例のリクエスト:

Terminal window
curl -X POST 'https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logpush/jobs' \
-H 'X-Auth-Key: <API_KEY>' \
-H 'X-Auth-Email: <EMAIL>' \
-H 'Content-Type: application/json' \
-d '{
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>",
"dataset": "http_requests",
"enabled": true
}'| jq .