Raccogliere metriche di Prometheus

Questo documento descrive la configurazione e l'utilizzo di un ricevitore di metriche Ops Agent che puoi utilizzare per raccogliere metriche da Prometheus su Compute Engine. In questo documento viene anche descritto un esempio che puoi utilizzare per provare il ricevitore.

Gli utenti di Google Kubernetes Engine sono riusciti a raccogliere le metriche Prometheus utilizzando Google Cloud Managed Service per Prometheus. Il ricevitore di Ops Agent Prometheus offre agli utenti di Compute Engine le stesse funzionalità.

Puoi utilizzare tutti gli strumenti forniti da Cloud Monitoring, tra cui PromQL, per visualizzare e analizzare i dati raccolti dal ricevitore Prometheus. Ad esempio, puoi utilizzare Metrics Explorer, come descritto nella console Google Cloud per Monitoring, per eseguire query sui dati. Puoi anche creare dashboard e criteri di avviso di Cloud Monitoring per monitorare le metriche di Prometheus. Ti consigliamo di utilizzare PromQL come linguaggio di query per le metriche Prometheus.

Puoi visualizzare le metriche di Prometheus anche nelle interfacce esterne a Cloud Monitoring, ad esempio la UI di Prometheus e Grafana.

Scegli il ricevitore giusto

Prima di decidere di utilizzare il ricevitore Prometheus, determina se esiste già un'integrazione di Ops Agent per l'applicazione che stai utilizzando. Per informazioni sulle integrazioni esistenti con Ops Agent, consulta Monitoraggio delle applicazioni di terze parti. Se esiste già un'integrazione, ti consigliamo di utilizzarla. Per saperne di più, consulta la sezione Scegliere un'integrazione esistente.

Ti consigliamo di utilizzare il ricevitore Ops Agent Prometheus quando si verificano le seguenti condizioni:

  • Hai esperienza nell'uso di Prometheus, fai affidamento sullo standard Prometheus e comprendi in che modo fattori quali l'intervallo di scraping e la cardinalità possono influire sui costi. Per ulteriori informazioni, consulta Scegliere il ricevitore Prometheus.

  • Il software che stai monitorando non fa già parte del set di integrazioni di Ops Agent esistenti.

Integrazioni esistenti

Ops Agent fornisce integrazioni per una serie di applicazioni di terze parti. Queste integrazioni forniscono quanto segue:

  • Un insieme di metriche workload.googleapis.com selezionate per l'applicazione
  • Una dashboard per la visualizzazione delle metriche.

Le metriche importate utilizzando un'integrazione esistente sono soggette a prezzi basati su byte per le metriche raccolte dall'agente. Il numero e i tipi di metriche sono noti in anticipo e puoi utilizzare queste informazioni per stimare i costi.

Ad esempio, se utilizzi l'integrazione del server web Apache (httpd), Ops Agent raccoglie cinque metriche scalari; ogni punto dati conta come 8 byte. Se mantieni la frequenza di campionamento predefinita di Ops Agent di 60 secondi, il numero di byte importati al giorno è 57.600 * il numero di host:

  • 8 (byte) * 1440 (minuti al giorno) * 5 (metriche) * n (host) o
  • 57.600 * n (host)

Per ulteriori informazioni sulla stima dei costi, consulta Esempi di prezzi basati sui byte importati.

Ricevitore Prometheus

Quando utilizzi Ops Agent per raccogliere le metriche di Prometheus, si applica quanto segue:

  • Il numero e la cardinalità delle metriche emesse dalla tua applicazione sono sotto il tuo controllo. Non esiste un insieme selezionato di metriche. La quantità di dati importati è determinata dalla configurazione dell'applicazione Prometheus e del ricevitore Prometheus di Ops Agent.

  • Le metriche vengono importate in Cloud Monitoring come metriche prometheus.googleapis.com. Queste metriche sono classificate come tipo di metriche "personalizzate" quando vengono importate in Cloud Monitoring e sono soggette a quote e limiti per le metriche personalizzate.

  • Devi progettare e creare tutte le dashboard di Cloud Monitoring di cui hai bisogno, in base al set di metriche che stai importando e alle tue esigenze aziendali. Per informazioni sulla creazione delle dashboard, consulta Dashboard e grafici.

  • I prezzi per l'importazione delle metriche si basano sul numero di campioni importati. Per stimare i costi quando utilizzi il ricevitore Prometheus, devi determinare il numero di campioni che potresti raccogliere durante un ciclo di fatturazione. La stima si basa sui seguenti fattori:

    • Numero di metriche scalari; ogni valore è un campione
    • Numero di metriche di distribuzione; ogni istogramma viene conteggiato come (2 + numero di bucket nell'istogramma) campioni
    • Frequenza di campionamento di ogni metrica
    • Numero di host da cui vengono campionate le metriche

    Per saperne di più sul conteggio dei campioni e sulla stima dei costi, consulta Esempi di prezzi basati sui campioni importati.

Prerequisiti

Per raccogliere le metriche Prometheus utilizzando il ricevitore Prometheus, devi installare Ops Agent versione 2.25.0 o successive.

Il ricevitore Ops Agent richiede un endpoint che emette metriche di Prometheus. Di conseguenza, l'applicazione deve fornire direttamente un endpoint di questo tipo oppure utilizzare una libreria o un esportatore Prometheus per esporre un endpoint. Molte librerie e framework di linguaggio come Spring e DropWizard, o applicazioni come StatsD, dogStatsD e Graphite, che emettono metriche non Prometheus, possono utilizzare le librerie client o gli esportatori Prometheus per emettere metriche in stile Prometheus. Ad esempio, per emettere metriche di Prometheus:

Quando le metriche Prometheus vengono emesse da un'applicazione, direttamente o utilizzando una libreria o un esportatore, le metriche possono essere raccolte da un Ops Agent configurato con un ricevitore Prometheus.

Configurazione dell'agente operativo

Il modello di configurazione di Ops Agent in genere prevede la definizione di quanto segue:

  • Destinatari, che determinano quali metriche vengono raccolte.
  • Processori, che descrivono in che modo Ops Agent può modificare le metriche.
  • Pipeline, che collegano ricevitori e processori in un servizio.

La configurazione per l'importazione delle metriche di Prometheus è leggermente diversa: non sono coinvolti processori.

Configurazione per le metriche di Prometheus

La configurazione di Ops Agent per l'importazione delle metriche di Prometheus è diversa dalla configurazione abituale come segue:

  • Non creerai un processore Ops Agent per le metriche Prometheus. Il ricevitore Prometheus supporta quasi tutte le opzioni di configurazione specificate dalla specifica scrape_config di Prometheus, incluse le opzioni di rietichettatura.

    Anziché utilizzare un processore Ops Agent, l'elaborazione delle metriche viene eseguita utilizzando le sezioni relabel_configs e metric_relabel_configs della configurazione di orizzontale, come specificato nel ricevitore Prometheus. Per ulteriori informazioni, consulta Rietichettatura: modifica dei dati di cui viene eseguito lo scraping.

  • Puoi definire la pipeline Prometheus solo in termini di ricevitore Prometheus. Non devi specificare alcun processore. Inoltre, non puoi utilizzare ricevitori non Prometheus nella pipeline per le metriche Prometheus.

La maggior parte della configurazione del ricevitore è la specifica delle opzioni scrape-config. Omettendo queste opzioni per brevità, di seguito viene mostrata la struttura di una configurazione di Ops Agent che utilizza un ricevitore Prometheus. Puoi specificare i valori di RECEIVER_ID e PIPELINE_ID.

metrics:
  receivers:
    RECEIVER_ID:
      type: prometheus
      config:
        scrape_configs:
          [... omitted for brevity ...]

  service:
    pipelines:
      PIPELINE_ID:
        receivers: [RECEIVER_ID]

La seguente sezione descrive il ricevitore Prometheus in modo più dettagliato. Per un esempio funzionale di ricevitore e pipeline, consulta Aggiungere il ricevitore e la pipeline di Ops Agent.

Ricevitore Prometheus

Per specificare un ricevitore per le metriche di Prometheus, puoi creare un ricevitore di metriche di tipo prometheus e specificare un insieme di opzioni scrape_config. Il ricevitore supporta tutte le opzioni di Prometheus scrape_config, ad eccezione di quanto segue:

  • Le sezioni Service-Discovery, *_sd_config.
  • L'impostazione honor_labels.

Puoi quindi copiare le configurazioni di scrape esistenti e utilizzarle per l'Ops Agent con poche modifiche o nessuna.

La struttura completa del ricevitore Prometheus è mostrata come segue:

metrics:
  receivers:
    prom_application:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'STRING' # must be unique across all Prometheus receivers
              scrape_interval: # duration, like 10m or 15s
              scrape_timeout:  # duration, like 10m or 15s
              metrics_path: # resource path for metrics, default = /metrics
              honor_timestamps: # boolean, default = false
              scheme: # http or https, default = http
              params:
                - STRING: STRING
              basic_auth:
                username: STRING
                password: SECRET
                password_file: STRING
              authorization:
                type: STRING # default = Bearer
                credentials: SECRET
                credentials_file: FILENAME

              oauth2: OAUTH2 # See Prometheus oauth2
              follow_redirects: # boolean, default = true
              enable_http2: # boolean, default = true
              tls_config: TLS_CONFIG # See Prometheus tls_config
              proxy_url: STRING

              static_configs:
                STATIC_CONFIG # See Prometheus static_config
              relabel_configs:
                RELABEL_CONFIG # See Prometheus relabel_config
              metric_relabel_configs:
                METRIC_RELABEL_CONFIGS # See Prometheus metric_relabel_configs

Per esempi di rietichettatura delle configurazioni, consulta Configurazione aggiuntiva del ricevitore.

Esempio: configura Ops Agent per Prometheus

Questa sezione mostra un esempio di come configurare Ops Agent per raccogliere le metriche Prometheus da un'applicazione. In questo esempio viene utilizzato l'utilità di esportazione JSON fornito dalla community di Prometheus (json_exporter), che espone le metriche di Prometheus sulla porta 7979.

La configurazione dell'esempio richiede le seguenti risorse, che potresti dover installare:

  • git
  • curl
  • make
  • python3
  • Lingua Go, versione 1.19 o successive

Crea o configura la tua applicazione

Per ottenere ed eseguire JSON Exporter, segui questa procedura:

  1. Clona il repository json_exporter e controlla l'utilità di esportazione eseguendo questi comandi:

    git clone https://github.com/prometheus-community/json_exporter.git
    
    cd json_exporter
    
    git checkout v0.5.0
    
  2. Crea l'utilità di esportazione eseguendo questo comando:

    make build
    
  3. Avvia il server HTTP Python eseguendo questo comando:

    python3 -m http.server 8000 &
    
  4. Avvia l'utilità di esportazione JSON eseguendo questo comando:

    ./json_exporter --config.file examples/config.yml &
    
  5. Esegui una query in JSON Exporter per verificare che sia in esecuzione ed espone metriche sulla porta 7979:

    curl "http://localhost:7979/probe?module=default&target=http://localhost:8000/examples/data.json"
    

    Se la query ha avuto esito positivo, vedrai un output simile al seguente:

    # HELP example_global_value Example of a top-level global value scrape in the json
    # TYPE example_global_value untyped
    example_global_value{environment="beta",location="planet-mars"} 1234
    # HELP example_value_active Example of sub-level value scrapes from a json
    # TYPE example_value_active untyped
    example_value_active{environment="beta",id="id-A"} 1
    example_value_active{environment="beta",id="id-C"} 1
    # HELP example_value_boolean Example of sub-level value scrapes from a json
    # TYPE example_value_boolean untyped
    example_value_boolean{environment="beta",id="id-A"} 1
    example_value_boolean{environment="beta",id="id-C"} 0
    # HELP example_value_count Example of sub-level value scrapes from a json
    # TYPE example_value_count untyped
    example_value_count{environment="beta",id="id-A"} 1
    example_value_count{environment="beta",id="id-C"} 3
    

    In questo output, le stringhe come example_value_active sono i nomi delle metriche, con etichette e valori tra parentesi graffe. Il valore dei dati segue il set di etichette.

Aggiungi il destinatario e la pipeline di Ops Agent

Per configurare Ops Agent per l'importazione delle metriche dall'applicazione JSON Exporter, devi modificare la configurazione dell'agente per aggiungere un ricevitore Prometheus e una pipeline. Per l'esempio di JSON Exporter, utilizza la seguente procedura:

  1. Modifica il file di configurazione di Ops Agent /etc/google-cloud-ops-agent/config.yaml e aggiungi le seguenti voci di pipeline e ricevitore Prometheus:

    metrics:
      receivers:
        prometheus:
            type: prometheus
            config:
              scrape_configs:
                - job_name: 'json_exporter'
                  scrape_interval: 10s
                  metrics_path: /probe
                  params:
                    module: [default]
                    target: [http://localhost:8000/examples/data.json]
                  static_configs:
                    - targets: ['localhost:7979']
      service:
        pipelines:
          prometheus_pipeline:
            receivers:
              - prometheus
     

    Se nel file sono già presenti altre voci di configurazione, aggiungi il ricevitore e la pipeline Prometheus alle voci metrics e service esistenti. Per maggiori informazioni, consulta Configurazioni delle metriche.

    Per esempi di rietichettatura delle configurazioni nel destinatario, consulta Configurazione aggiuntiva del destinatario.

Riavvia Ops Agent

Per applicare le modifiche alla configurazione, devi riavviare Ops Agent.

LINUX

  1. Per riavviare l'agente, esegui questo comando sull'istanza:

    sudo service google-cloud-ops-agent restart
    
  2. Per confermare che l'agente è stato riavviato, esegui il comando seguente e verifica che i componenti "Metrics Agent" e "Logging Agent" siano stati avviati:

    sudo systemctl status google-cloud-ops-agent"*"
    

Windows

  1. Connettiti all'istanza utilizzando RDP o uno strumento simile e accedi a Windows.

  2. Apri un terminale PowerShell con privilegi di amministratore facendo clic con il tasto destro del mouse sull'icona di PowerShell e selezionando Esegui come amministratore.

  3. Per riavviare l'agente, esegui il comando PowerShell seguente:

    Restart-Service google-cloud-ops-agent -Force
    
  4. Per confermare che l'agente è stato riavviato, esegui il comando seguente e verifica che i componenti "Metrics Agent" e "Logging Agent" siano stati avviati:

    Get-Service google-cloud-ops-agent*
    

Metriche di Prometheus in Cloud Monitoring

Puoi utilizzare gli strumenti forniti da Cloud Monitoring con i dati raccolti dal ricevitore Prometheus. Ad esempio, puoi creare grafici di dati utilizzando Metrics Explorer, come descritto in Console Google Cloud per Monitoring. Le seguenti sezioni descrivono i Query Tool disponibili in Cloud Monitoring con Metrics Explorer:

Puoi creare dashboard e criteri di avviso di Cloud Monitoring per le tue metriche. Per informazioni sulle dashboard e sui tipi di grafici che puoi utilizzare, consulta la sezione Dashboard e grafici. Per informazioni sui criteri di avviso, consulta Utilizzo dei criteri di avviso.

Puoi visualizzare le metriche anche in altre interfacce, come UI di Prometheus e Grafana. Per informazioni sulla configurazione di queste interfacce, consulta le sezioni seguenti nella documentazione di Google Cloud Managed Service per Prometheus:

Utilizza PromQL

PromQL è il linguaggio di query consigliato per le metriche importate utilizzando il ricevitore Prometheus.

Il modo più semplice per verificare che i dati Prometheus vengano importati è utilizzare la pagina Explorer metriche di Cloud Monitoring nella console Google Cloud:

  1. Nel pannello di navigazione della console Google Cloud, seleziona Monitoring e poi  Metrics Explorer:

    Vai a Metrics Explorer

  2. Nella barra degli strumenti del riquadro del generatore di query, seleziona il pulsante il cui nome è  MQL o  PromQL.

  3. Verifica che sia selezionato PromQL nel pulsante di attivazione/disattivazione Lingua. Il pulsante di attivazione/disattivazione della lingua si trova nella stessa barra degli strumenti che consente di formattare la query.

  4. Inserisci la seguente query nell'editor e fai clic su Esegui query:

    up
    

Se i dati vengono importati, viene visualizzato un grafico simile al seguente:

Grafico di Metrics Explorer per la metrica Up di json-exporter.

Se esegui l'esempio di JSON Exporter, puoi eseguire anche query come le seguenti:

  • Esegui query su tutti i dati per una specifica metrica esportata in base al nome, ad esempio:

    example_value_count
    

    Di seguito è riportato un grafico per example_value_count, incluse le etichette definite dall'applicazione JSON Exporter e le etichette aggiunte da Ops Agent:

    Grafico Metrics Explorer per la metrica json-exporter example_value_count.

  • Query sui dati di una metrica esportata che ha avuto origine in uno spazio dei nomi specifico. Il valore dell'etichetta namespace è l'ID istanza di Compute Engine, un numero lungo come 5671897148133813325, assegnato alla VM. Una query ha il seguente aspetto:

    example_value_count{namespace="INSTANCE_ID"}
    
  • Eseguire query su dati che corrispondono a una specifica espressione regolare. L'Esportatore JSON emette metriche con un'etichetta id con valori come id-A, id-B e id-C. Per filtrare in base alle metriche con un'etichetta id corrispondente a questo pattern, utilizza la seguente query:

    example_value_count{id=~"id.*"}
    

Per ulteriori informazioni sull'utilizzo di PromQL nei grafici di Metrics Explorer e di Cloud Monitoring, consulta PromQL in Cloud Monitoring.

Utilizza MQL

Per visualizzare i dati Prometheus come serie temporali di Cloud Monitoring e per creare grafici e dashboard, puoi anche utilizzare le interfacce basate su menu o MQL. Di seguito viene mostrata una semplice query in Metrics Explorer:

  1. Nel pannello di navigazione della console Google Cloud, seleziona Monitoring e poi  Metrics Explorer:

    Vai a Metrics Explorer

  2. Specifica i dati da visualizzare nel grafico. Oltre a utilizzare la scheda PromQL descritta in precedenza, puoi utilizzare anche MQL.

    • Per utilizzare MQL:

      1. Nella barra degli strumenti del riquadro del generatore di query, seleziona il pulsante il cui nome è  MQL o  PromQL.
      2. Verifica che sia selezionato MQL nel pulsante di attivazione/disattivazione Lingua. Il pulsante di attivazione/disattivazione della lingua si trova nella stessa barra degli strumenti che consente di formattare la query.
      3. Inserisci la query seguente:

        fetch prometheus_target::prometheus.googleapis.com/up/gauge
        
      4. Fai clic su Esegui query.

    • Per utilizzare l'interfaccia basata su menu:

      1. Nel campo Tipo di risorsa, digita "prometheus" per filtrare l'elenco, quindi seleziona Target Prometheus.

      2. Nel campo Metrica, digita "up/" per filtrare l'elenco, quindi seleziona prometheus/up/gauge.

Il grafico risultante da una di queste query mostra gli stessi dati del grafico mostrato con l'esempio PromQL.

La risorsa prometheus_target

In Cloud Monitoring, i dati delle serie temporali vengono scritti rispetto a un tipo di risorsa monitorata. Per le metriche di Prometheus, il tipo di risorsa monitorata è prometheus_target. Le query di monitoraggio per le metriche di Prometheus non scritte in PromQL devono specificare questo tipo di risorsa.

La risorsa prometheus_target ha le seguenti etichette, che puoi utilizzare per filtrare e manipolare i dati sottoposti a query:

  • project_id: l'identificatore del progetto Google Cloud, ad esempio my-project, in cui è in esecuzione Ops Agent.
  • location: la regione Google Cloud o AWS in cui è in esecuzione Ops Agent, ad esempio us-east1-a (Google Cloud) o aws:us-east-1a (AWS).
  • cluster: sempre __gce__ per le metriche di Prometheus raccolte utilizzando l'Ops Agent.
  • namespace: l'ID istanza Compute Engine della VM su cui è in esecuzione l'Ops Agent.
  • job: il valore del campo job_name nella configurazione del destinatario.
  • instance: l'etichetta dell'istanza della destinazione Prometheus, recuperata dalla configurazione del ricevitore; il valore predefinito è la destinazione.

I valori di queste etichette vengono impostati durante la raccolta. I valori delle etichette namespace, location e cluster sono immutabili. Se le metriche estratte dalla tua applicazione hanno anche queste etichette, l'Ops Agent antepone a queste etichette il prefisso exported_.

Visualizza l'utilizzo e la diagnostica delle metriche in Cloud Monitoring

La pagina Gestione delle metriche di Cloud Monitoring fornisce informazioni che possono aiutarti a controllare l'importo speso per le metriche addebitabili senza influire sull'osservabilità. La pagina Gestione delle metriche riporta le seguenti informazioni:

  • Volumi di importazione per la fatturazione basata su byte e campioni, nei domini delle metriche e per le singole metriche.
  • Dati su etichette e cardinalità delle metriche.
  • Utilizzo delle metriche nei criteri di avviso e nelle dashboard personalizzate.
  • Percentuale di errori di scrittura delle metriche.

Per visualizzare la pagina Gestione delle metriche:

  1. Nel pannello di navigazione della console Google Cloud, seleziona Monitoring, quindi  Gestione delle metriche:

    Vai a Gestione delle metriche

  2. Nella barra degli strumenti, seleziona la finestra temporale. Per impostazione predefinita, la pagina Gestione delle metriche mostra informazioni sulle metriche raccolte il giorno precedente.

Per saperne di più sulla pagina Gestione delle metriche, consulta Visualizzare e gestire l'utilizzo delle metriche.

Rietichettatura: modifica dei dati di cui viene eseguito lo scraping

Puoi utilizzare la rietichettatura per modificare il set di etichette della destinazione dello scraping o delle sue metriche prima che il target venga eseguito lo scraping. Se in una configurazione di rietichettatura sono presenti più passaggi, questi vengono applicati nell'ordine in cui sono visualizzati nel file di configurazione.

Ops Agent crea un insieme di meta-etichette, ovvero le etichette che hanno come prefisso la stringa __meta_. Queste meta etichette registrano informazioni sull'istanza di Compute Engine su cui è in esecuzione Ops Agent. Le etichette precedute dalla stringa __, incluse le meta etichette, sono disponibili solo durante la rietichettatura. Puoi rietichettare le etichette per acquisirne i valori nelle etichette che sono state copiate.

La rietichettatura delle metriche viene applicata ai campioni; è l'ultimo passaggio prima dell'importazione. Puoi utilizzare la rietichettatura delle metriche per eliminare le serie temporali che non devi importare; l'eliminazione di queste serie temporali riduce il numero di campioni importati, con un conseguente calo dei costi.

Per saperne di più sulla rietichettatura, consulta la documentazione di Prometheus per relabel_config e metric_relabel_configs.

Meta etichette di Compute Engine disponibili durante la rietichettatura

Quando Ops Agent esegue lo scraping delle metriche, include un insieme di meta etichette i cui valori sono basati sulla configurazione della VM di Compute Engine su cui è in esecuzione l'agente. Puoi utilizzare queste etichette e la sezione relabel_configs del ricevitore Prometheus per aggiungere ulteriori metadati alle tue metriche relative alla VM da cui sono state importate. Per un esempio, consulta Configurazione aggiuntiva del destinatario.

Le seguenti meta etichette sono disponibili sulle destinazioni che puoi utilizzare nella sezione relabel_configs:

  • __meta_gce_instance_id: l'ID numerico dell'istanza Compute Engine (locale)
  • __meta_gce_instance_name: nome dell'istanza Compute Engine (locale); l'Ops Agent inserisce automaticamente questo valore nell'etichetta instance_name modificabile sulle tue metriche.
  • __meta_gce_machine_type: URL completo o parziale del tipo di macchina dell'istanza; l'Ops Agent inserisce automaticamente questo valore nell'etichetta machine_type modificabile sulle tue metriche.
  • __meta_gce_metadata_NAME: ogni elemento di metadati dell'istanza
  • __meta_gce_network: l'URL di rete dell'istanza
  • __meta_gce_private_ip: l'indirizzo IP privato dell'istanza
  • __meta_gce_interface_ipv4_NAME: indirizzo IPv4 di ogni interfaccia denominata
  • __meta_gce_project: progetto Google Cloud in cui è in esecuzione l'istanza (locale)
  • __meta_gce_public_ip: l'indirizzo IP pubblico dell'istanza, se presente
  • __meta_gce_tags: elenco di tag istanza separati da virgole
  • __meta_gce_zone: l'URL della zona di Compute Engine in cui è in esecuzione l'istanza

I valori di queste etichette vengono impostati all'avvio di Ops Agent. Se modifichi i valori, devi riavviare Ops Agent per aggiornarli.

Configurazione ricevitore aggiuntiva

Questa sezione fornisce esempi che utilizzano le sezioni relabel_configs e metric_relabel_configs del ricevitore Prometheus per modificare il numero e la struttura delle metriche importate. Questa sezione include anche una versione modificata del ricevitore per l'esempio di esportazione JSON che utilizza le opzioni di rietichettatura.

Aggiungi metadati alla VM

Puoi utilizzare la sezione relabel_configs per aggiungere etichette alle metriche. Ad esempio, quanto segue utilizza una meta etichetta, __meta_gce_zone, fornita da Ops Agent per creare un'etichetta di metrica, zone, che viene conservata dopo la rietichettatura, perché zone non ha il prefisso __.

Per un elenco delle meta etichette disponibili, consulta Meta etichette di Compute Engine disponibili durante la rietichettatura. Alcune delle meta etichette vengono rietichettate automaticamente in base alla configurazione predefinita di Ops Agent.

relabel_configs:
  - source_labels: [__meta_gce_zone]
    regex: '(.+)'
    replacement: '${1}'
    target_label: zone

Il ricevitore di Prometheus mostrato in Esempio: configurazione di Ops Agent per Prometheus include l'aggiunta di questa etichetta.

Elimina metriche

Puoi utilizzare la sezione metrics_relabel_configs per eliminare le metriche che non vuoi importare; questo pattern è utile per il contenimento dei costi. Ad esempio, puoi utilizzare il seguente pattern per eliminare qualsiasi metrica con un nome che corrisponda a METRIC_NAME_REGEX_1 o METRIC_NAME_REGEX_2:

metric_relabel_configs:
  - source_labels: [ __name__ ]
    regex: 'METRIC_NAME_REGEX_1'
    action: drop
  - source_labels: [ __name__ ]
    regex: 'METRIC_NAME_REGEX_2'
    action: drop

Aggiungi etichette statiche

Puoi utilizzare la sezione metrics_relabel_configs per aggiungere etichette statiche a tutte le metriche importate dal ricevitore Prometheus. Puoi utilizzare il seguente pattern per aggiungere le etichette staticLabel1 e staticLabel2 a tutte le metriche importate:

metric_relabel_configs:
  - source_labels: [ __address__ ]
    action: replace
    replacement: 'STATIC_VALUE_1'
    target_label: staticLabel1
  - source_labels: [ __address__ ]
    action: replace
    replacement: 'STATIC_VALUE_2'
    target_label: staticLabel2

La seguente versione del ricevitore Prometheus per l'esempio di esportazione JSON utilizza questi pattern di configurazione per:

  • Imposta l'etichetta zone sul valore della meta etichetta __meta_gce_zone fornita da Ops Agent.
  • Rilascia la metrica example_global_value dell'esportatore.
  • Aggiungi l'etichetta staticLabel con il valore "Un valore statico" a tutte le metriche importate.
metrics:
  receivers:
    prometheus:
        type: prometheus
        config:
          scrape_configs:
            - job_name: 'json_exporter'
              scrape_interval: 10s
              metrics_path: /probe
              params:
                module: [default]
                target: [http://localhost:8000/examples/data.json]
              static_configs:
                - targets: ['localhost:7979']
              relabel_configs:
                - source_labels: [__meta_gce_zone]
                  regex: '(.+)'
                  replacement: '${1}'
                  target_label: zone
              metric_relabel_configs:
                - source_labels: [ __name__ ]
                  regex: 'example_global_value'
                  action: drop
                - source_labels: [ __address__ ]
                  action: replace
                  replacement: 'A static value'
                  target_label: staticLabel