Размещение лога загрузки: различия между версиями
ENetrebin (обсуждение | вклад)  (Новая страница: «Отправляет пользовательские журналы в Ключ-АСТРОМ.  Для этой конечной точки требуется Act...»)  | 
				ENetrebin (обсуждение | вклад)   | 
				||
| Строка 1: | Строка 1: | ||
Отправляет пользовательские   | Отправляет пользовательские логи в Ключ-АСТРОМ.  | ||
Для этой конечной точки требуется   | Для этой конечной точки требуется АктивныйШлюз с включенным модулем сбора аналитики журналов . Этот модуль включен по умолчанию на всех ваших АктивныхШлюзах.  | ||
Запрос использует один из следующих типов полезной нагрузки:  | Запрос использует один из следующих типов полезной нагрузки:  | ||
| Строка 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  | ||
|по желанию  | |по желанию  | ||
|}  | |}  | ||
| Строка 44: | Строка 44: | ||
==== Объект _ <code>LogMessageJson</code> ====  | ==== Объект _ <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.  | ||
|-  | |-  | ||
| Строка 307: | Строка 307: | ||
|404  | |404  | ||
|ErrorEnvelope  | |ErrorEnvelope  | ||
|Не удалось. Запрошенный ресурс не существует. Это может произойти, если   | |Не удалось. Запрошенный ресурс не существует. Это может произойти, если АктивныйШлюз недоступен с включенным модулем Log Analytics Collector.  | ||
|-  | |-  | ||
|413  | |413  | ||
| Строка 319: | Строка 319: | ||
|501  | |501  | ||
|ErrorEnvelope  | |ErrorEnvelope  | ||
|Не удалось. Сервер либо не распознает метод запроса, либо не может выполнить запрос. Может произойти, если не включено индексированное хранилище   | |Не удалось. Сервер либо не распознает метод запроса, либо не может выполнить запрос. Может произойти, если не включено индексированное хранилище логов.  | ||
|}  | |}  | ||
| Строка 330: | Строка 330: | ||
!Описание  | !Описание  | ||
|-  | |-  | ||
|  | |details  | ||
|  | |Success  | ||
| -  | | -  | ||
|}  | |}  | ||
| Строка 341: | Строка 341: | ||
!Описание  | !Описание  | ||
|-  | |-  | ||
|  | |code  | ||
|  | |integer  | ||
|Код состояния HTTP  | |Код состояния HTTP  | ||
|-  | |-  | ||
|  | |message  | ||
|  | |string  | ||
|Подробное сообщение  | |Подробное сообщение  | ||
|}  | |}  | ||
Версия 15:02, 5 октября 2022
Отправляет пользовательские логи в Ключ-АСТРОМ.
Для этой конечной точки требуется АктивныйШлюз с включенным модулем сбора аналитики журналов . Этот модуль включен по умолчанию на всех ваших АктивныхШлюзах.
Запрос использует один из следующих типов полезной нагрузки:
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"
  }
}