INTEGRITY Документация

Параметры вывода журнала

У заданий в Logpush появился новый ключ, output_options, который заменяет logpull_options и обеспечивает более гибкое форматирование. Вы можете изменить output_options через API.

Замените logpull_options

Раньше задания Logpush можно было настраивать, указывая список полей, частоту выборки и формат временной метки в logpull_options как Параметры в кодировке URL. Например:

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

Мы заменили это на output_options так как оно используется и для Logpull, и для 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[Обновления полностью заменяют output_options]

Когда вы обновляете задание Logpush через PUT /accounts/{account_id}/logpush/jobs/{job_id} или PUT /zones/{zone_id}/logpush/jobs/{job_id}, output_options объект заменяется полностью. Любое поле, которое было задано ранее, но отсутствует в теле запроса на обновление, сбрасывается к значению по умолчанию. Например, если в существующем задании задано timestamp_format: "rfc3339" и ваше обновление включает только field_names, задание вернётся к значению по умолчанию timestamp_format (unixnano для заданий, созданных через API). Всегда указывайте полный output_options объект, который требуется применить при обновлении задания.

Типы выходных данных

По умолчанию Logpush выводит каждую запись в виде одной строки JSON (также известного как ndjson).

С output_options вы можете переключиться на CSV или отдельный объект JSON, дополнительно настроить префиксы, суффиксы, разделители либо указать собственный шаблон записи (в упрощённой версии шаблонов Go text/template ↗ синтаксис).

output_options объект имеет следующие настройки:

Примеры

Указание field_names и output_type приведёт к тому, что остальные параметры будут настроены, как показано ниже, для указанного output_type:

ndjson

output_options по умолчанию для ndjson

{
	"record_prefix": "{",
	"record_suffix": "}\n",
	"field_delimiter": ","
}

Пример output_options

"output_options": {
  "field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
  "output_type": "ndjson"
}

Пример вывода

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

Пример output_options

"output_options": {
  "field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
  "output_type": "ndjson",
  "record_template": "\"client-ip\":{{.ClientIP}},\"timestamp\":{{.EdgeStartTimestamp}},\"ray-id\":{{.RayID}}"
}

Пример вывода

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

Литерал с двойными фигурными скобками ({{}}), то есть "double{{curly}}braces", можно вставлять по правилам синтаксиса Go text/template, то есть "{{doublecurlybraces}}".

csv

output_options по умолчанию для CSV

{
	"record_suffix": "\n",
	"field_delimiter": ","
}

Пример output_options

"output_options": {
  "field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
  "output_type": "csv"
}

Пример вывода

"89.163.242.206",1506702504433000200,"3a6050bcbe121a87"
"89.163.242.207",1506702504433000300,"3a6050bcbe121a88"
"89.163.242.208",1506702504433000400,"3a6050bcbe121a89"

варианты csv/json

Помимо указанного выше, поддерживаются и другие форматы, похожие на csv или json:

Пример output_options

"output_options": {
  "field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
  "output_type": "csv",
  "batch_prefix": "ClientIP,EdgeStartTimestamp,RayID\n"
}

Пример вывода

ClientIP,EdgeStartTimestamp,RayID
"89.163.242.206",1506702504433000200,"3a6050bcbe121a87"
"89.163.242.207",1506702504433000300,"3a6050bcbe121a88"
"89.163.242.208",1506702504433000400,"3a6050bcbe121a89"

Пример output_options

"output_options": {
  "field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
  "output_type": "csv",
  "batch_prefix": "ClientIP\tEdgeStartTimestamp\tRayID\n",
  "field_delimiter": "\t"
}

Пример вывода

ClientIP EdgeStartTimestamp  RayID
"89.163.242.206"    1506702504433000200 "3a6050bcbe121a87"
"89.163.242.207"    1506702504433000300 "3a6050bcbe121a88"
"89.163.242.208"    1506702504433000400 "3a6050bcbe121a89"

Пример 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": ","
}

Пример вывода

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

Как выполнить миграцию

Чтобы перенести задания с использования logpull_options к новому output_options, выполните следующие действия:

  1. Измените &fields=ClientIP,EdgeStartTimestamp,RayID параметр в массив в output_options.field_names.
  2. Измените &sample=0.1 параметр в output_options.sample_rate.
  3. Измените &timestamps=rfc3339 параметр в output_options.timestamp_format.
  4. Измените &CVE-2021-44228=true параметр в output_options.CVE-2021-44228.

Например, если для logpull_options заданы fields=ClientIP,EdgeStartTimestamp,RayID&sample=0.1&timestamps=rfc3339&CVE-2021-44228=true, output_options будут иметь вид:

"output_options": {
  "field_names": ["ClientIP", "EdgeStartTimestamp", "RayID"],
  "sample_rate": 0.1,
  "timestamp_format": "rfc3339",
  "CVE-2021-44228": true
}