OpenTelemetry gestito per GKE

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 Instrumentation consente 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 Instrumentation per i workload che utilizzano l' SDK OpenTelemetry e sono configurati con le variabili di ambiente OpenTelemetry standard. Questa Instrumentation risorsa personalizzata, instrumentations.telemetry.googleapis.com, è una risorsa diversa dalla Instrumentation risorsa 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_traceidratio quando 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, o logger_provider sono impostati su null nel file Instrumentation.
    • OTEL_TRACES_EXPORTER: disabilita l'esportazione delle tracce quando è impostato su none. Valore predefinito: otlp.
    • OTEL_METRICS_EXPORTER: disabilita l'esportazione delle metriche quando è impostato su none. Valore predefinito: otlp.
    • OTEL_LOGS_EXPORTER: disabilita l'esportazione dei log quando è impostato su none. 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.uid impostazione nella variabileOTEL_RESOURCE_ATTRIBUTES di ambiente.
    • OTEL_RESOURCE_ATTRIBUTES: il valore include k8s.pod.uid=$(K8S_POD_UID) per consentire al processore degli attributi Kubernetes di associare i metadati, come k8s.namespace.name, k8s.deployment.name e k8s.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