Puoi importare dati di log, metriche e tracce in formato OTLP in Google Cloud Observability utilizzando l'API Telemetry (OTLP), che implementa il protocollo OpenTelemetry. Questa API ti consente di raccogliere dati di telemetria indipendenti dal fornitore dagli SDK e dai collector OpenTelemetry senza utilizzare esportatori Google Cloud personalizzati.
Quando invii la telemetria al tuo progetto utilizzando l'API Telemetry, Google Cloud Observability elabora ogni indicatore come segue:
- Dati di log: converte i record di log OTLP in voci di log e li indirizza per l'archiviazione.
- Dati delle metriche: mappa i dati delle metriche alle serie temporali di Prometheus in Cloud Monitoring.
- Dati di traccia: archivia le tracce distribuite in un formato generalmente coerente con OTLP.
Se esegui workload su Google Kubernetes Engine, puoi utilizzare OpenTelemetry gestito per GKE anziché eseguire il deployment e la gestione manuale di un Collector OpenTelemetry.
Supporto dei protocolli
L'endpoint OTLP supporta tutti i protocolli di trasporto e serializzazione OTLP, inclusi http/protobuf, http/json e grpc. Quando esporti direttamente dalle applicazioni utilizzando gli SDK, ti consigliamo di utilizzare l'esportatore OTLP gRPC anziché gli esportatori HTTP, perché la maggior parte degli esportatori SDK non supporta l'aggiornamento dinamico dei token.
Autenticazione
Devi configurare gli esportatori con le credenziali necessarie per inviare i dati al tuo progetto Google Cloud . Ad esempio, quando utilizzi i raccoglitori, in genere utilizzi l'estensione googleclientauth per l'autenticazione con le credenziali Google.
Per un esempio di autenticazione quando utilizzi l'esportazione diretta dei dati di traccia, consulta Configura l'autenticazione. Questo esempio illustra come configurare l'esportatore con le tue Google Cloud Credenziali predefinite dell'applicazione (ADC) e aggiungere una libreria di autenticazione Google specifica per il linguaggio alla tua applicazione.
Per inviare i dati di telemetria al tuo progetto Google Cloud utilizzando l'API Telemetry, devi anche:
Configura un progetto di quota. Per scoprire di più, consulta Imposta il progetto di quota.
Concedi i seguenti ruoli Identity and Access Management (IAM) all'utente o al account di servizio utilizzato dall'applicazione:
- Ruolo Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) nel progetto di quota. - Ruolo Cloud Telemetry Writer (
roles/telemetry.writer) sul progetto. Questo ruolo consente alla tua applicazione di scrivere dati di log, metriche e tracce.
- Ruolo Service Usage Consumer (
Importazione OTLP
Questa sezione descrive come i dati di log, metriche e tracce vengono convertiti da OTLP in strutture di dati di Google Cloud Observability.
Importazione dati di log
Quando utilizzi l'API Telemetry per importare i log in formato OTLP, i dati di log vengono convertiti in voci di log di Cloud Logging. Una richiesta di log in entrata formattata in 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. Gli attributi resource determinano la risorsa monitorata nel LogEntry risultante. Per saperne di più sugli attributi richiesti per l'importazione dei log in formato OTLP, consulta Mappatura degli attributi OTLP al tipo di risorsa.
Per supportare l'importazione di log formattati in OTLP, la struttura LogEntry di Cloud Logging contiene un campo aggiuntivo, otel. Poiché i modelli di dati OTLP e Cloud Logging differiscono nella struttura, il campo otel conserva una copia dei metadati della risorsa, dell'ambito e dell'entità della richiesta OTLP in entrata.
Ad esempio, se invii un payload OTLP resourceLogs 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:
resourceLogs
{
"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"
}
},
...
}
Poiché le voci di log di Cloud Logging sono autonome e non si collegano a schemi di risorse esterni, tutti i metadati delle risorse, degli ambiti e delle entità OTLP vengono copiati in ogni voce di log.
Importazione dati delle metriche
OTLP per le metriche di Prometheus funziona solo se utilizzi OpenTelemetry Collector versione 0.140.0 o successive.
Quando le metriche vengono importate in Cloud Monitoring utilizzando un
OpenTelemetry Collector e l'esportatore otlphttp o inviate direttamente utilizzando
un SDK OpenTelemetry, le metriche OTLP vengono mappate alle strutture delle metriche
di Cloud Monitoring. Per informazioni su queste mappature, consulta quanto segue:
- Mappatura tra le risorse OTLP e le risorse monitorate di Cloud Monitoring.
- Mappatura tra le metriche OTLP e le metriche di Cloud Monitoring.
Google Cloud Observability converte le metriche nel formato delle serie temporali di Prometheus. I nomi delle metriche non devono avere un dominio o devono avere il dominio prometheus.googleapis.com.
Dopo la conversione, il nome della metrica include il prefisso prometheus.googleapis.com e un suffisso aggiuntivo, in base al tipo di punto OTLP. La metrica Cloud Monitoring risultante ha la seguente struttura:
prometheus.googleapis.com/{metric_name}/{suffix}
Inoltre, per ogni risorsa OpenTelemetry univoca, la conversione aggiunge una metrica target_info che contiene tutti gli attributi della risorsa, ad eccezione di service.name, service.instance.id e service.namespace.
Poiché i nomi delle metriche e le chiavi delle etichette in Cloud Monitoring non supportano l'intero set di caratteri UTF-8, i dati delle metriche possono essere rifiutati:
- I nomi delle metriche che non sono conformi all'espressione regolare
[a-zA-Z][a-zA-Z0-9_:./-]*vengono rifiutati. Gli unici caratteri speciali consentiti nei nomi delle metriche sono quelli del set_:./-. - I punti dati contenenti attributi (ovvero chiavi di etichetta) che non sono conformi all'espressione regolare
[a-zA-Z_][a-zA-Z0-9_.]*vengono rifiutati. Gli unici caratteri speciali consentiti nelle chiavi delle etichette sono quelli del set_.. Tutti i caratteri speciali sono consentiti nei valori delle etichette.
Per evitare il rifiuto delle metriche per questi motivi, utilizza la funzione replace_pattern per trasformare i nomi e gli attributi delle metriche.
Trace dei importazione dati di traccia
Indipendentemente dal fatto che utilizzi l'API Telemetry o l'Cloud Trace API, i dati di traccia in entrata vengono archiviati in un formato coerente con OTLP. Tuttavia, ti consigliamo di utilizzare l'API Telemetry perché fornisce quote di importazione più elevate rispetto all'Cloud Trace API.
Di seguito è riportato un esempio di dati di traccia che potrebbero essere inviati da un'applicazione al tuo progetto Google Cloud :
{
"resourceSpans": [
{
"resource": {
"attributes": [...]
},
"scopeSpans": [
{
"scope": { ...},
"spans": [...]
}
]
}
]
}
Ogni elemento di ogni array scopeSpans.spans diventa un singolo intervallo archiviato:
- Il campo
resourcedi ogni intervallo contiene una copia dei datiresourceSpans.resource.attributes. - Il campo
instrumentation_scopedi ogni intervallo contiene una copia dei datiscopeSpans.scope. - Ogni intervallo corrisponde a una voce nell'array
scopeSpans.spans. Campi cometraceId,spanIdekindvengono mappati a campi con nomi simili nello schema di traccia.
Per saperne di più, consulta i seguenti documenti:
Fatturazione
La fatturazione per i dati di log, metriche e tracce importati utilizzando l'API Telemetry dipende dal segnale di telemetria. Per informazioni complete, consulta la pagina Fatturazione.
Fatturazione dei dati di log
Potresti notare una variazione dei valori di archiviazione e fatturazione di Cloud Logging quando utilizzi l'API Telemetry per importare i log a causa di una variazione del volume dei log.
Le modifiche più significative allo spazio di archiviazione e alla fatturazione per il tuo progetto Google Cloud si verificano quando sono soddisfatte entrambe le seguenti condizioni:
- Il campo
resourcecontiene attributi con cardinalità elevata o un numero elevato di attributi. Questi attributi della risorsa determinano la risorsa monitorata nelLogEntryrisultante. - Il campo
scopeLogscontiene un numero elevato di elementi negli arraylogRecords. I campiscopeLogs.scopevengono copiati nel campootelper ogni singola voce di log.
Poiché i metadati di questa risorsa e di questo ambito vengono copiati in ogni singola voce di log, il volume dei log archiviati può aumentare.
Per ridurre al minimo il volume di archiviazione, ti consigliamo di:
- Utilizza un processore OpenTelemetry Collector, ad esempio un processore
transform, per eliminare gli attributi di risorsa o ambito non necessari prima di esportare i dati. - Se non hai bisogno di conservare i metadati aggiuntivi nel campo
otel, utilizza l'opzione di mappatura precedente,gcp.use_legacy_mapping, che impedisce la compilazione del campootel.
Fatturazione dei dati delle metriche
La fatturazione per le metriche OTLP viene contabilizzata nello SKU "Prometheus Samples Ingested", lo stesso utilizzato per le metriche di Google Cloud Managed Service per Prometheus.
Fatturazione dei dati di traccia
L'API che utilizzi per inviare i dati di traccia al tuo progetto non influisce sul modo in cui vengono calcolati gli addebiti per questi dati.
Esecuzione di query sui dati di log, metriche e tracce
Puoi utilizzare le pagine di esplorazione (Esplora log, Metrics Explorer ed Esplora tracce) per eseguire query sui dati di log, metriche e tracce. Puoi anche utilizzare la pagina Observability Analytics per analizzare i dati di log e tracce utilizzando SQL.
I seguenti suggerimenti potrebbero essere utili quando esegui query sui dati delle metriche utilizzando Metrics Explorer:
Importante: per eseguire query su nomi di metriche e chiavi di etichette con caratteri speciali diversi dai due punti (
:) e dal trattino basso (_), devi racchiuderli tra parentesi graffe ({}) e virgolette ("), in base alla specifica UTF-8 di PromQL. Ad esempio, le seguenti sono query valide:{"my.metric.name"}{"my.metric.name", "label.key.KEY"="value"}
Se mantieni l'etichetta
lequando esegui query su istogrammi esponenziali, potresti ottenere risultati imprevisti. Le queryhistogram_quantile(.99, sum by (le) (metric))più tipiche dovrebbero funzionare.In determinate circostanze, le metriche delta potrebbero non essere interrogate correttamente, ad esempio nel caso di delta molto sparsi.
Limiti e quote
I limiti dell'API Telemetry si applicano a tutti i tipi di indicatori.
Si applicano anche le seguenti quote e i seguenti limiti:
- Dati di log: si applicano le quote e i limiti dell'API Cloud Logging.
Dati delle metriche: si applicano quote e limiti dell'API Cloud Monitoring. Ad esempio, le metriche non possono avere più di 200 etichette.
La quota predefinita per le metriche importate dall'API Telemetry è di 60.000 richieste al minuto. Con una dimensione massima del batch di 200 punti per richiesta, questa quota è una quota predefinita effettiva di 200.000 campioni al secondo. Puoi richiedere un aumento della quota.
Dati di Trace: non si applicano quote o limiti aggiuntivi.
Passaggi successivi
- Per informazioni sulla migrazione all'esportatore
otlphttpda un altro esportatore, consulta Esegui la migrazione all'esportatore OTLP. - Per istruzioni su come eseguire il deployment e utilizzare OpenTelemetry Collector con l'API Telemetry, consulta Esegui il deployment e utilizza il collector.
- Per informazioni sulla scrittura di log in formato OTLP nell'API Telemetry, consulta Scrivi log in formato OTLP nell'API Telemetry.
- Per informazioni sull'invio di metriche all'API Telemetry da applicazioni che utilizzano SDK, consulta Utilizza gli SDK per inviare metriche dalle applicazioni.
- Per informazioni sull'utilizzo di un raccoglitore OpenTelemetry e dell'API Telemetry con la strumentazione zero-code di OpenTelemetry, consulta Utilizza la strumentazione zero-code di OpenTelemetry per Java.