INTEGRITY Dokumentace

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&timestamps=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í:

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

{
	"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"}

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:

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"

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"

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:

  1. Změňte &fields=ClientIP,EdgeStartTimestamp,RayID parametr na pole v output_options.field_names.
  2. Změňte &sample=0.1 parametr na output_options.sample_rate.
  3. Změňte &timestamps=rfc3339 parametr na output_options.timestamp_format.
  4. Změňte &CVE-2021-44228=true parametr na output_options.CVE-2021-44228.

Pokud jsou logpull_options například nastaveny na fields=ClientIP,EdgeStartTimestamp,RayID&sample=0.1&timestamps=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
}