PromQL für Cloud Monitoring-Messwerte

Sie können mit PromQL alle Messwerte in Cloud Monitoring abfragen, einschließlich Google Cloud-Systemmesswerte, Kubernetes-Messwerte und benutzerdefinierter Messwertesowie logbasierte Messwerte.

Cloud Monitoring-Messwertnamen PromQL zuordnen

Cloud Monitoring-Messwertnamen beinhalten zwei Komponenten: eine Domain (z. B. compute.googleapis.com/) und einen Pfad (z. B. instance/disk/max_read_ops_count). Da PromQL nur die Sonderzeichen : und _ unterstützt, müssen Sie diese Messwertnamen zuerst mit PromQL kompatibel machen. Halten Sie sich dazu an diese beiden Regeln:

  • Ersetzen Sie den ersten / durch :.
  • Ersetzen Sie alle anderen Sonderzeichen (einschließlich . und anderer /-Zeichen) durch _.

In der folgenden Tabelle sind einige Messwertnamen und ihre PromQL-Entsprechungen aufgeführt:

Cloud Monitoring-Messwertname PromQL-Messwertname
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

Cloud Monitoring-Verteilungsmesswerte können wie Prometheus-Histogramme abgefragt werden, wobei das Suffix _count, _sum oder _bucket an den Messwertnamen angehängt wird:

Cloud Monitoring-Messwertname PromQL-Messwertnamen
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

Typ der überwachten Ressource angeben

Wenn ein Messwert nur einem einzelnen von Cloud Monitoring überwachten Ressourcentyp zugeordnet ist, funktioniert die PromQL-Abfrage, ohne manuell einen Ressourcentyp anzugeben. Einige Messwerte innerhalb von Cloud Monitoring, darunter einige Systemmesswerte und viele der von den logbasierten Messwerten generierten Messwerte, lassen sich jedoch mehr als einem Ressourcentyp zuordnen.

Sie können prüfen, welche überwachten Ressourcentypen einem Messwert zugeordnet sind. Gehen Sie dabei so vor:

  1. Informationen zu den von Google ausgewählten Messwerten finden Sie in den Listen der verfügbaren Messwerte, einschließlich der Google Cloud-Messwerte und Kubernetes-Messwerte. Jeder Eintrag in der Dokumentation enthält die zugehörigen überwachten Ressourcentypen in der ersten Spalte des jeweiligen Eintrags unter dem Typ. Wenn keine überwachten Ressourcentypen aufgeführt sind, kann der Messwert einem beliebigen Typ zugeordnet werden.
  2. Rufen Sie im Metrics Explorer von Cloud Monitoring den Abschnitt „Konfiguration“ auf und geben Sie Ihren Messwertnamen ein. Eine Liste der gültigen Ressourcentypen wird angezeigt, z. B. „VM-Instanz“. Wenn Sie Ihren Messwert auswählen und zum Tab MQL wechseln, wird im Feld fetch der zugrunde liegende überwachte Ressourcentyp angezeigt, z. B. gce_instance. Diese Methode ist für Messwerte nützlich, die mit vielen überwachten Ressourcentypen verknüpft werden können, z. B. logbasierte Messwerte oder benutzerdefinierte Messwerte.

Wenn ein Messwert mit mehr als einem Ressourcentyp verknüpft ist, müssen Sie den Ressourcentyp in Ihrer PromQL-Abfrage angeben. Mit dem speziellen Label monitored_resource kann der Ressourcentyp ausgewählt werden.

Überwachte Ressourcentypen sind in den meisten Fällen ein kurzer String wie gce_instance. Gelegentlich werden sie jedoch als vollständige URIs wie monitoring.googleapis.com/MetricIngestionAttribution angezeigt. Eine korrekt formatierte Abfrage könnte so aussehen:

  • 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"}

Der Wert von "" für das Label monitored_resource ist besonders und bezieht sich auf den standardmäßigen prometheus_target-Ressourcentyp, der für Managed Service for Prometheus-Messwerte verwendet wird.

Wenn Sie das Label monitored_resource nicht verwenden, wenn es benötigt wird, erhalten Sie folgende Fehlermeldung:

„Messwert ist so konfiguriert, dass er mit mehr als einem überwachten Ressourcentyp verwendet werden kann; der Serienselektor muss einen Label-Matcher für den Namen der überwachten Ressource angeben“

Weitere Informationen

Metadatenlabels verwenden

Sie können in PromQL Metadatenlabels wie jedes andere Label verwenden, wobei wie bei Messwertnamen auch Metadatenlabels von PromQL kompatibel sein müssen. Die Syntax für den Verweis auf ein Metadatensystemlabel vom Typ foo lautet metadata_system_foo und die Syntax für Metadatennutzerlabel vom Typ bar lautet metadata_user_bar. Eine korrekt formatierte Abfrage mit Metadatenlabels könnte so aussehen:

  • 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)

Das einzige Sonderzeichen, das Sie in Metadatenlabelschlüsseln verwenden können, ist das Zeichen _. Eine Aggregation mit Metadatenlabels vom Typ MULTI_STRING oder KEY_VALUE wird nicht unterstützt.

Labelkonflikte lösen

In Cloud Monitoring können Labels entweder zum Messwert oder zur Ressource gehören. Wenn ein Messwertlabel denselben Schlüsselnamen wie ein Ressourcenlabel hat, können Sie speziell auf das Messwertlabel verweisen, indem Sie dem Labelschlüsselnamen in Ihrer Abfrage das Präfix metric_ hinzufügen. Wenn Sie beispielsweise ein Ressourcenlabel und ein Messwertlabel mit dem Namen pod_name im Messwert logging.googleapis.com/user/widget_count haben, können Sie mit logging_googleapis_com:user_widget_count{pod_name="resource_label_value"} nach dem Ressourcenlabel filtern. Sie können das Messwertlabel mit logging_googleapis_com:user_widget_count{metric_pod_name="metric_label_value"} filtern.

Regeln und Benachrichtigungen

Sie können Cloud Monitoring-Messwerte sowohl in Aufnahme- als auch in Benachrichtigungsregeln verwenden. Eine Anleitung finden Sie unter Verwaltete Regelauswertung und Benachrichtigungen oder Selbst bereitgestellte Regelauswertung und Benachrichtigung.

PromQL lernen

Grundlagen zur Verwendung von PromQL erhalten Sie in der Open-Source-Dokumentation. Hier einige nützliche Links:

Unterschiede bei PromQL

PromQL für Managed Service for Prometheus funktioniert möglicherweise etwas anders als Upstream-PromQL. Eine Liste dieser Unterschiede finden Sie unter PromQL-Unterschiede.