Instrumentare un'applicazione per il monitoraggio delle applicazioni

Questo documento descrive come configurare un'applicazione App Hub in modo che le metriche e i dati di traccia generati dall'applicazione contengano etichette specifiche dell'applicazione. Descrive inoltre come fare in modo che l'applicazione esporti una metrica utilizzata da Application Monitoring per segnalare il livello di traffico, il tasso di errori del server o la latenza per i carichi di lavoro delle richieste HTTP eseguiti su Google Kubernetes Engine.

Informazioni sulle etichette specifiche dell'applicazione

Le etichette specifiche per l'applicazione si riferiscono a etichette o attributi inseriti nei dati di log, metriche o tracce. Queste etichette identificano il servizio o il carico di lavoro che ha generato i dati. Puoi utilizzare le etichette specifiche dell'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 carichi di lavoro eseguiti su Google Kubernetes Engine che possono segnalare il livello di traffico, il tasso di errori del server o la latenza per le richieste HTTP. Tuttavia, i valori di questi indicatori chiave possono essere derivati da http.server.request.duration, una metrica raccolta automaticamente dalla libreria client HTTP OpenTelemetry.

L'esportatore googlemanagedprometheus converte la metrica OpenTelemetry http.server.request.duration in una metrica Prometheus che ha 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 OOTB mostrano il livello di traffico, il tasso di errore 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 Utilizzare OpenTelemetry su Kubernetes di questo documento.

Aggiungere etichette dell'applicazione ai dati delle metriche

Google Cloud Observability tenta di identificare l'origine delle metriche Prometheus confrontando gli attributi allegati alle metriche 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.

Utilizzare OpenTelemetry su Kubernetes

Per fare in modo che Google Cloud Observability associ le etichette delle applicazioni ai dati delle metriche generati dai carichi di lavoro dell'applicazione in esecuzione in Google Kubernetes Engine, procedi nel seguente modo:

  1. Strumenta l'applicazione con OpenTelemetry.

  2. Esegui il deployment del raccoglitore creato da Google o di OpenTelemetry Collector e configura il raccoglitore nel seguente modo:

    • 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, vedi otlp-k8s-ingest/config/collector.yaml, che รจ il file di configurazione per Collector creato da Google. Per saperne di piรน su questo raccoglitore, consulta Deploy Google-Built OpenTelemetry Collector on GKE.

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

Utilizzare Google Cloud Managed Service per Prometheus su GKE

Per fare in modo che Google Cloud Observability colleghi le etichette delle applicazioni ai dati delle metriche generati dai carichi di lavoro dell'applicazione in esecuzione sui cluster Google Kubernetes Engine, procedi nel seguente modo:

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

  2. Esegui il deployment dei carichi di lavoro su un cluster Google Kubernetes Engine la cui versione sia 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} all'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 l'applicazione App Hub e aggiungere le etichette appropriate ai dati delle metriche.

Utilizzare Cloud Run

Per fare in modo che Google Cloud Observability colleghi le etichette dell'applicazione ai dati delle metriche generati dai tuoi carichi di lavoro Cloud Run, procedi nel seguente modo:

  1. Strumenta la tua applicazione utilizzando OpenTelemetry o il file collaterale 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.

Verificare le etichette delle metriche

Per verificare che la tua applicazione invii le metriche Prometheus al tuo progetto, segui questi passaggi:

  1. Verifica che la tua applicazione invii le 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 Destinazione 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 nel 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 visualizzi alcuna metrica Prometheus, rivedi la configurazione.

Se le metriche Prometheus non contengono etichette dell'applicazione, procedi nel seguente modo:

  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, puoi procedere nel seguente modo:

    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 la distribuzione del raccoglitore, quindi seleziona la scheda Log.
  3. Se utilizzi un raccoglitore OpenTelemetry o il raccoglitore creato da Google, rivedi 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, vedi il file di configurazione del raccoglitore creato da Google: otlp-k8s-ingest/config/collector.yaml.

Aggiungere attributi dell'applicazione agli intervalli di traccia

Per fare in modo che Cloud Trace associ gli attributi delle risorse specifici dell'applicazione ai dati di traccia generati dai servizi e dai carichi di lavoro dell'applicazione:

  1. Registra i tuoi servizi e workload con App Hub.
  2. Strumenta la tua applicazione con OpenTelemetry e invia i dati di traccia raccolti dalla tua applicazione al tuo progetto utilizzando l'endpoint OTLPGoogle Cloud .
  3. Configura il raccoglitore OpenTelemetry o il raccoglitore creato da Google in modo che i dati degli intervalli esportati includano gli attributi delle risorse OpenTelemetry che identificano le risorse supportate Google Cloud utilizzate dalla tua applicazione. Gli attributi della risorsa devono includere quanto segue:

    • cloud.account.id
    • Uno dei cloud.{availability_zone,region}
    • Attributi specifici della risorsa. Ad esempio, per un carico di lavoro Kubernetes, gli span devono avere impostati k8s.cluster.name, k8s.namespace e il tipo di deployment Kubernetes.

    Utilizza i processori per fare in modo che il raccoglitore alleghi attributi specifici della risorsa ai tuoi span. Per saperne di piรน, consulta resourcedetectionprocessor e k8sattributesprocessor.

    Google Cloud Observability utilizza gli attributi delle risorse precedenti e l'API App Hub per identificare l'applicazione App Hub. Gli attributi specifici dell'applicazione vengono aggiunti ai dati di traccia quando viene identificata un'applicazione.

Per ulteriori informazioni su questi attributi, vedi Google Cloud Convenzioni semantiche di App Hub.