Mappage des métriques Cloud Monitoring sur PromQL

Vous pouvez utiliser le langage de requête Prometheus (PromQL) pour interroger toutes les métriques stockées par Cloud Monitoring.

Mapper les noms des métriques Cloud Monitoring à PromQL

Les noms de métriques Cloud Monitoring incluent deux composants : un domaine (par exemple, compute.googleapis.com/) et un chemin d'accès (par exemple, instance/disk/max_read_ops_count). Comme PromQL n'accepte que les caractères spéciaux : et _, vous devez d'abord rendre les noms de métriques Monitoring compatibles avec PromQL. Pour mapper les noms des métriques Monitoring à PromQL, appliquez les règles suivantes :

  • Remplacez la première expression / par :.
  • Remplacez tous les autres caractères spéciaux (y compris . et d'autres caractères /) par _.

Le tableau suivant affiche certains noms de métriques et leurs équivalents PromQL :

Nom de la métrique Cloud Monitoring Nom de la métrique PromQL
compute.googleapis.com/instance/cpu/utilization compute_googleapis_com:instance_cpu_utilization
logging.googleapis.com/log_entry_count logging_googleapis_com:log_entry_count

Les métriques à valeur de distribution Cloud Monitoring peuvent être interrogées comme des histogrammes Prometheus, avec le suffixe _count, _sum ou _bucket ajouté au nom de la métrique :

Nom de la métrique Cloud Monitoring Noms de métriques 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

Spécifier un type de ressource surveillée

Lorsqu'une métrique est associée à un seul type de ressource surveillée Cloud Monitoring, les requêtes PromQL fonctionnent sans spécifier manuellement de type de ressource. Cependant, certaines métriques de Cloud Monitoring, y compris certaines métriques système, peuvent être mappées à plusieurs types de ressources.

Pour voir quels types de ressources surveillées sont mappés à une métrique, consultez la liste des métriquesTrusted Cloud by S3NS . Chaque entrée de la documentation répertorie les types de ressources surveillées associés dans la première colonne de chaque entrée sous le type. Si aucun type de ressource surveillée n'est répertorié, la métrique peut être associée à n'importe quel type.

Si une métrique est associée à plusieurs types de ressources, vous devez spécifier le type de ressource dans votre requête PromQL. Il existe un libellé spécial, monitored_resource, qui peut être utilisé pour sélectionner le type de ressource.

Les types de ressources surveillées sont dans la plupart des cas une chaîne courte, telle que gce_instance, mais ils apparaissent parfois comme des URI complets, par exemple, monitoring.googleapis.com/MetricIngestionAttribution. Des requêtes PromQL correctement formées peuvent se présenter comme suit :

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

Si vous n'utilisez pas l'étiquette monitored_resource lorsqu'il est nécessaire, vous obtenez l'erreur suivante :

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

Résoudre les conflits de libellés

Dans Cloud Monitoring, les libellés peuvent appartenir à la métrique ou à la ressource. Si un libellé de métrique porte le même nom de clé qu'un libellé de ressource, vous pouvez faire référence au libellé de métrique spécifiquement en ajoutant le préfixe metric_ au nom de clé de libellé dans votre requête.

Par exemple, supposons que vous disposiez d'un libellé de ressource et d'un libellé de métrique nommés tous deux pod_name dans la métrique example.googleapis.com/user/widget_count.

  • Pour filtrer sur la valeur du libellé de ressource, utilisez
    example_googleapis_com:user_widget_count{pod_name="RESOURCE_LABEL_VALUE"}

  • Pour filtrer sur la valeur du libellé de métrique, utilisez
    example_googleapis_com:user_widget_count{metric_pod_name="METRIC_LABEL_VALUE"}