Questo documento descrive Managed OpenTelemetry per Google Kubernetes Engine (GKE), che ti consente di inviare tracce, metriche e log OpenTelemetry Protocol (OTLP) a Google Cloud Observability da applicazioni in esecuzione su GKE. Managed OpenTelemetry fornisce l'unica soluzione gestita da Google Cloud per la raccolta dei dati di traccia su GKE.
Per utilizzare Managed OpenTelemetry per Google Kubernetes Engine (GKE), le applicazioni devono essere già instrumentate per generare segnali utilizzando il protocollo OpenTelemetry. Per maggiori dettagli, vedi Carichi di lavoro 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 chiamata
Instrumentationconsente una configurazione automatica per i tuoi workload GKE per generare e importare tracce, metriche e log OpenTelemetry correlati. Questo approccio supporta l'Agent Development Kit (ADK).Puoi utilizzare la risorsa personalizzata
Instrumentationper i carichi di lavoro che utilizzano l'SDK OpenTelemetry e sono configurati con le variabili di ambiente OpenTelemetry standard. Questa risorsa personalizzataInstrumentation,instrumentations.telemetry.googleapis.com, è una risorsa diversa dalla risorsaInstrumentationper l'operatore OpenTelemetry.
Per i passaggi per utilizzare Managed OpenTelemetry per GKE, consulta Deploy Managed OpenTelemetry per GKE.
OpenTelemetry gestito per GKE ti consente di raccogliere la telemetria OTLP senza dover gestire e utilizzare un raccoglitore OpenTelemetry. L'esecuzione del tuo raccoglitore può comportare un overhead, che include autenticazione, configurazione, upgrade e monitoraggio. Tuttavia, se hai bisogno di filtri e controlli a livello di raccoglitore, puoi utilizzare il raccoglitore OpenTelemetry integrato in 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 sull'OpenTelemetry Protocol (OTLP). Per maggiori dettagli sulla generazione e sulla raccolta dei dati sul comportamento di runtime dell'applicazione, vedi Instrumentazione 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 nel 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 inviarli 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 poi disponibili nei seguenti servizi:
Il raccoglitore gestito può essere abilitato per un cluster GKE utilizzando la console o gcloud CLI. Per istruzioni, consulta Abilitare OpenTelemetry gestito per GKE in un cluster.
Configurazione automatica
La configurazione automatica consente a GKE di configurare i carichi di lavoro in esecuzione su GKE per inviare indicatori all'endpoint dell'agente di raccolta gestito.
Esistono diversi metodi che possono essere utilizzati per configurare un workload. La configurazione automatica utilizza le variabili di ambiente inserite nel container del carico di lavoro per fare in modo che il carico di lavoro invii segnali al raccoglitore gestito. Se configuri manualmente il workload, puoi utilizzare altri metodi. Per maggiori dettagli, consulta Configurazione manuale.
Quando utilizzi la configurazione automatica, definisci la configurazione
utilizzando la risorsa personalizzata Instrumentation. Poi, GKE
inserisce le variabili di ambiente, come l'endpoint dell'esportatore OTLP,
nei container del carico di lavoro. Quando i container del workload hanno queste
variabili di ambiente, durante l'esecuzione del workload i dati OpenTelemetry vengono inviati al
collettore gestito.
La configurazione automatica è disponibile per i workload che supportano in modo nativo OpenTelemetry, 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, consulta Configurare l'applicazione per utilizzare il raccoglitore Managed OpenTelemetry.
Risorsa personalizzata Instrumentation
Utilizzi la risorsa personalizzata Instrumentation per:
- Specifica se inserire le variabili di ambiente nei container dei pod selezionati o di tutti i pod in uno spazio dei nomi.
- Controlla il tipo di dati raccolti (log, metriche e tracce).
- Controlla la frequenza con cui i dati delle metriche vengono inviati al collettore gestito.
- Controlla la frequenza di campionamento dei dati di traccia.
Per informazioni dettagliate su come utilizzare la risorsa personalizzata Instrumentation, vedi
Modificare la configurazione.
Inserisci automaticamente le variabili di ambiente
Per inserire automaticamente le variabili di ambiente OpenTelemetry nei tuoi carichi di lavoro GKE, devi configurare un oggetto Instrumentation nel cluster.
Poi, quando esegui il deployment dell'applicazione nel cluster con l'oggetto Instrumentation,
le variabili vengono inserite da GKE.
L'oggetto Instrumentation deve trovarsi nel cluster quando l'applicazione viene
deployata e vengono creati i pod. Se hai eseguito il deployment dell'applicazione prima di creare l'oggetto Instrumentation, devi riavviare i pod dell'applicazione per attivare l'inserimento automatico delle variabili di ambiente.
Variabili di ambiente
Quando un workload viene eseguito il deployment 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 della configurazione dell'SDK OpenTelemetry.
L'elenco seguente contiene tutte le variabili di ambiente che possono essere
inserite da Managed OpenTelemetry per GKE. Le variabili di ambiente specifiche inserite in un container dipendono dalla configurazione nella risorsa personalizzata Instrumentation.
Le variabili di ambiente che possono essere inserite automaticamente nei container sono le seguenti:
- Endpoint dell'esportatore OpenTelemetry.
OTEL_EXPORTER_OTLP_ENDPOINT: un URL endpoint di base per qualsiasi tipo di segnale. Questo endpoint punta sempre all'endpoint HTTP del raccoglitore OpenTelemetry gestito nel 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 utilizzata se questa variabile di ambiente non è configurata o è nulla nella risorsa personalizzata.
OTEL_TRACES_SAMPLER_ARG: specifica il rapporto di campionamento delle tracce (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 consecutive di metriche.
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 disattivati quando
tracer_provider,meter_providerologger_providersono impostati sunullnel fileInstrumentation.OTEL_TRACES_EXPORTER: disattiva l'esportazione delle tracce quando è impostato sunone. Valore predefinito:otlp.OTEL_METRICS_EXPORTER: disattiva l'esportazione delle metriche se impostato sunone. Valore predefinito:otlp.OTEL_LOGS_EXPORTER: disattiva l'esportazione dei log quando è impostato sunone. Valore predefinito:otlp.
- Identificazione dei pod hostNetwork per l'associazione dei metadati tramite
Kubernetes Attributes Processor
di OpenTelemetry Collector.
K8S_POD_UID: l'UID del pod di un pod hostNetwork per popolare l'impostazionek8s.pod.uidnella variabile di ambienteOTEL_RESOURCE_ATTRIBUTES.OTEL_RESOURCE_ATTRIBUTES: il valore includek8s.pod.uid=$(K8S_POD_UID)per consentire al processore degli attributi Kubernetes di associare 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 segnali all'endpoint del collettore gestito. Se configuri manualmente il carico di lavoro, puoi aggiungere e modificare manualmente le variabili di ambiente oppure puoi 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 carico di lavoro, perché la configurazione automatica può ignorare le modifiche manuali. Questa combinazione potrebbe rendere più difficile monitorare le modifiche alla configurazione.
Per maggiori dettagli sulla configurazione automatica, vedi Configurazione automatica
Workload supportati
I carichi di lavoro supportati sono quelli che utilizzano OpenTelemetry per raccogliere dati sul 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, l'Agent Development Kit (ADK) supporta OpenTelemetry in modo nativo.
Per maggiori dettagli su come vengono generati e raccolti i dati sul comportamento di runtime dell'applicazione, vedi Instrumentazione e osservabilità.
Se un workload supporta alcuni tipi di dati OTLP e non altri, Managed OpenTelemetry 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 Managed OpenTelemetry per GKE. Per informazioni dettagliate su come controllare il tipo di dati da raccogliere, consulta Selezionare i tipi di segnale da raccogliere.
L'inserimento della configurazione OpenTelemetry non è supportato per i carichi di lavoro privilegiati dei partner GKE Autopilot.
Fatturazione
Quando invii dati di telemetria a Google Cloud, la fatturazione viene eseguita in base al volume di importazione. Le metriche vengono fatturate in base ai prezzi di Google Cloud Managed Service per Prometheus, i log vengono fatturati in base ai prezzi di Cloud Logging e le tracce vengono fatturate in base ai prezzi di Cloud Trace.
Per informazioni sui costi associati all'importazione di tracce, log e metriche di Google Cloud Managed Service per Prometheus, consulta Prezzi di Google Cloud Observability.
Quote
Quando utilizzi Managed OpenTelemetry per GKE, si applicano le quote per i servizi Google Cloud Observability. Per maggiori dettagli, vedi quanto segue:
Passaggi successivi
- Per eseguire il deployment del collettore, vedi Eseguire il deployment di OpenTelemetry gestito per GKE.
- Per un'alternativa di deployment autonomo a OpenTelemetry gestito per GKE, vedi Google-Built OpenTelemetry Collector.
- Per informazioni sulla configurazione dell'instrumentazione OpenTelemetry per generare tracce, metriche e log dalle tue applicazioni, consulta quanto segue:
- Aggiungi tracce e metriche personalizzate alla tua app con OpenTelemetry.