← Cloudflare Logs / logs / logpush / logpush-job
Možnosti výstupu protokolu
Úlohy v Logpush mají nyní nový klíč, output_options, který nahrazuje logpull_options a umožňuje flexibilnější formátování. Můžete upravit output_options přes API.
Nahraďte logpull_options
Dříve bylo možné úlohy Logpush přizpůsobit zadáním seznamu polí, vzorkovací frekvence a formátu časového razítka v logpull_options jako URL kódované parametry. Například:
{
"id": <JOB_ID>,
"dataset": "http_requests",
"enabled": false,
"name": "<DOMAIN_NAME>",
"logpull_options": "fields=ClientIP,EdgeStartTimestamp,RayID&sample=0.1×tamps=rfc3339",
"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2"
}Nahradili jsme jej parametrem output_options protože se používá jak pro Logpull, tak pro Logpush.
{
"id": <JOB_ID>,
"dataset": "http_requests",
"enabled": false,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
"sample_rate": 0.1,
"timestamp_format": "rfc3339"
},
"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2"
}:::caution[Aktualizace nahrazují output_options celé]
Když aktualizujete úlohu Logpush prostřednictvím PUT /accounts/{account_id}/logpush/jobs/{job_id} nebo PUT /zones/{zone_id}/logpush/jobs/{job_id}, output_options objekt se nahradí celý. Jakékoli pole, které bylo dříve nastaveno, ale v datech aktualizace chybí, se vrátí na výchozí hodnotu.
Pokud například stávající úloha nastavuje timestamp_format: "rfc3339" a vaše aktualizace obsahuje pouze field_names, úloha se vrátí k výchozímu timestamp_format (unixnano pro úlohy vytvořené přes API).
Vždy uveďte úplný output_options objekt, který chcete použít při aktualizaci úlohy.
Typy výstupu
Logpush ve výchozím nastavení odesílá každý záznam jako jeden řádek JSON (také známý jako ndjson).
S output_options můžete přepnout na formát CSV nebo jednotný objekt JSON, dále přizpůsobit předpony, přípony a oddělovače, nebo poskytnout vlastní šablonu záznamu (ve zjednodušené verzi jazyka Go text/template ↗ syntaxe).
output_options objekt má následující nastavení:
-
field_names: pole řetězců. Zatím není možné přidat všechna pole najednou, musíte uvést názvy jednotlivých polí.
-
output_type: řetězec určující typ výstupu, například
ndjsonnebocsv(výchozíndjson). Tím se nastaví výchozí hodnoty pro zbytek nastavení podle zvoleného typu výstupu. Některá pravidla formátování (například uvozování řetězců) se mezi typy výstupu liší. -
batch_prefix: řetězec, který se vloží před každou dávku.
-
batch_suffix: řetězec, který se připojí za každou dávku.
-
record_prefix: řetězec, který se vloží před každý záznam.
-
record_suffix: řetězec, který se připojí za každý záznam.
-
record_template: řetězec použitý jako šablona pro každý záznam místo výchozího seznamu odděleného čárkami. Všechna pole použitá v šabloně musí být obsažena v field_names také, jinak skončí jako
null. Zformátujte jako Go text/template bez jakýchkoli standardních funkcí (například podmínek, cyklů, dílčích šablon atd.). Šablona může obsahovat pouze tyto tři typy tokenů:- Akce: jde buď o
{{ .Field }}nebo{{ "constant text" }}. - Text: toto je pouze konstantní text mezi
{{ actions }}. - Poznámka:
{{/* comments */}}jsou tiše zahazovány.
- Akce: jde buď o
-
record_delimiter: řetězec, který se vloží mezi jednotlivé záznamy jako oddělovač.
-
field_delimiter: řetězec pro spojení polí. Bude ignorován, pokud record_template je nastaven.
-
timestamp_format: řetězec určující formát časových razítek. Podporované hodnoty jsou:
unixnano: jednotka nanosekundyunix: jednotka sekundyrfc3339: jednotka sekundy, například:2024-02-17T23:52:01Zrfc3339ms: jednotka milisekundy, například:2024-02-17T23:52:01.123Zrfc3339ns: jednotka nanosekundy, například:2024-02-17T23:52:01.123456789Z
Pokud není nastaveno jinak, platí výchozí formáty časových razítek. V dashboardu se ve výchozím nastavení používá
rfc3339a API standardně použijeunixnano. -
sample_rate: desetinné číslo určující míru vzorkování (výchozí hodnota 1.0: bez vzorkování). Vzorkování se uplatňuje až po filtrování, a to bez ohledu na aktuální sample_interval dat.
-
CVE-2021-44228: bool, výchozí hodnota false. Pokud nastavíte true, způsobí to, že všechny výskyty
${ve vygenerovaných souborech, které se mají nahraditx{.
Příklady
Zadání field_names a output_type povede k tomu, že zbývající možnosti budou nakonfigurovány následovně pro zadaný output_type:
ndjson
Výchozí output_options pro ndjson
ndjson{
"record_prefix": "{",
"record_suffix": "}\n",
"field_delimiter": ","
}Příklad output_options
"output_options": {
"field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
"output_type": "ndjson"
}Příklad výstupu
{"ClientIP":"89.163.242.206","EdgeStartTimestamp":1506702504433000200,"RayID":"3a6050bcbe121a87"}
{"ClientIP":"89.163.242.207","EdgeStartTimestamp":1506702504433000300,"RayID":"3a6050bcbe121a88"}
{"ClientIP":"89.163.242.208","EdgeStartTimestamp":1506702504433000400,"RayID":"3a6050bcbe121a89"}ndjsons odlišnými názvy polí:
Příklad output_options
"output_options": {
"field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
"output_type": "ndjson",
"record_template": "\"client-ip\":{{.ClientIP}},\"timestamp\":{{.EdgeStartTimestamp}},\"ray-id\":{{.RayID}}"
}Příklad výstupu
{"client-ip":"89.163.242.206","timestamp":1506702504433000200,"ray-id":"3a6050bcbe121a87"}
{"client-ip":"89.163.242.207","timestamp":1506702504433000300,"ray-id":"3a6050bcbe121a88"}
{"client-ip":"89.163.242.208","timestamp":1506702504433000400,"ray-id":"3a6050bcbe121a89"}Literál s dvojitými složenými závorkami ({{}}), tedy "double{{curly}}braces", lze vložit podle konvence go text/template, tedy "{{doublecurlybraces}}".
csv
Výchozí output_options pro CSV
{
"record_suffix": "\n",
"field_delimiter": ","
}Příklad output_options
"output_options": {
"field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
"output_type": "csv"
}Příklad výstupu
"89.163.242.206",1506702504433000200,"3a6050bcbe121a87"
"89.163.242.207",1506702504433000300,"3a6050bcbe121a88"
"89.163.242.208",1506702504433000400,"3a6050bcbe121a89"varianty csv/json
Kromě výše uvedeného jsou podporovány i další formáty podobné csv nebo json:
- csv s hlavičkou:
Příklad output_options
"output_options": {
"field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
"output_type": "csv",
"batch_prefix": "ClientIP,EdgeStartTimestamp,RayID\n"
}Příklad výstupu
ClientIP,EdgeStartTimestamp,RayID
"89.163.242.206",1506702504433000200,"3a6050bcbe121a87"
"89.163.242.207",1506702504433000300,"3a6050bcbe121a88"
"89.163.242.208",1506702504433000400,"3a6050bcbe121a89"- tsv s hlavičkou:
Příklad output_options
"output_options": {
"field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
"output_type": "csv",
"batch_prefix": "ClientIP\tEdgeStartTimestamp\tRayID\n",
"field_delimiter": "\t"
}Příklad výstupu
ClientIP EdgeStartTimestamp RayID
"89.163.242.206" 1506702504433000200 "3a6050bcbe121a87"
"89.163.242.207" 1506702504433000300 "3a6050bcbe121a88"
"89.163.242.208" 1506702504433000400 "3a6050bcbe121a89"- json s vnořeným objektem:
Příklad output_options
"output_options": {
"field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
"output_type": "ndjson",
"batch_prefix": "{\"events\":[",
"batch_suffix": "\n]}\n",
"record_prefix": "\n {\"info\":{",
"record_suffix": "}}",
"record_delimiter": ","
}Příklad výstupu
{
"events": [
{
"info": {
"ClientIP": "89.163.242.206",
"EdgeStartTimestamp": 1506702504433000200,
"RayID": "3a6050bcbe121a87"
}
},
{
"info": {
"ClientIP": "89.163.242.207",
"EdgeStartTimestamp": 1506702504433000300,
"RayID": "3a6050bcbe121a88"
}
},
{
"info": {
"ClientIP": "89.163.242.208",
"EdgeStartTimestamp": 1506702504433000400,
"RayID": "3a6050bcbe121a89"
}
}
]
}Jak migrovat
Chcete-li úlohy migrovat z používání logpull_options na nový output_options, postupujte takto:
- Změňte
&fields=ClientIP,EdgeStartTimestamp,RayIDparametr na pole voutput_options.field_names. - Změňte
&sample=0.1parametr naoutput_options.sample_rate. - Změňte
×tamps=rfc3339parametr naoutput_options.timestamp_format. - Změňte
&CVE-2021-44228=trueparametr naoutput_options.CVE-2021-44228.
Pokud jsou logpull_options například nastaveny na fields=ClientIP,EdgeStartTimestamp,RayID&sample=0.1×tamps=rfc3339&CVE-2021-44228=true, output_options by byly:
"output_options": {
"field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
"sample_rate": 0.1,
"timestamp_format": "rfc3339",
"CVE-2021-44228": true
}