Panoramica dell'importazione dei log OTLP

Questo documento introduce l'utilizzo dell'API Telemetry (OTLP), telemetry.googleapis.com, per l'importazione di log in formato OTLP in Cloud Logging, dove vengono archiviati come voci di log. Per un esempio, consulta Scrivere log in formato OTLP nell'API Telemetry.

Puoi anche inviare log all'API Telemetry da applicazioni che utilizzano SDK o utilizzando un collettore OpenTelemetry.

Per informazioni sull'API Telemetry per log, metriche e tracce, consulta il riferimento API Telemetry (OTLP).

Supporto del protocollo

L'endpoint OTLP supporta tutti i protocolli OTLP, inclusi http/protobuf, http/json e grpc. Quando esporti da un OpenTelemetry Collector, puoi utilizzare uno qualsiasi dei protocolli. Tuttavia, a causa della mancanza di supporto per l'aggiornamento dinamico dei token nella maggior parte degli esportatori SDK, se esegui l'esportazione direttamente dagli SDK, ti consigliamo di utilizzare solo l'esportatore gRPC OTLP, non gli esportatori HTTP,

Fatturazione

Potresti notare una modifica ai valori di archiviazione e fatturazione di Cloud Logging quando utilizzi l'API Telemetry per l'importazione dei log. Una richiesta di log in formato OTLP in JSON ha la seguente struttura generale:

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

Ogni elemento di ogni array logRecords diventa una singola voce di log di Cloud Logging. Le modifiche più significative all'archiviazione e alla fatturazione per il tuo progetto Google Cloud si verificano quando sono vere entrambe le seguenti condizioni:

  • Il campo resource contiene un numero elevato di attributi obbligatori per chiavi e valori. Questi attributi della risorsa vengono utilizzati per determinare la risorsa monitorata nel LogEntry risultante.

    La risorsa monitorata è costituita da un tipo di risorsa monitorata di Cloud Logging e dai valori delle etichette associate. Alcuni tipi di risorse monitorate hanno pochissime etichette, mentre altri tipi di risorse ne hanno molte. Per ulteriori informazioni sugli attributi necessari per l'importazione dei log in formato OTLP, consulta Mappatura degli attributi OTLP al tipo di risorsa.

  • Il campo scopeLogs contiene un numero elevato di elementi negli array logRecords.

Per supportare l'importazione di log in formato OTLP, la struttura LogEntry di Cloud Logging contiene un campo aggiuntivo, otel. I modelli di dati OTLP e Cloud Logging non corrispondono perfettamente, quindi il campo otel contiene una copia delle risorse, dell'ambito e delle entità OTLP della richiesta OTLP in entrata.

Ad esempio, se invii un OTLP resourceLog come il seguente all'API Telemetry, ogni voce di log risultante contiene un campo resource (per la risorsa monitorata) e un campo otel, come mostrato nelle altre schede:

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 non ha modo di collegare altre risorse a una voce di log, quindi tutte le informazioni su risorse, ambiti ed entità OTLP devono essere copiate in ogni voce di log.

Questa duplicazione conserva il maggior numero possibile di informazioni dalla richiesta originale nella voce di log risultante. Tuttavia, la duplicazione significa anche che il campo otel ripete le informazioni sulle risorse utilizzate anche nel campo monitored-resource (resource) della voce di log. Il campo resource della voce di log è addebitabile, ma le informazioni sulla risorsa duplicate nel campo otel non lo sono.

Quando includi un numero elevato di record di log nella richiesta OTLP, le informazioni OTLP devono essere copiate in ogni voce di log risultante, nei campi resource e otel. Anche se lo spazio di archiviazione per le copie del campo otel non è addebitabile, lo è per le copie aggiuntive del campo resource. Quando includi un numero elevato di logRecords OTLP in una richiesta, il numero di campi resource addebitabili nelle voci di log aumenta in proporzione al numero di logRecords OTLP per resource per richiesta.

Per ridurre al minimo le informazioni aggiuntive memorizzate, ti consigliamo di inviare un elemento logRecord per richiesta.

Limiti e quote

Per informazioni sui limiti e sulle quote associati all'utilizzo dell'API Telemetry per la registrazione, vedi Limiti e quote per l'importazione dei log.

Si applicano anche le quote e i limiti di Cloud Logging quando utilizzi l'API Telemetry per l'importazione dei log.