Compatibilité PromQL

Les requêtes PromQL envoyées à Google Cloud Managed Service pour Prometheus sont partiellement évaluées au niveau du backend Monarch à l'aide du langage MQL (Monitoring Query Language) et il existe des différences connues dans les résultats de la requête. Ce document décrit les différences.

À l'exception des différences mentionnées dans ce document, PromQL dans Managed Service pour Prometheus est identique à celui de PromQL disponible dans la version Prometheus.2.44.

Les fonctions PromQL ajoutées après la version Prometheus 2.44 peuvent ne pas être compatibles.

Correspondance des noms de métriques

Seule une correspondance exacte avec les noms de métriques est acceptée. Vous devez inclure une correspondance exacte du nom de la métrique dans votre requête.

Nous vous recommandons les solutions de contournement suivantes pour les scénarios courants qui utilisent un outil de correspondance d'expression régulière sur le libellé __name__:

  • Les configurations de l'adaptateur Prometheus utilisent souvent l'opérateur =~ pour faire correspondre plusieurs noms de métriques. Pour résoudre ce problème, développez la configuration afin d'utiliser une règle distincte pour chaque métrique et nommez chaque métrique explicitement. Cela vous évite également d'effectuer un autoscaling accidentel sur des métriques inattendues.
  • Les expressions régulières sont souvent utilisées pour représenter graphiquement plusieurs métriques non dimensionnelles sur un même graphique. Par exemple, si vous disposez d'une métrique comme cpu_servicename_usage, vous pouvez utiliser un caractère générique pour représenter graphiquement tous vos services. L'utilisation de métriques non dimensionnelles comme celle-ci est une pratique explicitement déconseillée dans Cloud Monitoring, car elle entraîne des performances de requête extrêmement médiocres. Pour corriger cette utilisation, déplacez toute la dimensionnalité dans les libellés de métrique au lieu d'intégrer des dimensions dans le nom de la métrique.
  • Les requêtes sur plusieurs métriques sont souvent utilisées pour voir quelles métriques sont disponibles pour les requêtes. Nous vous recommandons d'utiliser plutôt l'appel /labels/__name__/values pour découvrir les métriques. Vous pouvez également découvrir des métriques à l'aide de l'interface utilisateur de Cloud Monitoring.
  • La mise en correspondance de plusieurs métriques est utile pour voir combien d'échantillons ont été extraits, ingérés et facturés par métrique. Cloud Monitoring vous fournit ces informations sur la page Gestion des métriques. Vous pouvez également accéder à ces informations en tant que données de métrique à l'aide de la métrique "Échantillons ingérés" ou de la métrique "Échantillons écrits par ID d'attribution".

Obsolescence

L'obsolescence n'est pas disponible dans le backend Monarch.

Calcul de irate

Lorsque la période d'analyse de la fonction irate est inférieure à la taille de l'étape, nous augmentons cette période à la taille de l'étape. Cette modification est nécessaire dans Monarch afin de s'assurer qu'aucune des données d'entrée n'est complètement ignorée dans le résultat. Cette différence s'applique également aux calculs de rate.

Calcul de rate et increase

Lorsque la période d'analyse de la fonction rate est inférieure à la taille de l'étape, nous augmentons cette période à la taille de l'étape. Cette modification est nécessaire dans Monarch afin de s'assurer qu'aucune des données d'entrée n'est complètement ignorée dans le résultat. Cette différence s'applique également aux calculs de irate.

Il existe des différences dans les calculs d'interpolation et d'extrapolation. Monarch utilise un algorithme d'interpolation différent de celui de Prometheus, et cette différence peut produire des résultats légèrement différents. Par exemple, les échantillons de compteur Monarch sont stockés avec une période, alors que Prometheus utilise un seul horodatage. Par conséquent, les échantillons de compteur Monarch peuvent être inclus dans un calcul de taux, même si l'horodatage Prometheus l'exclut. Cela permet généralement d'obtenir des résultats de taux plus précis, en particulier lors de requêtes sur le début ou la fin de la série temporelle sous-jacente.

Calcul de histogram_quantile

Un calcul PromQL de histogram_quantile sur un histogramme sans échantillon génère une valeur NaN. Le calcul du langage de requête interne n'affiche aucune valeur. Le point à l'horodatage est supprimé à la place.

Les différences de calcul de taux peuvent également affecter l'entrée des requêtes histogram_quantile.

Fonctions spécifiques au type sur des métriques de types différents

Bien que Prometheus en amont soit faiblement typé, Monarch est fortement typé. Cela signifie que l'exécution de fonctions spécifiques à un seul type sur une métrique de type différent (par exemple, l'exécution de rate() sur une métrique GAUGE ou de histogram_quantile() sur une métrique COUNTER ou une métrique non typée) ne fonctionnera pas dans Managed Service for Prometheus, même si ces fonctions sont compatibles avec Prometheus en amont.