カスタムフィールド
HTTPリクエストヘッダー、HTTPレスポンスヘッダー、およびクッキーのリストから選択したカスタムフィールドを構成し、ゾーンのLogpushログエントリに含めることができます。構成が完了すると、これらのカスタムフィールドは、HTTPリクエストデータセットを使用し、リクエストヘッダー、レスポンスヘッダー、またはクッキーフィールドを含むゾーン内のすべてのLogpushジョブで有効になります。
カスタムフィールドは、APIまたはCloudflareダッシュボードを介して有効にできます。
Rulesets APIを使用して、カスタムフィールドを構成するルールを作成します。フェーズ、ルールセット、ルールなどの概念や、利用可能なAPI操作の詳細については、Ruleset Engineのドキュメントを参照してください。
カスタムフィールドを構成するには:
- カスタムフィールドのリストを構成するルールを作成します。
- Logpushジョブに
Cookies、RequestHeaders、および/またはResponseHeadersフィールドを含めます。
ゾーンレベルのhttp_log_custom_fieldsフェーズでカスタムフィールドのリストを構成するルールを作成します。ルールアクションをlog_custom_fieldに設定し、ルール式をtrueに設定します。
カスタムフィールドのリストを構成するルールに含める必要があるaction_parametersオブジェクトは、次の構造を持つ必要があります:
"action_parameters": { "request_fields": [ { "name": "<http_request_header_name_1_in_lower_case>" }, { "name": "<http_request_header_name_2_in_lower_case>" }, // ... ], "response_fields": [ { "name": "<http_response_header_name_1_in_lower_case>" }, { "name": "<http_response_header_name_2_in_lower_case>" }, // ... ], "cookie_fields": [ { "name": "<cookie_name_1>" }, { "name": "<cookie_name_2>" }, // ... ]}ルール定義が次の条件を満たすことを確認してください:
action_parametersオブジェクトには、少なくとも次の配列のいずれかを含める必要があります:request_fields、response_fields、およびcookie_fields。- HTTPリクエストおよびレスポンスヘッダー名は小文字で入力する必要があります。
- クッキー名は大文字と小文字を区別します — HTTPリクエスト内のクッキー名と同じ大文字小文字で入力する必要があります。
- ルール式を
trueに設定する必要があります。
ルールを作成するために次の手順を実行します:
-
List existing rulesets操作を使用して、ゾーンレベルの
http_log_custom_fieldsフェーズに既にルールセットがあるかどうかを確認します(フェーズごとに1つのゾーンルールセットしか持てません):Terminal window curl "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/rulesets" \-H "X-Auth-Email: <EMAIL>" \-H "X-Auth-Key: <API_KEY>"ゾーンレベルの
http_log_custom_fieldsフェーズにルールセットがある場合は、ルールセットIDをメモしておきます。 -
(オプション)レスポンスに
"kind": "zone"および"phase": "http_log_custom_fields"を含むルールセットが含まれていない場合は、Create ruleset操作を使用してフェーズエントリポイントルールセットを作成します:Terminal window curl -X POST \"https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/rulesets" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{"name": "Zone-level phase entry point","kind": "zone","description": "This ruleset configures custom log fields.","phase": "http_log_custom_fields"}'レスポンスに含まれるルールセットIDをメモしておきます。
-
Update ruleset操作を使用して、見つけた(または前のステップで作成した)エントリポイントルールセットのルールを定義し、カスタムフィールド構成を持つルールを追加します。リクエストに含めるルールは、ルールセット内のすべてのルールを置き換えます。
次の例は、Logpushログに含めたいHTTPリクエストヘッダー、HTTPレスポンスヘッダー、およびクッキーの名前でカスタムフィールドを構成します:
Terminal window curl -X PUT \"https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/rulesets/<RULESET_ID>" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{"rules": [{"action": "log_custom_field","expression": "true","description": "Set Logpush custom fields for HTTP requests","action_parameters": {"request_fields": [{ "name": "content-type" },{ "name": "x-forwarded-for"},{ "name": "host" }],"response_fields": [{ "name": "server" },{ "name": "content-type" },{ "name": "allow" }],"cookie_fields": [{ "name": "__ga" },{ "name": "accountNumber" },{ "name": "__cfruid"}]}}]}'例のレスポンス:
{"result": {"id": "<RULESET_ID>","name": "Zone-level phase entry point","description": "This ruleset configures custom log fields.","kind": "zone","version": "2","rules": [{"id": "<RULE_ID_1>","version": "1","action": "log_custom_field","action_parameters": {"request_fields": [{ "name": "content-type" },{ "name": "x-forwarded-for"},{ "name": "host" }],"response_fields": [{ "name": "server" },{ "name": "content-type" },{ "name": "allow" }],"cookie_fields": [{ "name": "__ga" },{ "name": "accountNumber" },{ "name": "__cfruid"}]},"expression": "true","description": "Set Logpush custom fields for HTTP requests","last_updated": "2021-11-21T11:02:08.769537Z","ref": "<RULE_REF_1>","enabled": true}],"last_updated": "2021-11-21T11:02:08.769537Z","phase": "http_log_custom_fields"},"success": true,"errors": [],"messages": []}
次に、カスタムフィールド構成に応じて、output_optionsジョブパラメータのフィールドリストにCookies、RequestHeaders、および/またはResponseHeadersを含めます。ログには、構成されたカスタムフィールドとその値がリクエスト/レスポンスに含まれます。
たとえば、カスタムフィールドを含むジョブを作成する次のリクエストを考えてみてください:
curl -X POST \"https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logpush/jobs" \-H "X-Auth-Email: <EMAIL>" \-H "X-Auth-Key: <API_KEY>" \-d '{ "name":"<DOMAIN_NAME>", "destination_conf": "s3://<BUCKET_PATH>?region=us-west-2", "dataset": "http_requests", "output_options": { "field_names": ["RayID", "EdgeStartTimestamp", "Cookies", "RequestHeaders", "ResponseHeaders"], "timestamp_format": "rfc3339" }, "ownership_challenge":"00000000000000000000"}'- Cloudflareダッシュボード ↗にログインし、使用するドメインを選択します。
- Analytics & Logs > Logpushに移動します。
- Custom Fieldsセクションで、Edit Custom Fieldsを選択します。
- Set new Custom Fieldを選択します。
- Field TypeドロップダウンからRequest Header、Response Header、またはCookiesを選択し、Field Nameを入力します。
- 完了したら、Saveを選択します。
- ゾーンごとに、すべてのフィールドタイプ(HTTPリクエストヘッダー、HTTPレスポンスヘッダー、クッキー)で最大40のカスタムフィールドを構成できます。
- HTTPリクエストヘッダー、クッキー、およびHTTPレスポンスヘッダーのカスタムフィールドデータの最大長は8 KBです。この制限を超えるデータは切り捨てられます。
- 複数回含まれる可能性のあるヘッダー(たとえば、
set-cookieレスポンスヘッダー)の場合、カスタムフィールドはヘッダーの最初のインスタンスのみをログに記録します。同じタイプの後続のヘッダーは無視されます。 - 現在、Cloudflareは元のリクエスト/レスポンスヘッダーのみをログに記録します。リクエストライフサイクルの早い段階でTransform Rulesを使用して変更されたヘッダーはログに記録されません。