コンテンツにスキップ

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アクセスキーIDとR2シークレットアクセスキーを追加します。詳細については、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 .