Descripción general de la transferencia de registros de OTLP

En este documento, se presenta el uso de la API de Telemetry (OTLP), telemetry.googleapis.com, para la transferencia de registros con formato de OTLP a Cloud Logging, donde se almacenan como entradas de registro. Para ver un ejemplo, consulta Escribe registros con formato de OTLP en la API de Telemetry.

También puedes enviar registros a la API de Telemetry desde aplicaciones que usan SDKs o con un recopilador de OpenTelemetry.

Para obtener información sobre la API de Telemetry para registros, métricas y seguimientos, consulta la referencia de la API de Telemetry (OTLP).

Compatibilidad con protocolos

El extremo de OTLP admite todos los protocolos de OTLP, incluidos http/protobuf, http/json y grpc. Cuando exportas desde un recopilador de OpenTelemetry, puedes usar cualquiera de los protocolos. Sin embargo, debido a la falta de compatibilidad con la actualización dinámica de tokens en la mayoría de los exportadores de SDK, si exportas directamente desde los SDKs, te recomendamos que uses solo el exportador de OTLP de gRPC, no los exportadores de HTTP.

Facturación

Es posible que veas un cambio en los valores de almacenamiento y facturación de Cloud Logging cuando uses la API de Telemetry para transferir registros. Una solicitud de registro con formato OTLP en JSON tiene la siguiente estructura general:

"resourceLogs": [
    {
      "resource": {
        "attributes": [...]
      },
      "scopeLogs": [
        {
          "scope": { ...}
          "logRecords": [...]
        }
      ]
    }
]

Cada elemento de cada matriz logRecords se convierte en una sola entrada de registro de Cloud Logging. Los cambios más importantes en el almacenamiento y la facturación de tu proyecto Google Cloud se producen cuando se cumplen las siguientes condiciones:

  • El campo resource contiene una gran cantidad de atributos obligatorios para las claves y los valores. Estos atributos de recursos se usan para determinar el recurso supervisado en el LogEntry resultante.

    El recurso supervisado consta de un tipo de recurso supervisado de Cloud Logging y valores para sus etiquetas asociadas. Algunos tipos de recursos supervisados tienen muy pocas etiquetas, pero otros tienen muchas. Para obtener más información sobre qué atributos son necesarios para la transferencia de registros con formato de OTLP, consulta Asignación de atributos de OTLP a tipos de recursos.

  • El campo scopeLogs contiene una gran cantidad de elementos en los arrays logRecords.

Para admitir la transferencia de registros con formato de OTLP, la estructura LogEntry de Cloud Logging contiene un campo adicional, otel. Los modelos de datos de OTLP y Cloud Logging no coinciden perfectamente, por lo que el campo otel contiene una copia de los recursos, los alcances y las entidades de OTLP de la solicitud de OTLP entrante.

Por ejemplo, si envías un OTLP resourceLog como el siguiente a la API de Telemetry, cada entrada de registro resultante contendrá un campo resource (para el recurso supervisado) y un campo otel, como se muestra en las otras pestañas:

resourceLog

{
  "resourceLogs": [
    {
      "resource": {
        "attributes": [
          {
            "key": "gcp.project_id",
            "value": { "stringValue": "PROJECT_ID" }
          },
          {
            "key": "gcp.resource_type",
            "value": { "stringValue": "global" }
          }
        ]
      },
      "scopeLogs": [
        {
          "scope": {
            "name": "my.library",
            "version": "1.0.0",
            "attributes": [
              {
                "key": "my.scope.attribute",
                "value": { "stringValue": "some scope attribute" }
              }
            ]
          },
          "logRecords": [ ... ]
         }
       ]
     }
   ]
}

resource

  {
    ...
    "resource": {
      "labels": {
        "project_id": "PROJECT_ID"
      },
      "type": "global"
    },
    ...
}

otel

  {
    ...
    "otel": {
      "resource": {
        "attributes": {
          "gcp.project_id": "PROJECT_ID",
          "gcp.resource_type": "global"
        }
      },
      "scope": {
        "attributes": {
          "my.scope.attribute": "some scope attribute"
        },
        "name": "my.library",
        "version": "1.0.0"
      }
    },
   ...
  }

Cloud Logging no tiene forma de vincular otros recursos a una entrada de registro, por lo que toda la información sobre los recursos, los alcances y las entidades de OTLP se debe copiar en cada entrada de registro.

Esta duplicación conserva la mayor cantidad posible de información de la solicitud original en la entrada de registro resultante. Sin embargo, la duplicación también significa que el campo otel repite la información del recurso que también se usa en el campo recurso supervisado (resource) de la entrada de registro. El campo resource de la entrada de registro es facturable, pero la información del recurso duplicada en el campo otel no lo es.

Cuando incluyes una gran cantidad de registros de registro en la solicitud de OTLP, la información de OTLP se debe copiar en cada entrada de registro resultante, en los campos resource y otel. Si bien el almacenamiento de las copias del campo otel no es facturable, sí lo es el almacenamiento de las copias adicionales del campo resource. Cuando incluyes una gran cantidad de logRecords de OTLP en una solicitud, la cantidad de campos resource facturables en tus entradas de registro aumenta en proporción a la cantidad de logRecords de OTLP por resource por solicitud.

Para minimizar la información adicional almacenada, te recomendamos que envíes un elemento logRecord por solicitud.

Límites y cuotas

Para obtener información sobre los límites y las cuotas asociados con el uso de la API de Telemetry para el registro, consulta Límites y cuotas para la transferencia de registros.

Los límites y las cuotas de Cloud Logging también se aplican cuando se usa la API de Telemetry para la transferencia de registros.