Utilizzo di PromQL per le metriche di Cloud Monitoring

Puoi utilizzare Prometheus Query Language (PromQL) per eseguire query su tutte le metriche in Cloud Monitoring, incluse le metriche di sistema di Google Cloud, Metriche Kubernetes, metriche personalizzate, e metriche basate su log.

Mappatura dei nomi delle metriche di Cloud Monitoring a PromQL

I nomi delle metriche di Cloud Monitoring includono due componenti, un dominio (come compute.googleapis.com/) e un percorso (ad esempio instance/disk/max_read_ops_count). Poiché PromQL supporta solo i caratteri speciali : e _, devi prima rendere Monitoring compatibili con PromQL. Per mappare i nomi delle metriche di monitoraggio a PromQL, applica le seguenti regole:

  • Sostituisci il primo / con :.
  • Sostituisci tutti gli altri caratteri speciali (inclusi . e altri caratteri /) con _.

La tabella seguente elenca alcuni nomi di metriche e i relativi equivalenti PromQL:

Nome metrica di Cloud Monitoring Nome della metrica PromQL
kubernetes.io/container/cpu/limit_cores kubernetes_io:container_cpu_limit_cores
compute.googleapis.com/instance/cpu/utilization compute_googleapis_com:instance_cpu_utilization
logging.googleapis.com/log_entry_count logging_googleapis_com:log_entry_count
custom.googleapis.com/opencensus/opencensus.io/
http/server/request_count_by_method
custom_googleapis_com:opencensus_opencensus_io_
http_server_request_count_by_method
agent.googleapis.com/disk/io_time agent_googleapis_com:disk_io_time

È possibile eseguire query sulle metriche con valore di distribuzione di Cloud Monitoring come gli istogrammi di Prometheus, con il suffisso _count, _sum o _bucket aggiunto al nome della metrica:

Nome metrica di Cloud Monitoring Nomi delle metriche PromQL
networking.googleapis.com/vm_flow/rtt networking_googleapis_com:vm_flow_rtt_sum
networking_googleapis_com:vm_flow_rtt_count
networking_googleapis_com:vm_flow_rtt_bucket

Specifica di un tipo di risorsa monitorata

Quando una metrica è associata a un solo Cloud Monitoring monitorato , le query PromQL funzionano senza manualmente che specifica un tipo di risorsa. Tuttavia, alcune metriche di Cloud Monitoring, tra cui alcune metriche di sistema e molte di quelle generate dalle metriche basate su log, mappano a più di un tipo di risorsa.

Per visualizzare i tipi di risorse monitorate mappati a una metrica, puoi eseguire una delle seguenti operazioni:

  • Per le metriche selezionate da Google, puoi consultare gli elenchi delle metriche disponibili, tra cui le metriche di Google Cloud e le metriche Kubernetes. Ogni voce della documentazione elenca i tipi di risorse monitorate associati nella prima colonna di ogni voce sotto il tipo. Se non sono elencati tipi di risorse monitorate, la metrica può essere associata a qualsiasi tipo.
  • In Esplora metriche puoi eseguire le seguenti operazioni:

    1. Inserisci il nome della metrica nel campo Seleziona una metrica, quindi scorri i menu per selezionarla. Il menu delle risorse elenca i tipi di risorse validi per la metrica, ad esempio "Istanza VM".
    2. Nella barra degli strumenti del riquadro Query Builder, seleziona il pulsante  MQL o  PromQL.
    3. 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.

      La query visualizzata mostra il tipo di risorsa. In particolare, MQL è utile per le metriche che possono essere associate a molti tipi di risorse monitorate, ad esempio metriche basate su log, metriche personalizzate o qualsiasi metrica definita dall'utente.

Se una metrica è associata a più tipi di risorse, devi specifica il tipo di risorsa nella query PromQL. Esiste un'etichetta speciale, monitored_resource, che puoi utilizzare per selezionare il tipo di risorsa.

I tipi di risorse monitorate sono nella maggior parte dei casi una stringa breve, come gce_instance, ma a volte vengono visualizzati come URI completi, come monitoring.googleapis.com/MetricIngestionAttribution. PromQL ben formulato potrebbero avere il seguente aspetto:

  • logging_googleapis_com:byte_count{monitored_resource="k8s_container"}
  • custom_googleapis_com:opencensus_opencensus_io_http_server_request_count_by_method{monitored_resource="global"}
  • loadbalancing_googleapis_com:l3_external_egress_bytes_count{monitored_resource="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"}

Il valore "" per l'etichetta monitored_resource è speciale e si riferisce al tipo di risorsa prometheus_target predefinito utilizzato per le metriche di Managed Service per Prometheus.

Se non utilizzi l'etichetta monitored_resource quando è necessaria: ricevi il seguente errore:

metric is configured to be used with more than one monitored resource type; series selector must specify a label matcher on monitored resource name

Utilizzo delle etichette dei metadati

Puoi utilizzare le etichette di metadati in PromQL come faresti ma, come i nomi delle metriche, anche le etichette dei metadati devono essere Compatibile con PromQL. La sintassi per fare riferimento a un'etichetta di sistema dei metadativersion è metadata_system_version e la sintassi per l'etichetta utente dei metadativersion è metadata_user_version. Query PromQL ben formulate utilizzando le etichette dei metadati potrebbe essere il seguente:

  • compute_googleapis_com:instance_cpu_utilization{monitored_resource="gce_instance",metadata_user_env="prod"}
  • sum(compute_googleapis_com:instance_cpu_utilization) by (metadata_system_region)

L'unico carattere speciale che puoi utilizzare nelle chiavi delle etichette dei metadati è il carattere _. Aggregazione mediante etichette di metadati di tipo MULTI_STRING o KEY_VALUE non supportato.

Risolvere i conflitti di etichette

In Cloud Monitoring, le etichette possono appartenere alla metrica o alla risorsa. Se un'etichetta di metrica ha lo stesso nome di chiave di un'etichetta di risorsa, puoi fare riferimento a l'etichetta della metrica in modo specifico aggiungendo il prefisso metric_ alla chiave di etichetta nella query.

Ad esempio, supponiamo che tu abbia un'etichetta della risorsa e un'etichetta della metrica entrambe denominate pod_name nella metricaexample.googleapis.com/user/widget_count.

  • Per filtrare in base al valore dell'etichetta della risorsa, utilizza
    example_googleapis_com:user_widget_count{pod_name="RESOURCE_LABEL_VALUE"}

  • Per filtrare in base al valore dell'etichetta della metrica, utilizza
    example_googleapis_com:user_widget_count{metric_pod_name="METRIC_LABEL_VALUE"}

Argomenti aggiuntivi

Regole e avvisi

Puoi utilizzare le metriche di Cloud Monitoring sia nelle regole di registrazione sia nelle regole di avviso in Managed Service per Prometheus. Per le istruzioni, consulta Valutazione e avvisi delle regole gestite o Valutazione e avvisi di regole con deployment autonomo.

Imparare a utilizzare PromQL

Per conoscere le nozioni di base sull'utilizzo di PromQL, ti consigliamo di consultare la documentazione open source. Ecco alcuni link utili:

Differenze PromQL

PromQL per Managed Service per Prometheus potrebbe funzionare leggermente in modo diverso rispetto a PromQL upstream. Per un elenco di queste differenze, consulta Differenze di PromQL.