Cloudflare Logpush は、ログを R2 へ直接送信できます。自動セットアップ(Cloudflare が R2 バケットを作成します)か、自分で R2 バケットを用意するカスタムセットアップがあります。自動セットアップは、バケットをすぐ用意したい場合やテスト向けです。設定を細かく制御したい場合は、カスタムセットアップを使います。
R2 の詳細は、Cloudflare R2 のドキュメントを参照してください。
Logpush ジョブに自動セットアップを使う場合は、次の手順に従います。
-
Cloudflare ダッシュボードで、アカウントまたはドメイン(ゾーンとも呼ばれます)の Logpush ページを開きます。
アカウントの場合: Logpush を開く ↗
ドメイン(ゾーン)の場合: Logpush を開く ↗
-
選んだ範囲に応じて、それぞれ アカウントスコープのデータセット と ゾーンスコープのデータセット を利用できます。
-
Create a Logpush job を選択します。
-
送信先として R2 Object Storage - automatic を選びます。
-
使うデータセットとストレージリージョンを選びます。
-
Create Logpush job を選んで完了します。
これでセットアップは完了です。設定を細かく制御したい場合は、カスタムセットアップを検討してください。
Cloudflare Logpush は、Cloudflare ダッシュボードまたは API から、ログを R2 へ直接送信できます。
始める前に、次を用意します。
-
R2 バケットを作成し、R2 API トークンを設定します。
-
R2 の UI を開き、Create bucket を選びます。
-
Manage R2 API Tokens を選びます。
-
Create API token を選びます。
-
Permission で、トークンに Edit 権限を選びます。
-
Secret Access Key と Access Key ID をコピーします。Logpush ジョブの設定時に使います。
-
-
次の権限があることを確認します。
- R2 write、Logshare Edit。
-
Cloudflare ダッシュボードで、アカウントまたはドメイン(ゾーンとも呼ばれます)の Logpush ページを開きます。
アカウントの場合: Logpush を開く ↗
ドメイン(ゾーン)の場合: Logpush を開く ↗
-
選んだ範囲に応じて、それぞれ アカウントスコープのデータセット と ゾーンスコープのデータセット を利用できます。
-
Create a Logpush job を選択します。
-
Select a destination で R2 Object Storage を選びます。
-
次の送信先の詳細を入力または選択します。
- Bucket - R2 バケット名
- Path - バケット内の場所。例:
cloudflare-logs/http_requests/example.com - Organize logs into daily subfolders(推奨)
- Authentication で R2 Access Key ID と R2 Secret Access Key を追加します。詳細は Manage R2 API tokens ↗ を参照してください。
送信先の詳細を入力したら、Continue を選びます。
-
ストレージサービスへ送るデータセットを選びます。
-
次のステップで Logpush ジョブを設定します。
- Job name を入力します。
- If logs match では、ログに含めるイベントや除外するイベントを選べます。詳細は フィルター を参照してください。このオプションがないデータセットもあります。
- Send the following fields では、すべてのログを送信先へ送るか、送るログを選ぶかを選べます。
-
Advanced Options では、次を設定できます。
- ログ内のタイムスタンプフィールドの形式(
RFC3339(デフォルト)、Unix、またはUnixNano)。 - ログの サンプリングレート を選ぶか、ランダムにサンプリングした割合のログを送信します。
CVE-2021-44228のリダクションを有効にします。このオプションは、${の出現をすべてx{に置き換えます。
- ログ内のタイムスタンプフィールドの形式(
-
Logpush ジョブの設定が終わったら Submit を選びます。
ジョブを作成するには、Logpush jobs エンドポイントへ POST リクエストを送り、次のフィールドを指定します。
- name(任意)- ジョブ名にはドメイン名を使います。
- destination_conf - バケットパス、アカウント ID、R2 access key ID、R2 secret access key からなるログ送信先です。
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 configuration options を参照してください。
cURL を使ったリクエストの例です。
Required API token permissions
At least one of the following token permissions is required:Logs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"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
}'レスポンス:
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"dataset": "http_requests",
"kind": "",
"enabled": true,
"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>",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}ジョブの更新(有効化と無効化を含む)は cURL で Logpush を管理する を参照してください。
ログが R2 に保存されたら、次の方法でダウンロードできます。
-
Cloudflare ダッシュボードで R2 ページを開きます。
Overview を開く ↗ -
バケットを選びます。
-
バケットのページで、対象のログファイルを探します。
-
ファイル横の ... アイコンを選んでダウンロードします。
Cloudflare R2 は S3 互換なので、AWS CLI で操作できます。
- AWS CLI に R2 の認証情報を設定します。
aws s3 cpコマンドでログファイルをダウンロードします。
aws s3 cp s3://<BUCKET-NAME>/<PATH-TO-LOG-FILE> <LOCAL-DESTINATION><bucket-name>、<path-to-log-file>、<local-destination> を実際の値に置き換えます。
ダウンロードしたファイルは gzip 圧縮されているため、テキストエディターで開く前に展開してください。