ログエンジン
ログエンジンは、ログをR2に保存し、直接クエリを実行する機能を提供します。
- R2へのログプッシュジョブを設定します。
- 少なくともR2の読み取り権限を持つR2アクセスキーを作成します。
- Logshareの読み取り権限があることを確認します。
- あるいは、次の権限を持つCloudflare APIトークンを作成します:
- アカウントスコープ
- ログの読み取り権限
APIを使用して、時間範囲またはRayIDによってログをクエリし、ダウンロードできます。
すべてのAPI呼び出しには、次のヘッダーが必要です:
X-Auth-Email- ドメインに関連付けられたCloudflareアカウントのメールアドレスX-Auth-Key- Cloudflare APIキー
また、ログ編集権限を持つAPIトークンも認証に使用できます:
Authorization: Bearer <API_TOKEN>
必要な認証ヘッダーに加えて、APIがR2バケットに保存されたログにアクセスするために必要なヘッダーは次のとおりです。
R2-access-key-id (必須) - R2アクセスキーID
R2-secret-access-key (必須) - R2シークレットアクセスキー
提供されたクエリパラメータに一致するログを含む関連するR2オブジェクトをリストします。エンドポイントはGET /accounts/{accountId}/logs/listです。
-
start(必須) 文字列 (TimestampRFC3339) - RFC 3339形式の開始時間、例:start=2022-06-06T16:00:00Z。 -
end(必須) 文字列 (TimestampRFC3339) - RFC 3339形式の終了時間、例:end=2022-06-06T16:00:00Z。 -
bucket(必須) 文字列 (Bucket) - R2バケット名、例:bucket=cloudflare-logs。 -
prefix文字列 (Prefix) - ログが保存されているR2バケットのプレフィックス、例:prefix=http_requests/example.com/{DATE}。 -
limit数値 (Limit) - 戻す最大結果数、例:limit=100。
提供されたクエリパラメータに一致するR2に保存されたログをストリーミングします。エンドポイントはGET /accounts/{accountId}/logs/retrieveです。
-
start(必須) 文字列 (TimestampRFC3339) - RFC 3339形式の開始時間、例:start=2022-06-06T16:00:00Z -
end(必須) 文字列 (TimestampRFC3339) - RFC 3339形式の終了時間、例:end=2022-06-06T16:00:00Z -
bucket(必須) 文字列 (Bucket) - R2バケット名、例:bucket=cloudflare-logs -
prefix文字列 (Prefix) - ログが保存されているR2バケットのプレフィックス、例:prefix=http_requests/example.com/{DATE}
curl -s -g -X GET 'https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/logs/retrieve?start=2022-06-01T16:00:00Z&end=2022-06-01T16:05:00Z&bucket=cloudflare-logs&prefix=http_requests/example.com/{DATE}' \-H "X-Auth-Email: <EMAIL>" \-H "X-Auth-Key: <API_KEY>" \-H "R2-Access-Key-Id: R2_ACCESS_KEY_ID" \-H "R2-Secret-Access-Key: R2_SECRET_ACCESS_KEY" | jq .結果は> logs.jsonを使用してファイルにパイプできます。
さらに、クライアントによって透明に解凍されることなく生のGZIPバイトを受け取りたい場合は、ヘッダー-H 'Accept-Encoding: gzip'を含めてください。
R2に保存されたログを使用して、Logpull RayID Lookup機能を使用すると、RayIDの存在を確認するためにインデックスされた時間範囲をクエリし、一致する結果を返すことができます。この機能は、Logpull RayID Lookupベータサブスクリプションを持つユーザーが利用できます。
RayIDを検索する能力は二段階のプロセスです。まず、RayIDによってレコードをリクエストできるようにするために、時間範囲をインデックスする必要があります。
インデックスは、使用されない状態で7日後に自動的に期限切れになります。
クエリを実行する前に、クエリの範囲を狭めるためにインデックスしたい時間範囲を指定できます。次の例では、R2バケット「cloudflare-logs」のプレフィックス「http_requests/{DATE}」の下に保存された1分間のログをインデックスします。
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/logs/rayids/index' \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'R2-Access-Key-Id: <R2_ACCESS_KEY_ID>' \ -H 'R2-Secret-Access-Key: <R2_SECRET_ACCESS_KEY>' \ -H 'Content-Type: application/json' \ --data-raw '{ "start":"2022-08-16T20:30:00Z", "end":"2022-08-16T20:31:00", "bucket": "cloudflare-logs", "prefix": "http_requests/example.com/{DATE}"}'時間範囲をインデックスした後、RayIDを使用してGETリクエストを実行します。インデックスされた時間範囲に一致する結果が見つかった場合、レコードが返されます。パラメータはリクエストボディからURLに移動したことに注意してください。-gフラグは、cURLによって{DATE}パラメータが誤解されないようにするために必要です。
curl -g -X GET 'https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/logs/rayids/<RAY_ID>?bucket=cloudflare-logs&prefix=http_requests/example.com/{DATE}' \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'R2-Access-Key-Id: <R2_ACCESS_KEY_ID>' \ -H 'R2-Secret-Access-Key: <R2_SECRET_ACCESS_KEY>'APIにアクセスするとエラーが発生します
- エラー: 時間範囲が多すぎる結果を返しました。時間範囲を短くして再試行してください。
開始パラメータと終了パラメータの間の時間範囲が広すぎる場合、HTTPステータスコード422が返されます。この制限に直面している場合は、より短い時間範囲をクエリしてください。
- エラー: 提供されたトークンには必要な機能が有効になっていません。
アカウント担当者に連絡して、ベータLogpull RayID Lookupサブスクリプションをアカウントに追加してもらってください。
- エラー: 時間範囲が多すぎる結果を返しました。時間範囲を短くして再試行してください。
高ボリュームゾーンでは、R2に多くのログファイルが生成される可能性があります。ログボリュームに最適な期間を見つけるまで、開始時間と終了時間を短くしてください。
どの時間範囲をインデックスすればよいかわかりません。
現在、ログが到着する際にインデックスするプロセスはありません。RayIDがあり、リクエストが行われた時間がわかっている場合は、リクエストが完了した後の次の5〜10分間のログをインデックスしてみてください。
イベントが発生してからクエリできるまでの時間遅延はどのくらいですか?
ログプッシュは、できるだけ早くバッチでログを配信します。一般的には1分未満です。その後、ログエンジンを使用してログにアクセスできます。
R2には保持管理がありますか?
R2には現在、保持管理がありません。ログプッシュジョブを作成した時点まで遡ってクエリできます。
ログエンジンはどのデータセットと互換性がありますか?
取得APIは、サポートされているすべてのデータセットと互換性があります。完全なリストは、ログフィールドセクションで確認できます。