Skip to content

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

Logs Engine

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

Logs Engine を使うと、ログを R2 に保存し、直接クエリできます。

ログを R2 に保存する

  • Logpush to R2 ジョブを設定します。
  • 少なくとも R2 の読み取り権限を持つ R2 アクセスキー を作成します。
  • Logshare の読み取り権限があることを確認します。
  • または、次の権限を持つ Cloudflare API トークンを作成します。
    • アカウントスコープ
    • Logs の読み取り権限

ログをクエリする

API を使い、時間範囲または RayID でログをクエリしてダウンロードできます。

認証

すべての API 呼び出しに次のヘッダーが必要です。

  • X-Auth-Email - ドメインに紐づく Cloudflare アカウントのメールアドレス
  • X-Auth-Key - Cloudflare API キー

または、Logs の編集権限を持つ API トークンでも認証できます。

  • Authorization: Bearer <API_TOKEN>

必須ヘッダー

上記の認証ヘッダーに加え、API が R2 バケット内のログへアクセスするには次のヘッダーが必要です。

ファイルを一覧する

エンドポイント GET /accounts/{accountId}/logs/list を使い、指定したクエリパラメーターに一致するログを含む R2 オブジェクトを一覧します。

クエリパラメーター

  • start(必須) string(TimestampRFC3339) - RFC 3339 形式の開始時刻です。例: start=2022-06-06T16:00:00Z

  • end(必須) string(TimestampRFC3339) - RFC 3339 形式の終了時刻です。例: end=2022-06-06T16:00:00Z

  • bucket(必須) string(Bucket) - R2 バケット名です。例: bucket=cloudflare-logs

  • prefix string(Prefix) - ログを保存している R2 バケットのプレフィックスです。例: prefix=http_requests/example.com/{DATE}

  • limit number(Limit) - 返す結果の最大数です。例: limit=100

時間範囲でログを取得する

エンドポイント GET /accounts/{accountId}/logs/retrieve を使い、指定したクエリパラメーターに一致する R2 内のログをストリームします。

クエリパラメーター

  • start(必須) string(TimestampRFC3339) - RFC 3339 形式の開始時刻です。例: start=2022-06-06T16:00:00Z

  • end(必須) string(TimestampRFC3339) - RFC 3339 形式の終了時刻です。例: end=2022-06-06T16:00:00Z

  • bucket(必須) string(Bucket) - R2 バケット名です。例: bucket=cloudflare-logs

  • prefix string(Prefix) - ログを保存している R2 バケットのプレフィックスです。例: prefix=http_requests/example.com/{DATE}

API リクエストの例

curl --globoff "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}" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "R2-Access-Key-Id: R2_ACCESS_KEY_ID" \
--header "R2-Secret-Access-Key: R2_SECRET_ACCESS_KEY"

結果は > logs.json でファイルへリダイレクトできます。

さらに、クライアントが透過的に展開しない生の GZIP バイト列を受け取りたい場合は、ヘッダー --header "Accept-Encoding: gzip" を付けます。

Ray ID でログを取得する

R2 に保存したログを使い、Logpull RayID Lookup はインデックス済みの時間範囲に RayID があるかを照会し、一致した結果を返します。この機能は Logpull RayID Lookup ベータサブスクリプションのユーザーが利用できます。

RayID の検索は 2 ステップです。まず時間範囲をインデックスしてから、RayID でレコードを要求します。

インデックスは、7 日間使われないと自動で期限切れになります。

時間範囲をインデックスする

クエリを実行する前に、対象を絞り込むための時間範囲を指定してインデックスできます。次の例では、R2 バケット "cloudflare-logs" のプレフィックス "http_requests/{DATE}" に保存された 1 分分のログをインデックスします。

API リクエストの例

curl https://api.cloudflare.com/client/v4/accounts/{account_id}/logs/rayids/index \
--header "Authorization: Bearer <API_TOKEN>" \
--header "R2-Access-Key-Id: <R2_ACCESS_KEY_ID>" \
--header "R2-Secret-Access-Key: <R2_SECRET_ACCESS_KEY>" \
--header "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 を検索する

時間範囲をインデックスしたあと、RayID を付けて GET リクエストを送ります。インデックス済みの時間範囲に一致する結果があれば、そのレコードが返されます。パラメーターはリクエスト本文ではなく URL に移っています。cURL が {DATE} パラメーターを誤解釈しないよう、-g フラグが必要です。

API リクエストの例

curl --globoff "https://api.cloudflare.com/client/v4/accounts/{account_id}/logs/rayids/<RAY_ID>?bucket=cloudflare-logs&prefix=http_requests/example.com/{DATE}" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "R2-Access-Key-Id: <R2_ACCESS_KEY_ID>" \
--header "R2-Secret-Access-Key: <R2_SECRET_ACCESS_KEY>"

トラブルシューティング

API にアクセスするとエラーになります

  • Error: Time range returned too many results. Try reducing the time range and try again.

startend の時間範囲が広すぎると、HTTP ステータスコード 422 が返されます。この制限に当たった場合は、より短い時間範囲でクエリしてください。

  • Error: Provided token does not have the required features enabled.

アカウント担当者に連絡し、ベータの Logpull RayID Lookup サブスクリプションをアカウントへ追加してもらってください。

  • Error: Time range returned too many results. Try reducing the time range and try again.

トラフィックの多いゾーンは、R2 に多数のログファイルを生成します。ログ量に合う長さになるまで、開始時刻と終了時刻の範囲を短くしてください。

どの時間範囲をインデックスすればよいですか?

現時点では、到着したログを自動でインデックスする仕組みはありません。RayID があり、リクエスト時刻が分かる場合は、リクエスト完了後の 5〜10 分のログをインデックスしてみてください。

イベント発生からクエリできるようになるまでの遅延はどのくらいですか?

Logpush はログをできるだけ早くバッチで配信します。通常は 1 分未満です。その後、Logs Engine でログにアクセスできます。

R2 に保持期間の制御はありますか?

R2 には、現時点では保持期間の制御はありません。Logpush ジョブを作成した時点までさかのぼってクエリできます。

Logs Engine はどのデータセットに対応していますか?

取得 API は、対応しているすべてのデータセットで使えます。一覧は Datasets を参照してください。

役に立ちましたか?