Instrumentare un'applicazione per il monitoraggio delle applicazioni

Puoi instrumentare la tua applicazione App Hub in modo che Google Cloud Observability colleghi etichette specifiche dell'applicazione alle metriche e ai dati di traccia generati dall'applicazione. Per i workload eseguiti su Google Kubernetes Engine, puoi anche esportare una metrica del server HTTP OpenTelemetry utilizzata da Application Monitoring per segnalare il livello di traffico, la percentuale di errori del server e la latenza per le richieste HTTP.

Informazioni sulle etichette specifiche per l'applicazione

Le etichette specifiche dell'applicazione si riferiscono a etichette o attributi inseriti nei dati di log, metriche o tracce. Queste etichette identificano il servizio o il workload che ha generato i dati. Puoi utilizzare le etichette specifiche per l'applicazione come qualsiasi altra etichetta. Ad esempio, puoi filtrare i dati in base all'ID di un'applicazione. La telemetria generata dall'infrastruttura supportata include automaticamente queste etichette. Con la strumentazione, le metriche e le tracce scritte dalla tua applicazione possono includere queste etichette.

In questa sezione, interpreta a.b.{x,y} come a.b.x e a.b.y.

I dati delle metriche provenienti dalla strumentazione che hai aggiunto alle tue applicazioni possono includere le seguenti etichette delle metriche:

  • metric.labels.apphub_application_{container,id,location}
  • metric.labels.apphub_workload_{criticality_type,environment_type,id}

Gli intervalli di Trace generati dalla strumentazione aggiunta alle tue applicazioni possono includere i seguenti attributi delle risorse:

  • gcp.apphub.application.{container,id,location}
  • gcp.apphub.{workload,service}.{criticality_type,environment_type,id}

Informazioni sulle metriche del server HTTP OpenTelemetry

Non esistono metriche di sistema per i workload eseguiti su Google Kubernetes Engine che possano segnalare il livello di traffico, la percentuale di errori del server o la latenza per le richieste HTTP. Tuttavia, i valori di questi golden signal possono essere ricavati dalla metrica http.server.request.duration, che viene raccolta automaticamente dalla libreria client HTTP OpenTelemetry.

L'esportatore googlemanagedprometheus converte la metrica OpenTelemetry http.server.request.duration in una metrica Prometheus con le seguenti proprietà:

  • Nome: prometheus/http_server_request_duration_seconds/histogram
  • Metrica: prometheus.googleapis.com/http_server_request_duration_seconds/histogram
  • Tipi di risorse: prometheus_target
  • Unità: s
  • Tipo: CUMULATIVE
  • Tipo di valore: DISTRIBUTION

Quando il tuo progetto Google Cloud contiene la metrica http_server_request_duration_seconds, le dashboard di Application Monitoring mostrano il livello di traffico, la percentuale di errori del server e la latenza per le richieste HTTP.

Per scoprire come configurare l'applicazione per esportare la metrica http_server_request_duration_seconds, consulta la sezione Utilizza OpenTelemetry su Kubernetes di questo documento.

Aggiungi etichette dell'applicazione ai dati delle metriche

Google Cloud Observability tenta di identificare l'origine delle metriche di Prometheus confrontando gli attributi associati alle metriche di Prometheus inviate al tuo progetto con i dati restituiti dall'API App Hub. Il resto di questa sezione elenca le configurazioni che consentono a Google Cloud Observability di identificare l'applicazione App Hub.

Utilizza OpenTelemetry su Kubernetes

Per fare in modo che Google Cloud Observability colleghi le etichette dell'applicazione ai dati delle metriche generati dai workload dell'applicazione eseguiti in Google Kubernetes Engine, segui questi passaggi:

  1. Instrumenta l'applicazione con OpenTelemetry.

  2. Esegui il deployment del Collector creato da Google o del Collector OpenTelemetry e configura il Collector come segue:

    • Esporta i dati delle metriche con l'esportatore googlemanagedprometheus.
    • Configura il processore k8sattributes per estrarre i metadati, come namespace, dall'ambiente.
    • Configura il processore transform/collision per impostare gli attributi project_id, location, cluster e namespace.
    • Configura il processore transform/aco-gke per compilare le etichette top_level_controller_name e top_level_controller_type.

    Per un esempio, consulta otlp-k8s-ingest/config/collector.yaml, che è il file di configurazione del Collector creato da Google. Per scoprire di più su questo raccoglitore, consulta Esegui il deployment del raccoglitore OpenTelemetry creato da Google su GKE.

  3. Registra i workload della tua applicazione con App Hub.

Utilizza Google Cloud Managed Service per Prometheus su GKE

Per fare in modo che Google Cloud Observability colleghi le etichette dell'applicazione ai dati delle metriche generati dai workload dell'applicazione in esecuzione sui cluster Google Kubernetes Engine, segui questi passaggi:

  1. Utilizza Google Cloud Managed Service per Prometheus con la raccolta gestita.

  2. Esegui il deployment dei tuoi workload su un cluster Google Kubernetes Engine con versione almeno 1.32.1-gke.1439000.

  3. Registra i workload della tua applicazione con App Hub.

Google Cloud Managed Service per Prometheus rileva i valori delle etichette dell'applicazione tramite i metadati di Service Discovery e poi aggiunge le etichette top_level_controller_{name,type} a targetLabels.metadata. Durante l'importazione delle metriche, Google Cloud Observability utilizza le etichette top_level_controller_{name,type} e l'API App Hub per identificare la tua applicazione App Hub e aggiungere le etichette appropriate ai dati delle metriche.

Utilizza Cloud Run

Per fare in modo che Google Cloud Observability colleghi le etichette delle applicazioni ai dati delle metriche generati dai tuoi workload Cloud Run, segui questi passaggi:

  1. Strumenta la tua applicazione utilizzando OpenTelemetry o il sidecar di Managed Service per Prometheus per Cloud Run. Per informazioni su questi approcci, consulta i seguenti documenti:

  2. Registra i workload della tua applicazione con App Hub.

Verifica le etichette delle metriche

Per verificare che l'applicazione invii metriche Prometheus al tuo progetto, segui questi passaggi:

  1. Verifica che l'applicazione invii metriche Prometheus al tuo progetto:
    1. Nella console Google Cloud , vai alla pagina  Esplora metriche:

      Vai a Esplora metriche

      Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

    2. Nella barra degli strumenti della console Google Cloud , seleziona il tuo progetto Google Cloud . Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella app.
    3. Nell'elemento Metrica, espandi il menu Seleziona una metrica, digita Prometheus Target nella barra dei filtri e poi utilizza i sottomenu per selezionare un tipo di risorsa e una metrica specifici:
      1. Nel menu Risorse attive, seleziona Target Prometheus.
      2. Per selezionare una metrica, utilizza i menu Categorie di metriche attive e Metriche attive.
      3. Fai clic su Applica.
    4. Per aggiungere filtri che rimuovono le serie temporali dai risultati della query, utilizza l'elemento Filtro.

    5. Configura la modalità di visualizzazione dei dati.

      Per visualizzare le etichette, espandi il menu Filtro. Ogni voce del menu Filtro corrisponde a un'etichetta.

      Per ulteriori informazioni sulla configurazione di un grafico, consulta Seleziona le metriche durante l'utilizzo di Esplora metriche.

    Se non vedi alcuna metrica di Prometheus, rivedi la configurazione.

Se le metriche di Prometheus non contengono etichette dell'applicazione, segui questi passaggi:

  1. Verifica di aver registrato il workload o il servizio con App Hub.

  2. Esamina i log per determinare se sono presenti errori.

    Ad esempio, se esegui il deployment di un raccoglitore OpenTelemetry o del raccoglitore creato da Google e utilizzi Google Kubernetes Engine, potresti procedere come segue:

    1. Nella console Google Cloud , vai alla pagina Workload:

      Vai a Carichi di lavoro

      Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.

    2. Seleziona il deployment del raccoglitore, quindi la scheda Log.
  3. Se utilizzi un raccoglitore OpenTelemetry o il raccoglitore creato da Google, esamina la configurazione del raccoglitore. Il raccoglitore deve:

    • Esporta i dati delle metriche con l'esportatore googlemanagedprometheus.
    • Configura il processore k8sattributes per estrarre i metadati, come namespace, dall'ambiente.
    • Configura il processore transform/collision per impostare gli attributi project_id, location, cluster e namespace.
    • Configura il processore transform/aco-gke per compilare le etichette top_level_controller_name e top_level_controller_type.

    Per un esempio, consulta il file di configurazione del Collector creato da Google: otlp-k8s-ingest/config/collector.yaml.

Aggiungi attributi dell'applicazione agli intervalli di traccia

Non strumentare l'applicazione in modo che gli attributi specifici dell'applicazione vengano collegati agli intervalli inviati al progetto Google Cloud . Invece, Google Cloud Observability utilizza gli attributi delle risorse OpenTelemetry e l'API App Hub per identificare l'applicazione App Hub associata a uno span, quindi aggiunge gli attributi specifici dell'applicazione prima di archiviare lo span.

Per fare in modo che Google Cloud Observability colleghi gli attributi delle risorse specifici dell'applicazione ai dati di traccia generati dai servizi e dai workload della tua applicazione, segui questi passaggi:

Per saperne di più su questi attributi, consulta Convenzioni semantiche di App HubGoogle Cloud .

Attributi obbligatori

Questa sezione si applica alle configurazioni in cui non utilizzi uno dei collector consigliati. Ad esempio, potresti voler scrivere il tuo raccoglitore o preferire esportare direttamente i dati di traccia.

Attributi che identificano il progetto e la località delle risorse

Imposta i seguenti attributi:

  • cloud.provider: impostato su "gcp".
  • cloud.account.id: impostato sull'ID progetto.
  • cloud.availability_zone o cloud.region: imposta la zona o la regione in cui si trovano le risorse. Puoi impostare entrambi gli attributi.

I rilevatori di risorse possono aiutarti a impostare gli attributi precedenti:

Attributi per i workload di Google Kubernetes Engine

Per un workload Google Kubernetes Engine, configura il raccoglitore o la strumentazione in modo che:

  • Estrai i metadati, come namespace, dall'ambiente.
  • Estrai i metadati pertinenti dal processore k8sattributes.
  • Imposta gli attributi project_id, location, cluster e namespace per le metriche.
  • Imposta le etichette top_level_controller_name e top_level_controller_type per le metriche.

Per un esempio basato su un raccoglitore, consulta otlp-k8s-ingest/config/collector.yaml. Questo raccoglitore utilizza il processore k8sattributesprocessor.

Attributi per i workload delle VM

Se esegui il deployment dell'applicazione su una VM, questa deve essere associata a un gruppo di istanze gestite (MIG). Devi inoltre allegare i seguenti attributi:

  • gcp.gce.instance_group_manager.name
  • gcp.gce.instance_group_manager.region o gcp.gce.instance_group_manager.zone