Puoi importare dati di log, metriche e tracce in formato OTLP in Google Cloud Observability utilizzando l'API Telemetry (OTLP), che implementa l'OpenTelemetry Protocol. Questa API ti consente di raccogliere dati di telemetria indipendenti dal fornitore da SDK e raccoglitori OpenTelemetry senza utilizzare esportatori Google Cloud personalizzati.
Quando invii la telemetria al tuo progetto utilizzando l'API Telemetry, Google Cloud Observability elabora ogni segnale nel seguente modo:
- 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:memorizza le tracce distribuite in un formato generalmente coerente con OTLP.
Se esegui carichi di lavoro su Google Kubernetes Engine, puoi utilizzare Managed OpenTelemetry per GKE anziché eseguire il deployment e la gestione manuale di un OpenTelemetry Collector.
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 gRPC OTLP 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 Configurare 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 della lingua alla tua applicazione.
Per inviare dati di telemetria al tuo progetto Google Cloud utilizzando l'API Telemetry, devi anche:
Configurare un progetto di quota. Per saperne di più, consulta la sezione Impostare 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 quota. - Ruolo Cloud Telemetry Writer (
roles/telemetry.writer) sul progetto. Questo ruolo consente all'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 traccia vengono convertiti da OTLP in strutture di dati di Google Cloud Observability.
Importazione dati di log
Quando utilizzi l'API Telemetry per importare log in formato OTLP, i dati di log vengono convertiti in voci di log di Cloud Logging. 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. Gli attributi resource determinano la
risorsa monitorata nel
LogEntry risultante. Per ulteriori informazioni 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 in formato OTLP, la struttura di Cloud Logging
LogEntry 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 di risorsa, ambito ed 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 rimandano a schemi di risorse esterni, tutti i metadati di risorse, ambito ed entità OTLP vengono copiati in ogni voce di log.
Importazione dati delle metriche
OTLP per le metriche 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:
- Mapping tra le risorse OTLP e le risorse monitorate di Cloud Monitoring.
- Mapping 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 devono non avere un dominio o 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, tranne
service.name, service.instance.id e service.namespace.
Poiché i nomi delle metriche e le chiavi delle etichette in Cloud Monitoring non supportano UTF-8 completo, 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 si trovano nel 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, consigliamo di utilizzare l'API Telemetry perché fornisce quote di importazione più elevate rispetto all'Cloud Trace APIe.
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 memorizzato:
- 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 in campi con nomi simili nello schema di traccia.
Per saperne di più, consulta i seguenti documenti:
Fatturazione
La fatturazione dei dati di log, metriche e traccia 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 nei 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ù importanti all'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 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 quanto segue:
- 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 che i metadati aggiuntivi vengano conservati nel campo
otel, utilizza l'opzione di mappatura precedente,gcp.use_legacy_mapping, che impedisce il popolamento del campootel.
Fatturazione dei dati delle metriche
La fatturazione delle metriche OTLP viene contabilizzata in base allo SKU "Campioni Prometheus importati", lo stesso utilizzato per le metriche di Google Cloud Managed Service per Prometheus.
Fatturazione dei dati di Trace
L'API che utilizzi per inviare i dati di traccia al tuo progetto non influisce sul modo in cui vengono calcolati i costi per questi dati.
Esecuzione di query sui dati di log, metriche e tracce
Puoi utilizzare le pagine di esplorazione, ovvero 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 traccia utilizzando SQL.
I seguenti suggerimenti potrebbero essere utili quando esegui query sui dati delle metriche utilizzando Metrics Explorer:
Importante: l'esecuzione di query su nomi di metriche e chiavi di etichette con caratteri speciali diversi dai due punti (
:) e dal trattino basso (_) richiede di racchiuderli tra parentesi graffe ({}) e virgolette ("), in base alla specifica UTF-8 di PromQL. Ad esempio, le seguenti query sono valide:{"my.metric.name"}{"my.metric.name", "label.key.KEY"="value"}
Se mantieni l'etichetta
lequando esegui query sugli istogrammi esponenziali, potresti ottenere risultati imprevisti. È previsto che funzionino le query più tipichehistogram_quantile(.99, sum by (le) (metric)).Le metriche delta potrebbero non essere eseguite correttamente in determinate circostanze, ad esempio 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 limiti:
- Dati di log: si applicano le quote e i limiti dell'API Cloud Logging.
Dati delle metriche: si applicano le quote e i limiti dell'API Cloud Monitoring. Ad esempio, le metriche non possono avere più di 200 etichette.
La quota predefinita per le metriche inserite 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 sono previsti limiti o quote aggiuntivi.
Passaggi successivi
- Per informazioni sulla migrazione all'esportatore
otlphttpda un altro esportatore, vedi Eseguire la migrazione all'esportatore OTLP. - Per istruzioni sul deployment e sull'utilizzo di OpenTelemetry Collector con l'API Telemetry, consulta Esegui il deployment e utilizza il collettore.
- Per informazioni sulla scrittura di log in formato OTLP nell'API Telemetry, consulta Scrivere log in formato OTLP nell'API Telemetry.
- Per informazioni sull'invio di metriche all'API Telemetry da applicazioni che utilizzano SDK, consulta Utilizzare gli SDK per inviare metriche dalle applicazioni.
- Per informazioni sull'utilizzo di un agente di raccolta OpenTelemetry e dell'API Telemetry con la strumentazione zero-code OpenTelemetry, consulta Utilizzare la strumentazione zero-code OpenTelemetry per Java.