Questo documento descrive OpenTelemetry gestito per Google Kubernetes Engine (GKE), che consente di inviare OpenTelemetry Protocol (OTLP) tracce, metriche e log a Google Cloud Observability dalle applicazioni in esecuzione su GKE. OpenTelemetry gestito fornisce l'unica soluzione gestita di Google Cloud per la raccolta dei dati di traccia su GKE.
Per utilizzare OpenTelemetry gestito per Google Kubernetes Engine (GKE), le applicazioni devono essere già strumentate per generare indicatori utilizzando il protocollo OpenTelemetry. Per maggiori dettagli, vedi Workload supportati.
OpenTelemetry gestito per GKE ha due componenti:
- Raccolta gestita: il raccoglitore gestito fornisce un endpoint OpenTelemetry Protocol in-cluster come destinazione per i workload per inviare tracce, metriche e log in formato OTLP, senza dover gestire un raccoglitore.
Configurazione automatica: una risorsa personalizzata denominata
Instrumentationconsente una configurazione automatica per i workload GKE per generare e importare tracce, metriche e log OpenTelemetry correlati. Questo approccio supporta il Agent Development Kit (ADK).Puoi utilizzare la risorsa personalizzata
Instrumentationper i workload che utilizzano l' SDK OpenTelemetry e sono configurati con le variabili di ambiente OpenTelemetry standard. QuestaInstrumentationrisorsa personalizzata,instrumentations.telemetry.googleapis.com, è una risorsa diversa dallaInstrumentationrisorsa per l' operatore OpenTelemetry.
Per i passaggi per utilizzare OpenTelemetry gestito per GKE, vedi Eseguire il deployment di OpenTelemetry gestito per GKE.
OpenTelemetry gestito per GKE consente di raccogliere la telemetria OTLP senza dover gestire e utilizzare un raccoglitore OpenTelemetry. L'esecuzione del tuo raccoglitore può comportare un overhead, inclusi autenticazione, configurazione, upgrade e monitoraggio. Tuttavia, se hai bisogno di filtri e controlli a livello di raccoglitore, puoi utilizzare il raccoglitore OpenTelemetry creato da Google anziché questo servizio gestito.
OpenTelemetry fornisce API, librerie e SDK per generare tracce distribuite, metriche e log per il monitoraggio delle applicazioni. Per ulteriori informazioni su OpenTelemetry, consulta la documentazione su OpenTelemetry e l' OpenTelemetry Protocol (OTLP). Per maggiori dettagli sulla generazione e la raccolta dei dati sul comportamento di runtime dell'applicazione, vedi Strumentazione e osservabilità.
Come funziona OpenTelemetry gestito per GKE
OpenTelemetry gestito per GKE ha due componenti: raccolta gestita e configurazione automatica.
Raccolta gestita
La raccolta gestita fornisce un endpoint OTLP in-cluster eseguendo il deployment di un raccoglitore OpenTelemetry gestito nel cluster. Questo endpoint OTLP in-cluster riceve tracce, metriche e log in formato OTLP. Per ricevere dati da un workload, quest'ultimo deve essere configurato per inviare dati al raccoglitore.
L'endpoint del raccoglitore gestito è:
http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.
La raccolta gestita invia i dati raccolti a Google Cloud Observability. I dati sono quindi disponibili nei seguenti servizi:
Il raccoglitore gestito può essere abilitato per un cluster GKE utilizzando la console o gcloud CLI. Per le istruzioni, vedi Abilitare OpenTelemetry gestito per GKE in un cluster.
Configurazione automatica
La configurazione automatica consente a GKE di configurare i workload in esecuzione su GKE per inviare indicatori all'endpoint del raccoglitore gestito.
Esistono diversi metodi che possono essere utilizzati per configurare un workload. La configurazione automatica utilizza le variabili di ambiente inserite nel container del workload per fare in modo che il workload invii indicatori al raccoglitore gestito. Se configuri manualmente il workload, puoi utilizzare altri metodi. Per maggiori dettagli, vedi Configurazione manuale.
Quando utilizzi la configurazione automatica, definisci la configurazione
utilizzando la risorsa personalizzata Instrumentation. GKE
inserisce quindi le variabili di ambiente, come l'endpoint dell'esportatore OTLP,
nei container del workload. Quando i container del workload hanno queste
variabili di ambiente, i dati OpenTelemetry vengono inviati a
raccoglitore gestito durante l'esecuzione del workload.
La configurazione automatica è disponibile per i workload che supportano OpenTelemetry in modo nativo, il che significa che utilizzano l'SDK OpenTelemetry e sono configurati utilizzando le variabili di ambiente OpenTelemetry standard. Per maggiori dettagli, vedi Workload supportati.
Per istruzioni su come configurare l'applicazione utilizzando la configurazione automatica, vedi Configurare l'applicazione per utilizzare il raccoglitore OpenTelemetry gestito.
La risorsa personalizzata Instrumentation
Utilizza la risorsa personalizzata Instrumentation per:
- Specificare se inserire le variabili di ambiente nei container dei pod selezionati o di tutti i pod in uno spazio dei nomi.
- Controllare il tipo di dati raccolti (log, metriche e tracce).
- Controllare la frequenza con cui i dati delle metriche vengono inviati al raccoglitore gestito.
- Controllare la frequenza di campionamento dei dati di traccia.
Per maggiori dettagli su come utilizzare la risorsa personalizzata Instrumentation, vedi
Modificare la configurazione.
Inserire automaticamente le variabili di ambiente
Per inserire automaticamente le variabili di ambiente OpenTelemetry nei workload GKE, devi configurare un oggetto Instrumentation
nel cluster.
Quando esegui il deployment dell'applicazione nel cluster con l'Instrumentation
oggetto,
le variabili vengono inserite da GKE.
L'oggetto Instrumentation deve essere presente nel cluster quando viene eseguito il deployment dell'applicazione e vengono creati i pod. Se hai eseguito il deployment dell'applicazione prima di aver
creato l'oggetto Instrumentation, devi riavviare i
pod dell'applicazione per attivare l'inserimento automatico delle variabili di ambiente.
Variabili di ambiente
Quando viene eseguito il deployment di un workload nello spazio dei nomi in cui è abilitata la configurazione automatica, GKE inserisce le variabili di ambiente nei container dei workload. Queste variabili di ambiente sono variabili OpenTelemetry dalla configurazione dell'SDK OpenTelemetry.
L'elenco seguente contiene tutte le variabili di ambiente che possono essere
inserite da OpenTelemetry gestito per GKE. Le variabili di ambiente specifiche
inserite in un container dipendono dalla configurazione
nella Instrumentation risorsa personalizzata.
Le variabili di ambiente che possono essere inserite automaticamente nei container sono le seguenti:
- Endpoint dell'esportatore OpenTelemetry.
OTEL_EXPORTER_OTLP_ENDPOINT: un URL dell'endpoint di base per qualsiasi tipo di indicatore. Questo endpoint punta sempre all'endpoint HTTP del raccoglitore OpenTelemetry gestito in-cluster per log, metriche e tracce. L'endpoint è:http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.
- Configurazione del rapporto di campionamento Trace.
OTEL_TRACES_SAMPLER: imposta il campionatore utilizzato per campionare le tracce dall'SDK su uno dei seguenti valori:parentbased_traceidratioquando il campionamento delle tracce è configurato nella risorsa personalizzata.parentbased_always_onè il valore predefinito di questa variabile di ambiente. Viene utilizzato se questa variabile di ambiente non è configurata o è null nella risorsa personalizzata.
OTEL_TRACES_SAMPLER_ARG: specifica il rapporto di campionamento delle tracce (compreso tra 0,0 e 1,0). Se non è configurato nella risorsa personalizzata, viene utilizzato 1,0.
- Intervallo di ritardo tra l'inizio di due esportazioni di metriche consecutive.
OTEL_METRIC_EXPORT_INTERVAL: l'intervallo di tempo (in millisecondi) tra l'inizio di due tentativi di esportazione (min: 5000, max: 300000, predefinito: 60000).
- Disattivazione dell'esportazione della telemetria OTLP per tipo di indicatore. Gli esportatori di indicatori
vengono disabilitati quando
tracer_provider,meter_provider, ologger_providersono impostati sunullnel fileInstrumentation.OTEL_TRACES_EXPORTER: disabilita l'esportazione delle tracce quando è impostato sunone. Valore predefinito:otlp.OTEL_METRICS_EXPORTER: disabilita l'esportazione delle metriche quando è impostato sunone. Valore predefinito:otlp.OTEL_LOGS_EXPORTER: disabilita l'esportazione dei log quando è impostato sunone. Valore predefinito:otlp.
- Identificazione dei pod hostNetwork per l'associazione dei metadati da parte del
processore degli attributi Kubernetes
del raccoglitore OpenTelemetry.
K8S_POD_UID: l'UID del pod di un pod hostNetwork per popolare l'k8s.pod.uidimpostazione nella variabileOTEL_RESOURCE_ATTRIBUTESdi ambiente.OTEL_RESOURCE_ATTRIBUTES: il valore includek8s.pod.uid=$(K8S_POD_UID)per consentire al processore degli attributi Kubernetes di associare i metadati, comek8s.namespace.name,k8s.deployment.nameek8s.node.name, ai pod hostNetwork. L'associazione di metadati e pod hostNetwork consente di aggiungere i metadati estratti a span, metriche e log come attributi delle risorse.
Configurazione manuale
Esistono diversi metodi che puoi utilizzare per configurare un workload in modo che invii indicatori all'endpoint del raccoglitore gestito. Se configuri manualmente il workload, puoi aggiungere e modificare manualmente le variabili di ambiente oppure utilizzare un altro metodo, ad esempio i flag della riga di comando.
Non è consigliabile utilizzare contemporaneamente la configurazione manuale e quella automatica per lo stesso workload, perché la configurazione automatica può sostituire le modifiche manuali. Questa combinazione potrebbe rendere più difficile il monitoraggio delle modifiche alla configurazione.
Per maggiori dettagli sulla configurazione automatica, vedi Configurazione automatica
Workload supportati
I workload supportati sono i workload che utilizzano OpenTelemetry per raccogliere dati su il comportamento di runtime dell'applicazione. I workload supportano OpenTelemetry in modo nativo se utilizzano l'SDK OpenTelemetry e sono configurati utilizzando le variabili di ambiente OpenTelemetry standard. Ad esempio, il Agent Development Kit (ADK) supporta OpenTelemetry in modo nativo.
Per maggiori dettagli su come vengono generati e raccolti i dati sul comportamento di runtime della tua applicazione, vedi Strumentazione e osservabilità.
Se un workload supporta alcuni tipi di dati OTLP e non altri, allora OpenTelemetry gestito per GKE raccoglie i dati OTLP. Ad esempio, se un workload utilizza l'SDK OpenTelemetry per implementare le tracce, ma non lo utilizza per log o metriche, i dati di log e metriche non vengono raccolti da OpenTelemetry gestito per GKE. Per maggiori dettagli su come controllare il tipo di dati da raccogliere, vedi Selezionare i tipi di indicatori da raccogliere.
L'inserimento della configurazione OpenTelemetry non è supportato per i workload con privilegi dei partner GKE Autopilot.
Fatturazione
Quando invii dati di telemetria a Google Cloud, ti viene addebitato il volume di importazione. Le metriche vengono fatturate utilizzando i prezzi di Google Cloud Managed Service per Prometheus, i log vengono fatturati utilizzando i prezzi di Cloud Logging e le tracce vengono fatturate utilizzando i prezzi di Cloud Trace.
Per informazioni sui costi associati all'importazione di tracce, log e metriche di Google Cloud Managed Service per Prometheus, vedi Prezzi di Google Cloud Observability.
Quote
Quando utilizzi OpenTelemetry gestito per GKE, si applicano le quote per i servizi Google Cloud Observability. Per maggiori dettagli, vedi:
Passaggi successivi
- Per eseguire il deployment del raccoglitore, vedi Eseguire il deployment di OpenTelemetry gestito per GKE.
- Per un'alternativa con deployment autonomo a OpenTelemetry gestito per GKE, vedi Raccoglitore OpenTelemetry creato da Google.
- Per informazioni sulla configurazione della strumentazione OpenTelemetry per generare tracce, metriche e log dalle applicazioni, vedi:
- Aggiungere tracce e metriche personalizzate all'app con OpenTelemetry.