Размещение лога загрузки: различия между версиями
ENetrebin (обсуждение | вклад) (Новая страница: «Отправляет пользовательские журналы в Ключ-АСТРОМ. Для этой конечной точки требуется Act...») |
ENetrebin (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
Отправляет пользовательские | Отправляет пользовательские логи в Dynatrace. | ||
Для этой конечной точки требуется | Для этой конечной точки требуется АктивныйШлюз с включенным модулем сбора аналитики логов . Этот модуль включен по умолчанию на всех ваших АктивныхШлюзах. | ||
Запрос использует один из следующих типов полезной нагрузки: | Запрос использует один из следующих типов полезной нагрузки: | ||
* <code>text/plain</code>— ограничено одним событием в | * <code>text/plain</code>— ограничено одним событием в логе. | ||
* <code>application/json</code>— поддерживает несколько событий | * <code>application/json</code>— поддерживает несколько событий лога в одной полезной нагрузке. | ||
Обязательно установите правильный заголовок Content-Type и закодируйте полезную нагрузку с помощью UTF-8 : <code>application/json; charset=utf-8</code>. | Обязательно установите правильный заголовок Content-Type и закодируйте полезную нагрузку с помощью UTF-8 : <code>application/json; charset=utf-8</code>. | ||
Строка 12: | Строка 12: | ||
Этот запрос является выпуском Early Adopter и может быть изменен несовместимым образом. | Этот запрос является выпуском Early Adopter и может быть изменен несовместимым образом. | ||
{| class="wikitable" | {| class="wikitable" | ||
| | |POST | ||
| | | | ||
* | * SaaS <nowiki>https://{идентификатор_вашей_среды}.live.dynatrace.com/api/v2/logs/ingest</nowiki> | ||
* Окружающая среда | * Окружающая среда АктивногоШлюза <nowiki>https://{ваш-активный-домен}:9999/e/{идентификатор-вашей-среды}/api/v2/logs/ingest</nowiki> | ||
|} | |} | ||
== Аутентификация == | == Аутентификация == | ||
Чтобы выполнить этот запрос, вам необходимо разрешение Ingest logs ( <code>logs.ingest</code>), назначенное вашему токену API. Чтобы узнать, как его получить и использовать, см. раздел Токены и аутентификация . | Чтобы выполнить этот запрос, вам необходимо разрешение '''Ingest logs''' ( <code>logs.ingest</code>), назначенное вашему токену API. Чтобы узнать, как его получить и использовать, см. раздел [[Токены и аутентификация (API)|Токены и аутентификация]] . | ||
== Параметры == | == Параметры == | ||
Строка 26: | Строка 26: | ||
!Тип | !Тип | ||
!Описание | !Описание | ||
! | !In | ||
! | !Необходимость | ||
|- | |- | ||
| | |body | ||
| | |LogMessageJson | ||
|Тело запроса. Содержит одно или несколько событий | |Тело запроса. Содержит одно или несколько событий лога для приема. | ||
Конечная точка принимает один из следующих типов полезной нагрузки, определенных заголовком Accept : | Конечная точка принимает один из следующих типов полезной нагрузки, определенных заголовком Accept : | ||
Строка 37: | Строка 37: | ||
* <code>text/plain</code>: поддерживает только одно событие журнала. | * <code>text/plain</code>: поддерживает только одно событие журнала. | ||
* <code>application/json</code>: поддерживает несколько событий журнала в одной полезной нагрузке. | * <code>application/json</code>: поддерживает несколько событий журнала в одной полезной нагрузке. | ||
| | |body | ||
|по желанию | |по желанию | ||
|} | |} | ||
Строка 43: | Строка 43: | ||
=== Объекты тела запроса === | === Объекты тела запроса === | ||
==== Объект | ==== Объект <code>LogMessageJson</code> ==== | ||
Сообщение | Сообщение лога в формате JSON. Используйте один объект, представляющий одно событие, или массив объектов, представляющих несколько событий. | ||
Объект может содержать следующие типы ключей без учета регистра (возможные значения ключей перечислены ниже): | Объект может содержать следующие типы ключей без учета регистра (возможные значения ключей перечислены ниже): | ||
* Отметка времени: | * Отметка времени: | ||
** Самая ранняя отметка времени для события | ** Самая ранняя отметка времени для события лога — это текущее время минус 24 часа. Если событие лога содержит отметку времени раньше, чем текущее время минус 24 часа, событие отбрасывается, а универсальный API приема лога возвращает <code>400</code>код ответа. | ||
** Последняя отметка времени для события | ** Последняя отметка времени для события лога — это текущее время плюс 12 часов. Если событие лога содержит отметку времени позже, чем текущее время плюс 12 часов, событие отбрасывается, а универсальный API приема лога возвращает <code>400</code>код ответа. | ||
** Поддерживаются следующие форматы: миллисекунды UTC, RFC3339 и RFC3164. Для отсутствующей метки времени используется текущая метка времени. Для неподдерживаемого формата временной метки используется текущая временная метка, а значение неподдерживаемого формата временной метки сохраняется в неиндексированном <code>unparsed_timestamp</code>атрибуте. | ** Поддерживаются следующие форматы: миллисекунды UTC, RFC3339 и RFC3164. Для отсутствующей метки времени используется текущая метка времени. Для неподдерживаемого формата временной метки используется текущая временная метка, а значение неподдерживаемого формата временной метки сохраняется в неиндексированном <code>unparsed_timestamp</code>атрибуте. | ||
* Строгость. Если не установлено, <code>NONE</code>используется. | * Строгость. Если не установлено, <code>NONE</code>используется. | ||
Строка 64: | Строка 64: | ||
Поддерживаемые ключи отметки времени: | Поддерживаемые ключи отметки времени: | ||
* @ | * @timestamp | ||
* _timestamp | * _timestamp | ||
* | * date | ||
* | * eventtime | ||
* | * published_date | ||
* syslog.timestamp | * syslog.timestamp | ||
* | * timestamp | ||
Поддерживаемые ключи содержимого: | Поддерживаемые ключи содержимого: | ||
* | * body | ||
* | * content | ||
* | * message | ||
* | * payload | ||
Поддерживаемые ключи серьезности: | Поддерживаемые ключи серьезности: | ||
* | * level | ||
* | * loglevel | ||
* | * severity | ||
* | * status | ||
* syslog.severity | * syslog.severity | ||
Поддерживаемые ключи семантических атрибутов: | Поддерживаемые ключи семантических атрибутов: | ||
* | * audit.action | ||
* | * audit.identity | ||
* | * audit.result | ||
* aws.account.id | * aws.account.id | ||
* aws.arn | * aws.arn | ||
Строка 100: | Строка 100: | ||
* aws.resource.type | * aws.resource.type | ||
* aws.service | * aws.service | ||
* | * azure.location | ||
* azure.resource.group | * azure.resource.group | ||
* azure.resource.id | * azure.resource.id | ||
Строка 108: | Строка 108: | ||
* cloud.account.id | * cloud.account.id | ||
* cloud.availability_zone | * cloud.availability_zone | ||
* | * cloud.provider | ||
* | * cloud.region | ||
* container.image.name | * container.image.name | ||
* container.image.tag | * container.image.tag | ||
* | * container.name | ||
* db.cassandra.keyspace | * db.cassandra.keyspace | ||
* db.connection_string | * db.connection_string | ||
* db.hbase.namespace | * db.hbase.namespace | ||
* db.jdbc.driver_classname | * db.jdbc.driver_classname | ||
* db.mongodb. | * db.mongodb.collection | ||
* db.mssql. | * db.mssql.instance_name | ||
* db.name | * db.name | ||
* db.operation | * db.operation | ||
Строка 125: | Строка 125: | ||
* db.system | * db.system | ||
* db.user | * db.user | ||
* | * device.address | ||
* dt.active_gate.group.name | * dt.active_gate.group.name | ||
* dt.active_gate.id | * dt.active_gate.id | ||
* dt.code.filepath | * dt.code.filepath | ||
* | * dt.code.func | ||
* | * dt.code.lineno | ||
* dt.code.ns | * dt.code.ns | ||
* dt.ctg.calltype | * dt.ctg.calltype | ||
* dt.ctg.extendmode | * dt.ctg.extendmode | ||
* dt.ctg.gatewayurl | * dt.ctg.gatewayurl | ||
* dt.ctg. | * dt.ctg.program | ||
* dt.ctg.rc | * dt.ctg.rc | ||
* dt.ctg. | * dt.ctg.requesttype | ||
* dt.ctg.serverid | * dt.ctg.serverid | ||
* dt.ctg.termid | * dt.ctg.termid | ||
Строка 174: | Строка 174: | ||
* dt.kubernetes.event.involved_object.kind | * dt.kubernetes.event.involved_object.kind | ||
* dt.kubernetes.event.involved_object.name | * dt.kubernetes.event.involved_object.name | ||
* dt.kubernetes.event. | * dt.kubernetes.event.reason | ||
* dt.kubernetes.node.name | * dt.kubernetes.node.name | ||
* dt.kubernetes.node.system_uuid | * dt.kubernetes.node.system_uuid | ||
Строка 181: | Строка 181: | ||
* dt.kubernetes.workload.name | * dt.kubernetes.workload.name | ||
* dt.network_zone.id | * dt.network_zone.id | ||
* dt.os. | * dt.os.description | ||
* dt.os.type | * dt.os.type | ||
* dt.process.commandline | * dt.process.commandline | ||
Строка 192: | Строка 192: | ||
* faas.instance | * faas.instance | ||
* faas.name | * faas.name | ||
* faas. | * faas.version | ||
* gcp.instance.id | * gcp.instance.id | ||
* gcp.instance.name | * gcp.instance.name | ||
Строка 198: | Строка 198: | ||
* gcp.region | * gcp.region | ||
* gcp.resource.type | * gcp.resource.type | ||
* | * host.hostname | ||
* host.id | * host.id | ||
* host.image.id | * host.image.id | ||
* host.image.name | * host.image.name | ||
* | * host.image.version | ||
* | * host.name | ||
* | * host.type | ||
* http.client_ip | * http.client_ip | ||
* http. | * http.flavor | ||
* http. | * http.host | ||
* http. | * http.method | ||
* http. | * http.route | ||
* http. | * http.scheme | ||
* http. | * http.server_name | ||
* http.status_code | * http.status_code | ||
* http.status_text | * http.status_text | ||
Строка 217: | Строка 217: | ||
* http.url | * http.url | ||
* k8s.cluster.name | * k8s.cluster.name | ||
* k8s.container. | * k8s.container.name | ||
* k8s.cronjob. | * k8s.cronjob.name | ||
* k8s.cronjob.uid | * k8s.cronjob.uid | ||
* k8s.daemonset.name | * k8s.daemonset.name | ||
Строка 227: | Строка 227: | ||
* k8s.job.uid | * k8s.job.uid | ||
* k8s.namespace.name | * k8s.namespace.name | ||
* k8s.pod. | * k8s.pod.name | ||
* k8s.pod.uid | * k8s.pod.uid | ||
* k8s.replicaset.name | * k8s.replicaset.name | ||
* k8s.replicaset.uid | * k8s.replicaset.uid | ||
* k8s.statefulset. | * k8s.statefulset.name | ||
* k8s.statefulset.uid | * k8s.statefulset.uid | ||
* | * log.source | ||
* net.host.ip | * net.host.ip | ||
* | * net.host.name | ||
* | * net.host.port | ||
* net.peer.ip | * net.peer.ip | ||
* net.peer.name | * net.peer.name | ||
* | * net.peer.port | ||
* | * net.transport | ||
* | * process.technology | ||
* service.instance.id | * service.instance.id | ||
* | * service.name | ||
* service.namespace | * service.namespace | ||
* | * service.version | ||
* snmp.trap_oid | * snmp.trap_oid | ||
* span_id | * span_id | ||
Строка 251: | Строка 251: | ||
* winlog.eventid | * winlog.eventid | ||
* winlog.level | * winlog.level | ||
* | * winlog.opcode | ||
* winlog. | * winlog.provider | ||
* winlog.task | * winlog.task | ||
Строка 290: | Строка 290: | ||
|- | |- | ||
|200 | |200 | ||
| | |SuccessEnvelope | ||
|Только часть входных событий была принята из-за ограничений размера события или проблем с анализом JSON. | |Только часть входных событий была принята из-за ограничений размера события или проблем с анализом JSON. | ||
|- | |- | ||
Строка 303: | Строка 303: | ||
|402 | |402 | ||
|ErrorEnvelope | |ErrorEnvelope | ||
|Не удалось. Вы не можете добавить больше | |Не удалось. Вы не можете добавить больше логов в хранилище, так как закончились единицы данных Дейвиса (DDU). Приобретите дополнительные DDU. | ||
|- | |- | ||
|404 | |404 | ||
|ErrorEnvelope | |ErrorEnvelope | ||
|Не удалось. Запрошенный ресурс не существует. Это может произойти, если | |Не удалось. Запрошенный ресурс не существует. Это может произойти, если АктивныйШлюз недоступен с включенным модулем Log Analytics Collector. | ||
|- | |- | ||
|413 | |413 | ||
Строка 315: | Строка 315: | ||
|429 | |429 | ||
|ErrorEnvelope | |ErrorEnvelope | ||
|Не удалось. Слишком много запросов. Это происходит, когда прием | |Не удалось. Слишком много запросов. Это происходит, когда прием логов отключен. | ||
|- | |- | ||
|501 | |501 | ||
|ErrorEnvelope | |ErrorEnvelope | ||
|Не удалось. Сервер либо не распознает метод запроса, либо не может выполнить запрос. Может произойти, если не включено индексированное хранилище | |Не удалось. Сервер либо не распознает метод запроса, либо не может выполнить запрос. Может произойти, если не включено индексированное хранилище логов. | ||
|} | |} | ||
=== Объекты тела ответа === | === Объекты тела ответа === | ||
==== Объект | ==== Объект <code>SuccessEnvelope</code> ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
!Элемент | !Элемент | ||
Строка 330: | Строка 330: | ||
!Описание | !Описание | ||
|- | |- | ||
| | |details | ||
| | |Success | ||
| - | | - | ||
|} | |} | ||
==== Объект | ==== Объект <code>Success</code> ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
!Элемент | !Элемент | ||
Строка 341: | Строка 341: | ||
!Описание | !Описание | ||
|- | |- | ||
| | |code | ||
| | |integer | ||
|Код состояния HTTP | |Код состояния HTTP | ||
|- | |- | ||
| | |message | ||
| | |string | ||
|Подробное сообщение | |Подробное сообщение | ||
|} | |} |
Текущая версия на 15:25, 27 января 2023
Отправляет пользовательские логи в Dynatrace.
Для этой конечной точки требуется АктивныйШлюз с включенным модулем сбора аналитики логов . Этот модуль включен по умолчанию на всех ваших АктивныхШлюзах.
Запрос использует один из следующих типов полезной нагрузки:
text/plain
— ограничено одним событием в логе.application/json
— поддерживает несколько событий лога в одной полезной нагрузке.
Обязательно установите правильный заголовок Content-Type и закодируйте полезную нагрузку с помощью UTF-8 : application/json; charset=utf-8
.
Этот запрос является выпуском Early Adopter и может быть изменен несовместимым образом.
POST |
|
Аутентификация
Чтобы выполнить этот запрос, вам необходимо разрешение Ingest logs ( logs.ingest
), назначенное вашему токену API. Чтобы узнать, как его получить и использовать, см. раздел Токены и аутентификация .
Параметры
Параметр | Тип | Описание | In | Необходимость |
---|---|---|---|---|
body | LogMessageJson | Тело запроса. Содержит одно или несколько событий лога для приема.
Конечная точка принимает один из следующих типов полезной нагрузки, определенных заголовком Accept :
|
body | по желанию |
Объекты тела запроса
Объект LogMessageJson
Сообщение лога в формате JSON. Используйте один объект, представляющий одно событие, или массив объектов, представляющих несколько событий.
Объект может содержать следующие типы ключей без учета регистра (возможные значения ключей перечислены ниже):
- Отметка времени:
- Самая ранняя отметка времени для события лога — это текущее время минус 24 часа. Если событие лога содержит отметку времени раньше, чем текущее время минус 24 часа, событие отбрасывается, а универсальный API приема лога возвращает
400
код ответа. - Последняя отметка времени для события лога — это текущее время плюс 12 часов. Если событие лога содержит отметку времени позже, чем текущее время плюс 12 часов, событие отбрасывается, а универсальный API приема лога возвращает
400
код ответа. - Поддерживаются следующие форматы: миллисекунды UTC, RFC3339 и RFC3164. Для отсутствующей метки времени используется текущая метка времени. Для неподдерживаемого формата временной метки используется текущая временная метка, а значение неподдерживаемого формата временной метки сохраняется в неиндексированном
unparsed_timestamp
атрибуте.
- Самая ранняя отметка времени для события лога — это текущее время минус 24 часа. Если событие лога содержит отметку времени раньше, чем текущее время минус 24 часа, событие отбрасывается, а универсальный API приема лога возвращает
- Строгость. Если не установлено,
NONE
используется. - Содержание. Если ключ содержимого не задан, весь JSON анализируется как содержимое.
- Семантический признак. Поддерживаются только значения этого
String
типа. Семантические атрибуты индексируются и могут использоваться в запросах. Они также отображаются в агрегатах (фасетах). Если встречается неподдерживаемый ключ, он не индексируется и не может использоваться в индексировании и агрегировании.
Значением объекта может быть одна константа или, в случае семантического атрибута, массив констант. Длина значения ограничена. Любой контент, превышающий лимит, обрезается. Ограничения по умолчанию:
- Атрибуты: до 50 атрибутов.
- Содержимое: 8 192 байта.
- Семантический атрибут: 250 байт на значение, до 32 значений атрибута
Поддерживаемые ключи отметки времени:
- @timestamp
- _timestamp
- date
- eventtime
- published_date
- syslog.timestamp
- timestamp
Поддерживаемые ключи содержимого:
- body
- content
- message
- payload
Поддерживаемые ключи серьезности:
- level
- loglevel
- severity
- status
- syslog.severity
Поддерживаемые ключи семантических атрибутов:
- audit.action
- audit.identity
- audit.result
- aws.account.id
- aws.arn
- aws.log_group
- aws.log_stream
- aws.region
- aws.resource.id
- aws.resource.type
- aws.service
- azure.location
- azure.resource.group
- azure.resource.id
- azure.resource.name
- azure.resource.type
- azure.subscription
- cloud.account.id
- cloud.availability_zone
- cloud.provider
- cloud.region
- container.image.name
- container.image.tag
- container.name
- db.cassandra.keyspace
- db.connection_string
- db.hbase.namespace
- db.jdbc.driver_classname
- db.mongodb.collection
- db.mssql.instance_name
- db.name
- db.operation
- db.redis.database_index
- db.statement
- db.system
- db.user
- device.address
- dt.active_gate.group.name
- dt.active_gate.id
- dt.code.filepath
- dt.code.func
- dt.code.lineno
- dt.code.ns
- dt.ctg.calltype
- dt.ctg.extendmode
- dt.ctg.gatewayurl
- dt.ctg.program
- dt.ctg.rc
- dt.ctg.requesttype
- dt.ctg.serverid
- dt.ctg.termid
- dt.ctg.transid
- dt.ctg.userid
- dt.entity.cloud_application
- dt.entity.cloud_application_instance
- dt.entity.cloud_application_namespace
- dt.entity.container_group
- dt.entity.container_group_instance
- dt.entity.custom_device
- dt.entity.host
- dt.entity.kubernetes_cluster
- dt.entity.kubernetes_node
- dt.entity.process_group
- dt.entity.process_group_instance
- dt.event.group_label
- dt.event.key
- dt.events.root_cause_relevant
- dt.exception.messages
- dt.exception.serialized_stacktraces
- dt.exception.types
- dt.extension.config.id
- dt.extension.ds
- dt.extension.name
- dt.extension.status
- dt.host.ip
- dt.host.smfid
- dt.host.snaid
- dt.host_group.id
- dt.http.application_id
- dt.http.context_root
- dt.kubernetes.cluster.id
- dt.kubernetes.cluster.name
- dt.kubernetes.config.id
- dt.kubernetes.event.involved_object.kind
- dt.kubernetes.event.involved_object.name
- dt.kubernetes.event.reason
- dt.kubernetes.node.name
- dt.kubernetes.node.system_uuid
- dt.kubernetes.topmost_controller.kind
- dt.kubernetes.workload.kind
- dt.kubernetes.workload.name
- dt.network_zone.id
- dt.os.description
- dt.os.type
- dt.process.commandline
- dt.process.executable
- dt.process.name
- dt.source_entity
- dt.source_entity_name
- dt.source_entity_type
- faas.id
- faas.instance
- faas.name
- faas.version
- gcp.instance.id
- gcp.instance.name
- gcp.project.id
- gcp.region
- gcp.resource.type
- host.hostname
- host.id
- host.image.id
- host.image.name
- host.image.version
- host.name
- host.type
- http.client_ip
- http.flavor
- http.host
- http.method
- http.route
- http.scheme
- http.server_name
- http.status_code
- http.status_text
- http.target
- http.url
- k8s.cluster.name
- k8s.container.name
- k8s.cronjob.name
- k8s.cronjob.uid
- k8s.daemonset.name
- k8s.daemonset.uid
- k8s.deployment.name
- k8s.deployment.uid
- k8s.job.name
- k8s.job.uid
- k8s.namespace.name
- k8s.pod.name
- k8s.pod.uid
- k8s.replicaset.name
- k8s.replicaset.uid
- k8s.statefulset.name
- k8s.statefulset.uid
- log.source
- net.host.ip
- net.host.name
- net.host.port
- net.peer.ip
- net.peer.name
- net.peer.port
- net.transport
- process.technology
- service.instance.id
- service.name
- service.namespace
- service.version
- snmp.trap_oid
- span_id
- trace_id
- winlog.eventid
- winlog.level
- winlog.opcode
- winlog.provider
- winlog.task
Объект не предоставляет никаких параметров.
JSON-модель тела запроса
Это модель тела запроса, показывающая возможные элементы. Его необходимо настроить для использования в реальном запросе.
[
{
"content": "Exception: Custom error log sent via Generic Log Ingest",
"log.source": "/var/log/syslog",
"timestamp": "2022-01-17T22:12:31.0000",
"severity": "error",
"custom.attribute": "attribute value"
},
{
"content": "Exception: Custom error log sent via Generic Log Ingest",
"log.source": "/var/log/syslog",
"timestamp": "2022-01-17T22:12:35.0000"
},
{
"content": "Exception: Custom error log sent via Generic Log Ingest",
"log.source": "/var/log/syslog"
},
{
"content": "Exception: Custom error log sent via Generic Log Ingest"
}
]
Ответ
Коды ответов
Код | Тип | Описание |
---|---|---|
200 | SuccessEnvelope | Только часть входных событий была принята из-за ограничений размера события или проблем с анализом JSON. |
204 | Успех. Ответ не имеет тела. | |
400 | ErrorEnvelope | Не удалось. Ввод недействителен. |
402 | ErrorEnvelope | Не удалось. Вы не можете добавить больше логов в хранилище, так как закончились единицы данных Дейвиса (DDU). Приобретите дополнительные DDU. |
404 | ErrorEnvelope | Не удалось. Запрошенный ресурс не существует. Это может произойти, если АктивныйШлюз недоступен с включенным модулем Log Analytics Collector. |
413 | ErrorEnvelope | Не удалось. Размер полезной нагрузки запроса слишком велик. Это может произойти, когда размер полезной нагрузки в байтах превышает ограничение или когда принятые полезные данные представляют собой массив JSON, размер которого превышает ограничение. |
429 | ErrorEnvelope | Не удалось. Слишком много запросов. Это происходит, когда прием логов отключен. |
501 | ErrorEnvelope | Не удалось. Сервер либо не распознает метод запроса, либо не может выполнить запрос. Может произойти, если не включено индексированное хранилище логов. |
Объекты тела ответа
Объект SuccessEnvelope
Элемент | Тип | Описание |
---|---|---|
details | Success | - |
Объект Success
Элемент | Тип | Описание |
---|---|---|
code | integer | Код состояния HTTP |
message | string | Подробное сообщение |
JSON-модель тела ответа
{
"details": {
"code": 1,
"message": "string"
}
}