コンテンツにスキップ

ログのリクエスト

エンドポイント

Logpull API がサポートする3つのエンドポイントは次のとおりです:

  • GET /logs/received - 指定されたパラメータに基づいて HTTP リクエストログデータを返します
  • GET /logs/received/fields - 利用可能なすべてのログフィールドのリストを返します
  • GET /logs/rayids/<rayid> - <rayid> に一致する HTTP リクエストログデータを返します

必要な認証ヘッダー

すべてのエンドポイント呼び出しには、次のヘッダーが必要です:

  • X-Auth-Email - ドメインに関連付けられた Cloudflare アカウントのメールアドレス
  • X-Auth-Key - Cloudflare API キー

また、Logs Read 権限を持つ API トークンも認証に使用できます:

  • Authorization: Bearer <API_TOKEN>

パラメータ

API は GET リクエストのクエリ文字列にエンドポイントパラメータを期待します。以下は例のフォーマットです:

logs/received

Terminal window
https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logs/received?start=<unix|rfc3339>&end=<unix|rfc3339>[&count=<int>][&sample=<float>][&fields=<FIELDS>][&timestamps=<string>][&CVE-2021-44228=<boolean>]

logs/rayids/<RAY_ID>

Terminal window
https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logs/rayids/<RAY_ID>?[&fields=<string>][&timestamps=<strings>]

以下の表は、利用可能なパラメータを説明します:

パラメータ説明適用先必須
start

- 包括的

- UNIX(UTC に基づく)、UNIX Nano、または rfc3339 形式のタイムスタンプ。URL クエリパラメータで rfc3339 タイムゾーンを指定するには、URL をエンコードする必要があります。例:start=2024-08-07T07:00:00%2B08:00&end=2024-08-07T07:01:00%2B08:00

- 現在から7日以上前であってはいけません

/logs/receivedはい
end

- 排他的

- start と同じ形式

- 現在から1分以上前であり、start よりも後でなければなりません

/logs/receivedはい
count

- 最大その数のレコードを返します

- すべてのレコードを返す場合は含めないでください

- 結果はソートされていないため、繰り返しリクエストで異なるデータが得られる可能性があります

- 戻されるレコードの総数に適用され、サンプルレコードの数には適用されません

/logs/receivedいいえ
sample

- レコードのサンプルのみを返します

- すべてのレコードを返す場合は含めないでください

- 値は 0.0(排他的)から 1.0(包括的)までの範囲です

- sample=0.1 は、すべてのレコードの10%(10分の1)を返すことを意味します

- 結果はランダムであるため、繰り返しリクエストで異なる数の結果が得られる可能性があります

/logs/receivedいいえ
fields

- 返すフィールドのカンマ区切りリスト

- 空の場合、デフォルトのリストが返されます

/logs/received

/logs/rayids

いいえ
timestamps

- タイムスタンプフィールドが返される形式

- 値のオプションは:unixnano(デフォルト)、unixrfc3339

- unixunixnano では整数として、rfc3339 では文字列としてタイムスタンプが返されます

/logs/received

/logs/rayids

いいえ
CVE-2021-44228

- CVE-2021-44228 のためのオプションの修正。このオプションは、文字列 ${ のすべての出現を x{ に置き換えます。

例:CVE-2021-44228=true

/logs/received

いいえ

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

logs/received

Terminal window
curl -s \
-H "X-Auth-Email: <EMAIL>" \
-H "X-Auth-Key: <API_KEY>" \
"https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logs/received?start=2017-07-18T22:00:00Z&end=2017-07-18T22:01:00Z&count=1&fields=ClientIP,ClientRequestHost,ClientRequestMethod,ClientRequestURI,EdgeEndTimestamp,EdgeResponseBytes,EdgeResponseStatus,EdgeStartTimestamp,RayID"

logs/rayids/<RAY_ID>

Terminal window
curl -s \
-H "X-Auth-Email: <EMAIL>" \
-H "X-Auth-Key: <API_KEY>" \
"https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logs/rayids/47ff6e2c812d3ccb?timestamps=rfc3339"

フィールド

fields パラメータで指定されていない限り、API は限られたセットのログフィールドを返します。このデフォルトのフィールドセットはいつでも変更される可能性があります。利用可能なすべてのフィールドのリストは次のとおりです:

https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logs/received/fields

フィールドの指定順序は重要ではなく、レスポンス内のフィールドの順序は指定されていません。

bash サブシェルと jq を使用すると、リクエストにフィールドを手動でコピー&ペーストすることなく、すべての利用可能なフィールドを持つログをダウンロードできます。たとえば:

Terminal window
curl -s \
-H "X-Auth-Email: <EMAIL>" \
-H "X-Auth-Key: <API_KEY>" \
"https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logs/received?start=2017-07-18T22:00:00Z&end=2017-07-18T22:01:00Z&count=1&fields=$(curl -s -H "X-Auth-Email: <EMAIL>" -H "X-Auth-Key: <API_KEY>" "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logs/received/fields" | jq '. | to_entries[] | .key' -r | paste -sd "," -)"

現在利用可能なフィールドについては、HTTP リクエストフィールドを参照してください。