IBM Cloud Docs
Utilisation de PromQL

Utilisation de PromQL

Utilisez Prometheus Query Language (PromQL) pour sélectionner et agréger des données de mesure de séries temporelles pour Prometheus.

Pour plus d'informations surPromQL, voir le documentation open source.

Création d'une requête PromQL

Créez une requête PromQL pour une métrique dans un tableau de bord existant.

  1. Du Tableau de bord de surveillance, Cliquez sur Ouvrir le tableau de bord pour votre instance de service.
  2. Depuis Tableaux de bord, sélectionnez le tableau de bord où se trouvent les métriques qui feront l'objet de votre requête.
  3. Pour un panneau du tableau de bord, cliquez sur l'icône éditer.
  4. Sélectionnez le type de requête PromQL.
  5. Dans le formulaire de requête, entrez les données Afficher, telles que le nom de la requête et le nom des horodatages.
  6. Entrez votre requête PromQL, par exemple avg(avg_over_time(host_cpu_used_percent[$__interval])) by(kubernetes_cluster_name). Précisez les zones suivantes dans votre requête :
    • Métrique : indiquez la métrique concernée par la requête, par exemple host_cpu_used_percent. Remarque : les valeurs générées dans le tableau sont les métriques les plus récentes.
    • Plage horaire : indiquez une plage horaire ou un intervalle de temps, par exemple 5m. Pour utiliser la plage horaire sélectionnée dans l'interface utilisateur, indiquez $__range. Pour utiliser l'intervalle de temps basé sur la plage horaire sélectionnée dans l'interface utilisateur, indiquez $__interval. Les variables $__range et $__interval de cette requête sont automatiquement mises à jour lorsque la plage horaire de l'interface utilisateur est modifiée. Pour plus d'informations, voir Application des portées du tableau de bord aux requêtes PromQL.
    • Segmentation : choisissez une valeur pour segmenter les données agrégées PromQL, par exemple kubernetes_cluster_name.
  7. Cliquez sur Run Query.
  8. Ajustez les résultats en configurant les éléments Options supplémentaires, tels que les unités dans lesquelles les données sont renvoyées et la façon dont les données sont affichées.

Application des portées de tableau de bord

Pour étendre la portée d'un panneau à partir d'une requête PromQL, vous devez utiliser une variable de portée dans la requête.

Il existe deux variables prédéfinies pour les portées temporelles : vous pouvez les spécifier dans la requête. Ces variables sont automatiquement mises à jour lorsque la plage horaire de l'interface utilisateur du tableau de bord est modifiée.

  • $__range : représente la plage horaire sélectionnée dans l'interface utilisateur du tableau de bord. Par exemple, vous pouvez utiliser cette variable pour calculer une moyenne dans la période sélectionnée.
  • $__interval : représente l'intervalle basé sur la plage horaire sélectionnée dans l'interface utilisateur du tableau de bord. Par exemple, vous pouvez utiliser cette variable pour adapter la plage horaire à différentes opérations, comme la fréquence ou la moyenne au fil du temps.

Supposons par exemple que vous utilisez la requête suivante pour renvoyer le pourcentage d'UC utilisée pour l'ensemble des hôtes :

avg_over_time(host_cpu_used_percent[$__interval])

Cette requête utilise la variable $__interval, qui étend les données à l'intervalle de temps dynamique basé sur la plage horaire sélectionnée dans l'interface utilisateur du tableau de bord.

Vous pouvez également indiquer vos propres variables dans la requête pour étendre sa sortie. Par exemple, pour étendre la requête précédente à une étiquette spécifique telle que hostname, vous devez d'abord définir une variable de portée au niveau du tableau de bord. Indiquez ensuite cette variable dans la requête :

avg_over_time(host_cpu_used_percent{host_name=$hostname}[$__interval])

Utilisation de libellés

Lorsque vous exécutez des requêtes PromQL, les données sont renvoyées avec un ensemble minimal de libellés. Pour ajouter des libellés, comme un nom de cluster, utilisez une opération de correspondance vectorielle.

Prometheus renvoie des mesures d'informations dont la valeur est 1 avec plusieurs libellés. Rejoindre les libellés d'une mesure d'information à l'aide d'une mesure de non-information peut fournir des informations utiles, telles que la valeur d'une mesure dans une application. Vous pouvez utiliser une opération de correspondance vectorielle, similaire à une opération SQL join, pour ajouter les libellés d'information à vos données de métrique.

Exemple : filtrage d'une métrique d'application par cluster

Dans cet exemple, une métrique renvoyée par une application est filtrée par cluster. PromQL agrège une valeur de cette métrique pour un cluster en ne sélectionnant qu'un seul cluster dans la portée.

sum (myapp_metric * on (container_id) kube_pod_container_info{cluster=$cluster})

Cette requête :

  • Filtre la métrique d'information kube_pod_container_info pour un seul cluster spécifique ($cluster, défini comme une variable de tableau de bord) selon le libellé du cluster et pour une série temporelle spécifique.
  • Fait correspondre la métrique myapp_metric à la métrique d'information filtrée kube_pod_container_info lorsque le libellé container_id a la même valeur. Les valeurs sont multipliées, mais comme la métrique d'information a une valeur de 1, le résultat est inchangé. Le libellé de cluster est ajouté aux données obtenues.
  • Ajoute la valeur myapp_metric à la série temporelle via la fonction sum, puis renvoie le résultat.

Exemple : filtrage de l'UC moyenne utilisée par compte et région

Dans cet exemple, l'UC moyenne utilisée (en pourcentage) est calculée pour un compte IBM Cloud et une région spécifiques.

avg by(region,account_id) (host_cpu_used_percent * on (host_mac) group_left(region,account_id) sysdig_cloud_provider_info{account_id=~$account, region=~$region})

Cette requête :

  • Filtre la métrique d'information sysdig_cloud_provider_info uniquement pour une région spécifique ($region) et un compte spécifique ($account), qui sont définis en tant que variables du tableau de bord, de libellés respectifs region et account_id.
  • Fait correspondre la métrique host_cpu_used_percent à la métrique d'information filtrée sysdig_cloud_provider_info lorsque le libellé host_mac a la même valeur. Les valeurs sont multipliées, mais comme la métrique d'information a une valeur de 1, le résultat est inchangé. Les libellés de région et de compte sont ajoutés aux données obtenues.
  • Calcule la moyenne des nouvelles métriques par compte et par région.

Exemple cURL d'extraction de la dernière métrique

Pour obtenir la dernière valeur d'une métrique, indiquez uniquement le nom de la métrique. La valeur la plus récente qui a été générée il y a 5 minutes ou moins est renvoyée.

Par exemple, pour obtenir la dernière valeur de host_cpu_used_percent :

curl <SYSDIG_REST_API_ENDPOINT>/prometheus/api/v1/query?query=sysdig_host_cpu_used_percent -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"

  • <SYSDIG_REST_API_ENDPOINT>indique le noeud final ciblé par l'appel API REST. Pour plus d'informations, voir Noeuds finaux d'API REST Monitoring. Par exemple, le noeud final public d'une instance disponible dans la région us-south est le suivant : https://us-south.monitoring.cloud.ibm.com/api

  • Vous pouvez transmettre plusieurs en-têtes à l'aide de l'indicateur -H.

    Authorization et IBMInstanceID sont les en-têtes requis pour l'authentification.

    SysdigTeamID est facultatif. Lorsque vous spécifiez cet en-tête, vous limitez la demande aux données et aux ressources disponibles pour l'équipe spécifiée.

    Pour obtenir AUTH_TOKEN et GUID, voir En-têtes des jetons IAM.

Tous les tableaux de bord prennent en charge l'API PromQL dans son intégralité. Pour plus d'informations sur ce qui est possible avecPromQL, voir le Prometheus Documentation.