Visão geral da ingestão de registros OTLP

Este documento apresenta o uso da API Telemetry (OTLP), telemetry.googleapis.com, para a ingestão de registros formatados em OTLP no Cloud Logging, onde são armazenados como entradas de registro. Por exemplo, consulte Gravar registros formatados em OTLP na API Telemetry.

Também é possível enviar registros para a API Telemetry de aplicativos que usam SDKs ou um coletor OpenTelemetry.

Para informações sobre a API Telemetry para registros, métricas e rastreamentos, consulte a referência da API Telemetry (OTLP).

Suporte a protocolo

O endpoint OTLP é compatível com todos os protocolos OTLP, incluindo http/protobuf, http/json e grpc. Ao exportar de um coletor do OpenTelemetry, você pode usar qualquer um dos protocolos. No entanto, devido à falta de suporte para atualização dinâmica de tokens na maioria dos exportadores de SDK, se você estiver exportando diretamente dos SDKs, recomendamos usar apenas o exportador gRPC OTLP, não os exportadores HTTP.

Faturamento

Ao usar a API Telemetry para ingerir registros, talvez você note uma mudança nos valores de armazenamento e faturamento do Cloud Logging. Uma solicitação de registro formatada em OTLP em JSON tem a seguinte estrutura geral:

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

Cada item em cada matriz logRecords se torna uma única entrada de registro do Cloud Logging. As maiores mudanças no armazenamento e no faturamento do seu projeto Google Cloud ocorrem quando as duas condições a seguir são verdadeiras:

  • O campo resource contém um grande número de atributos obrigatórios para chaves e valores. Esses atributos são usados para determinar o recurso monitorado no LogEntry resultante.

    O recurso monitorado consiste em um tipo de recurso monitorado do Cloud Logging e valores para os rótulos associados. Alguns tipos de recursos monitorados têm poucos rótulos, mas outros têm muitos. Para mais informações sobre quais atributos são necessários para a ingestão de registros formatados em OTLP, consulte Mapeamento de atributos OTLP para tipo de recurso.

  • O campo scopeLogs contém um grande número de itens nas matrizes logRecords.

Para oferecer suporte à ingestão de registros formatados em OTLP, a estrutura LogEntry do Cloud Logging contém um campo adicional, otel. Os modelos de dados do OTLP e do Cloud Logging não são uma correspondência perfeita. Por isso, o campo otel contém uma cópia do recurso, do escopo e das entidades do OTLP da solicitação OTLP recebida.

Por exemplo, se você enviar um resourceLog OTLP como o seguinte para a API Telemetry, cada entrada de registro resultante vai conter um campo resource (para o recurso monitorado) e um campo otel, conforme mostrado nas outras guias:

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"
      }
    },
   ...
  }

O Cloud Logging não tem como vincular outros recursos a uma entrada de registro. Portanto, todas as informações sobre recursos, escopos e entidades do OTLP precisam ser copiadas para cada entrada de registro.

Essa duplicação preserva o máximo de informações possível da solicitação original na entrada de registro resultante. Mas a duplicação também significa que o campo otel repete informações de recursos também usadas no campo monitored-resource (resource) da entrada de registro. O campo resource da entrada de registro é sujeito a cobrança, mas as informações de recursos duplicadas no campo otel não são.

Quando você inclui um grande número de registros de registros na solicitação OTLP, as informações OTLP precisam ser copiadas para cada entrada de registro resultante, nos campos resource e otel. Embora o armazenamento das cópias do campo otel não seja cobrado, o armazenamento das cópias adicionais do campo resource é. Quando você inclui um grande número de logRecords OTLP em uma solicitação, o número de campos resource sujeitos a cobrança nas entradas de registro aumenta proporcionalmente ao número de logRecords OTLP por resource por solicitação.

Para minimizar as informações adicionais armazenadas, recomendamos enviar um item logRecord por solicitação.

Limites e cotas

Para informações sobre limites e cotas associados ao uso da API Telemetry para geração de registros, consulte Limites e cotas para ingestão de registros.

As cotas e os limites do Cloud Logging também se aplicam ao usar a API Telemetry para ingestão de registros.