Mappatura delle metriche di Cloud Monitoring a PromQL

Puoi utilizzare Prometheus Query Language (PromQL) per eseguire query su tutte le metriche archiviate Cloud Monitoring, tra cui Metriche di sistema 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 (ad es.compute.googleapis.com/) e un percorso (ad es.instance/disk/max_read_ops_count). Poiché PromQL supporta solo i caratteri speciali : e _, devi prima rendere i nomi delle metriche di monitoraggio 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 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 valori di distribuzione di Cloud Monitoring come sulle tabelle di distribuzione di Prometheus, con il suffisso _count, _sum o _bucket aggiunto al nome della metrica:

Nome della 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.

Puoi vedere quali tipi di risorsa monitorata sono mappati a una metrica eseguendo una delle le seguenti:

  • 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 della riquadro Query Builder, seleziona il pulsante con  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. 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. C'è 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 occasionalmente vengono visualizzati come URI completi, 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 a il tipo di risorsa predefinito prometheus_target utilizzato per Managed Service per le metriche 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. Sintassi per fare riferimento a un'etichetta di sistema di metadati version è metadata_system_version e la sintassi per l'utente metadati l'etichetta version è metadata_user_version. Le query PromQL ben formattate che utilizzano le etichette dei metadati potrebbero avere il seguente aspetto:

  • 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 di etichetta dei metadati è _ . L'aggregazione che utilizza le etichette dei metadati di tipo MULTI_STRING o KEY_VALUE non è supportata.

Risolvere i conflitti di etichette

In Cloud Monitoring, le etichette possono appartenere alla metrica o alla risorsa. Se un'etichetta metrica ha lo stesso nome della chiave di un'etichetta della risorsa, puoi fare riferimento specificamente all'etichetta metrica aggiungendo il prefisso metric_ al nome della chiave dell'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"}