← Cloudflare Logs / logs / logpush / logpush-job
Vlastní pole
Dataset HTTP requests ve výchozím nastavení obsahuje většinu standardních logových informací. Pokud ale potřebujete zachytit další hlavičky nebo cookies požadavku či odpovědi, můžete pomocí vlastních polí přizpůsobit logy svým potřebám
Vlastní pole se konfigurují pro každou zónu zvlášť. Po nastavení se zapnou pro všechny úlohy Logpush v dané zóně, které používají datovou sadu HTTP requests a zahrnují pole hlaviček požadavku, hlaviček odpovědi nebo cookies. Tato pole můžete zaznamenávat v jejich původní podobě, nebo jako transformované hodnoty.
Toto výchozí chování lze změnit. Podle potřeby můžete nastavit protokolování hlaviček požadavku nebo odpovědi v nezpracované nebo transformované podobě, nikdy však obojí najednou pro stejnou hlavičku.
Vlastní pole lze zapnout přes API nebo v Cloudflare dashboardu.
Povolení vlastních pravidel přes API
Použijte Rulesets API a vytvořte pravidlo, které nakonfiguruje vlastní pole. Další informace o konceptech, jako jsou fáze, sady pravidel a pravidla, a o dostupných operacích API najdete v Ruleset Engine dokumentace.
Chcete-li nakonfigurovat vlastní pole:
- Vytvořte pravidlo pro nastavení seznamu vlastních polí.
- Zahrňte
Cookies,RequestHeaders, a/neboResponseHeadersve vaší úloze Logpush.
1. Vytvořte pravidlo pro konfiguraci seznamu vlastních polí
Vytvořte pravidlo, které nastaví seznam vlastních polí v http_log_custom_fields fázi na úrovni zóny. Nastavte akci pravidla na log_custom_field a výraz pravidla na true.
action_parameters objekt, který musíte zahrnout do pravidla konfigurujícího seznam vlastních polí, by měl mít následující strukturu:
"action_parameters": {
//select raw (default) or transformed request header
"request_fields": [
{ "name": "<http_request_header_raw>" }
],
"transformed_request_fields": [
{ "name": "<http_request_header_transformed>" }
],
//select raw or transformed (default) response header
"response_fields": [
{ "name": "<http_response_header_transformed>" }
],
"raw_response_fields": [
{ "name": "<http_response_header_raw>" }
],
"cookie_fields": [
{ "name": "<cookie_name>" }
]
}Ujistěte se, že definice vašeho pravidla splňuje následující požadavky:
- Musíte zahrnout alespoň jedno z následujících polí do
action_parametersobjekt:request_fields,transformed_request_fields,response_fields,raw_response_fields, acookie_fields. - Názvy hlaviček HTTP požadavku a odpovědi musíte zadávat malými písmeny.
- V názvech souborů cookie záleží na velikosti písmen: zadejte je se stejnými velkými a malými písmeny, jaké mají v požadavku HTTP.
- Výraz pravidla musíte nastavit na
true. - U stejné hlavičky můžete protokolovat surové nebo transformované hodnoty, a to buď z hlaviček požadavku, nebo odpovědi, nikdy z obou zároveň.
Pro vytvoření pravidla proveďte následující kroky:
-
Použijte Seznam sad pravidel zóny operaci, kterou ověříte, zda již neexistuje vstupní sada pravidel pro
http_log_custom_fieldsfázi na úrovni zóny (na fázi můžete mít pouze jeden vstupní ruleset):Seznam sad pravidel zónycurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Pokud existuje vstupní ruleset pro
http_log_custom_fieldsfázi (tedy ruleset s"kind": "zone"a"phase": "http_log_custom_fields"), poznamenejte si ID sady pravidel. -
(Volitelné) Pokud odpověď neobsahovala sadu pravidel s
"kind": "zone"a"phase": "http_log_custom_fields", vytvořte vstupní sadu pravidel fáze pomocí Vytvoření rulesetu zóny operace:Vytvoření rulesetu zónycurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "Zone-level phase entry point", "kind": "zone", "description": "This ruleset configures custom log fields.", "phase": "http_log_custom_fields" }'Poznamenejte si ID sady pravidel uvedené v odpovědi.
-
Použijte Aktualizace sady pravidel zóny operaci k definování pravidel vstupního rulesetu, který jste našli (nebo vytvořili v předchozím kroku), a přidejte pravidlo s konfigurací vlastních polí. Pravidla, která zahrnete do požadavku, nahradí všechna pravidla v rulesetu.
Následující příklad konfiguruje vlastní pole s názvy hlaviček HTTP požadavků, hlaviček HTTP odpovědí a cookies, které chcete zahrnout do protokolů Logpush:
Aktualizace sady pravidel zónycurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \ --request PUT \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "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" } ], "transformed_request_fields": [ { "name": "host" } ], "response_fields": [ { "name": "server" }, { "name": "content-type" } ], "raw_response_fields": [ { "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" } ], "transformed_request_fields": [{ "name": "host" }], "response_fields": [ { "name": "server" }, { "name": "content-type" } ], "raw_response_fields": [{ "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": [] }
Zaznamenávejte duplicitní hodnoty hlaviček odpovědi
Některé hlavičky odesílané origin serverem, například set-cookie : může mít více hodnot, které chcete zachytit. Pomocí Rulesets API můžete určit, u kterých hlaviček se mají zaznamenávat všechny jejich hodnoty.
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"action": "log_custom_field",
"expression": "true",
"description": "Set Logpush custom fields for HTTP requests",
"action_parameters": {
"response_fields": [
{
"name": "set-cookie",
"preserve_duplicates": true
}
]
}
}
]
}'Upozorňujeme, že preserve_duplicates platí pro obojí response_fields a raw_response_fields. Pokud na hlavičku nepůsobí žádné pravidlo Transform Rules, včetně preserve_duplicates v jednom z response_fields nebo raw_response_fields by mělo vést ke stejnému výsledku.
V tomto příkladu jsou všechny hodnoty set-cookie hlavičky budou zaznamenány do protokolu. Zobrazí se jako pole řetězcových hodnot pod ResponseFields, například:
{
// ...
"ResponseFields": {
"set-cookie": ["name1=val1", "name2=val2", ...]
}
}Tyto hodnoty můžete extrahovat pomocí workeru nebo vlastní logiky v cíli Logpush.
2. Zahrňte vlastní pole do úlohy Logpush
Dále zahrňte Cookies, RequestHeaders, ResponseHeaders, a/nebo ResponseFields, v závislosti na konfiguraci vlastních polí, v seznamu polí output_options parametr úlohy při vytváření nebo aktualizaci úlohy. Protokoly budou obsahovat nakonfigurovaná vlastní pole a jejich hodnoty v požadavku/odpovědi.
Jako příklad si představte následující požadavek, který vytvoří úlohu obsahující vlastní pole:
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné: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>",
"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": "<OWNERSHIP_CHALLENGE_TOKEN>"
}'Povolení vlastních polí přes dashboard
-
V dashboardu Cloudflare přejděte na Logpush stránce.
Přejděte na Logpush ↗ -
V Vlastní pole protokolu sekci vyberte Upravit vlastní pole.
-
Vyberte Nastavit nové vlastní pole.
-
Z Typ pole rozbalovací nabídce vyberte Hlavička požadavku, Hlavička odpovědi nebo Cookies a zadejte Název pole.
-
Až budete hotovi, vyberte Save.
Případ použití: protokolování hlaviček certifikátů mTLS
Chcete-li zaznamenávat podrobnosti certifikátu mTLS (například cf-cert-subject-dn nebo cf-cert-issuer-dn) ve službě Logpush musíte:
- Povolte Přidání hlaviček ověřování klienta TLS Managed Transform pro vložení hlaviček certifikátu.
- Vlastní pole Logpush nakonfigurujte pomocí
transformed_request_fields(nerequest_fields) pro zachycení těchto hlaviček vložených Cloudflare. - Ujistěte se, že vaše úloha Logpush obsahuje
RequestHeaders.
Hlavičky mTLS vkládá Cloudflare až po přijetí požadavku klienta, proto je nutné je zachytávat pomocí transformed_request_fields místo request_fields.
Další informace o konfiguraci klientských certifikátů najdete v ověřování pomocí mTLS.
Omezení
- Vlastní pole umožňují až 100 hlaviček na typ pole, a to zvlášť pro
request_fields,transformed_request_fields,response_fields,raw_response_fields, acookie_fields. - Hlavička požadavku
Rangemomentálně není podporováno funkcí Custom Fields. - Transformované a syrové hodnoty hlaviček požadavku a odpovědi jsou dostupné pouze přes API a nelze je nastavit v uživatelském rozhraní.