Le calcul du ratio de deux métriques dans Cloud Monitoring vous permet de transformer des décomptes bruts en proportions ou en taux, par exemple en calculant le pourcentage de requêtes HTTP ayant échoué par rapport au nombre total de requêtes. Vous pouvez représenter graphiquement et surveiller les ratios de métriques à l'aide de PromQL, de l'interface basée sur les menus de la Google Cloud console, ou des filtres de séries temporelles dans l'API Cloud Monitoring. Comprendre l'interaction entre les taux d'échantillonnage, les regroupements de libellés et les périodes d'alignement vous aide à éviter les anomalies lors de leur configuration.
Bonnes pratiques
Pour surveiller ou représenter graphiquement un ratio de données de métriques, nous vous recommandons d'utiliser PromQL. Vous pouvez utiliser PromQL avec l' API Cloud Monitoring et avec la Google Cloud console. La Google Cloud console inclut un éditeur de code qui fournit des suggestions, une détection des erreurs et d'autres fonctionnalités pour créer des requêtes PromQL valides.
Pour créer une règle d'alerte qui surveille un ratio de métriques lorsque vous ne connaissez pas PromQL, utilisez l'API Cloud Monitoring et incluez un filtre de séries temporelles. Pour obtenir un exemple, consultez Ratio de métriques.
Pour représenter graphiquement un ratio de données de métriques lorsque vous ne connaissez pas PromQL, nous vous recommandons d'utiliser la Google Cloud console et une interface basée sur les menus. Pour obtenir des instructions détaillées, consultez Représenter graphiquement un ratio de métriques et Ajouter des graphiques et des tableaux à un tableau de bord personnalisé.
Restrictions liées aux ratios
Lorsque vous configurez un ratio, les restrictions suivantes s'appliquent :
Après l'agrégation, les libellés de la série temporelle du dénominateur doivent être identiques ou un sous-ensemble des libellés de la série temporelle du numérateur.
Nous vous recommandons de sélectionner des options d'agrégation de sorte qu'après l'agrégation, les séries temporelles du numérateur et du dénominateur aient les mêmes libellés.
Prenons l'exemple d'une configuration dans laquelle la série temporelle du numérateur comporte les libellés
method,quota_metricetproject_id. La série temporelle du dénominateur comporte les libelléslimit_name,quota_metricetproject_id. Les choix valides pour le regroupement du dénominateur dépendent des sélections du numérateur :- Numérateur regroupé par le libellé
method: combinez la série temporelle du dénominateur en une seule série temporelle. Aucun autre regroupement ne permet que les libellés de la série temporelle du dénominateur soient un sous-ensemble des libellés de la série temporelle du numérateur. - Numérateur regroupé par le libellé
quota_metric: regroupez le dénominateur par ce libellé ou combinez toutes les séries temporelles du dénominateur en une seule série temporelle. - Numérateur regroupé par les libellés
quota_metricetproject_id: regroupez le dénominateur par les deux libellés, par un seul libellé ou combinez la série temporelle du dénominateur en une seule série temporelle.
Les options d'agrégation valides pour le dénominateur éliminent toujours le libellé
limit_namede la série temporelle regroupée, car ce libellé n'est pas présent dans la série temporelle du numérateur.- Numérateur regroupé par le libellé
La période d'alignement doit être la même pour le numérateur et le dénominateur lors de la configuration d'un graphique à l'aide de la Google Cloud console. Toutefois, ces champs peuvent être différents lorsque vous utilisez l'API Cloud Monitoring.
Nous vous recommandons d'utiliser la même période d'alignement pour le numérateur et le dénominateur, quel que soit l'outil que vous utilisez pour créer le graphique.
Le numérateur et le dénominateur doivent avoir le même type de valeur. Par exemple, lorsque le numérateur est de type
DOUBLE, le dénominateur doit également être de typeDOUBLE.Les ratios nécessitent que les métriques du numérateur et du dénominateur aient un type de valeur
DOUBLEouINT64.Les séries temporelles alignées du numérateur et du dénominateur doivent avoir le même type de métrique. Lorsque les deux métriques sont de types différents, vous devez utiliser des aligneurs pour les convertir en un même type.
Prenons l'exemple d'une configuration dans laquelle une métrique
DELTAest sélectionnée pour le numérateur et une métriqueGAUGEest sélectionnée pour le dénominateur. Dans ce cas, utilisez l'aligneur de taux,ALIGN_RATE, pour convertir la métriqueDELTAen métriqueGAUGE. Pour obtenir un exemple, consultez Règles d'alerte de ratio sur l'utilisation du quota de débit pour une limite.Pour les ratios qui ne sont pas définis avec PromQL, le type de ressource surveillée doit être le même pour le numérateur et le dénominateur.
Par exemple, si la ressource de la métrique du numérateur est une instance Compute Engine, la ressource de la métrique du dénominateur doit également être une instance Compute Engine.
Anomalies dues à des différences d'échantillonnage et d'alignement
En général, il est préférable de calculer les ratios en fonction des séries temporelles collectées pour un type de métrique unique, à l'aide de valeurs de libellés. Un ratio calculé sur deux types de métriques différents est sujet à des anomalies en raison de périodes d'échantillonnage et de fenêtres d'alignement différentes.
Par exemple, supposons que vous disposiez de deux types de métriques différents (nombre de RPC total et nombre de RPC en erreur), et que vous souhaitiez calculer le ratio du nombre de RPC en erreur par rapport au nombre de RPC total. Les RPC ayant échoué sont comptabilisés dans la série temporelle des deux types de métriques. Par conséquent, lorsque vous alignez la série temporelle, il se peut qu'un RPC en échec n'apparaisse pas dans le même intervalle d'alignement pour les deux séries temporelles. Cette différence peut se produire pour plusieurs raisons :
- Étant donné que deux séries temporelles enregistrent le même événement, deux valeurs de compteur sous-jacentes mettent en œuvre la collection et ne sont pas mises à jour de manière atomique.
- Les taux d'échantillonnage peuvent varier. Lorsque les séries temporelles sont alignées sur une période commune, les décomptes d'un seul événement peuvent apparaître dans des intervalles d'alignement adjacents dans la série temporelle des différentes métriques.
La différence du nombre de valeurs dans les intervalles d'alignement correspondants peut générer des valeurs de ratio error/total insensées, telles que 1/0 ou 2/1.
Les ratios de nombres plus élevés sont moins susceptibles de générer des valeurs insensées. Vous pouvez obtenir des nombres plus élevés par agrégation, soit en utilisant une fenêtre d'alignement plus longue que la période d'échantillonnage, soit en regroupant les données pour certains libellés. Ces techniques réduisent l'effet de différences mineures du nombre de points dans un intervalle donné. En d'autres termes, une disparité de deux points est plus importante lorsque le nombre attendu de points dans un intervalle est de 3 par rapport au nombre attendu de 300.
Si vous utilisez des types de métriques intégrés, vous n'aurez peut-être pas d'autre choix que de calculer les ratios sur l'ensemble des types de métriques pour obtenir la valeur souhaitée.
Si vous concevez des métriques personnalisées pouvant comptabiliser la même chose (par exemple, des RPC qui renvoient des états d'erreur) dans deux métriques différentes, envisagez plutôt d'utiliser une seule métrique, qui inclut un décompte à la fois. Par exemple, supposons que vous comptabilisiez les RPC et que vous souhaitiez suivre le ratio entre les RPC ayant échoué et tous les RPC. Pour résoudre ce problème, créez un seul type de métrique pour comptabiliser les RPC et utilisez un libellé pour enregistrer l'état de l'appel, y compris l'état "OK". Chaque valeur d'état (erreur ou état "OK") est ensuite enregistrée en mettant à jour un seul compteur pour ce cas.
Fausses alertes dues à des anomalies de calcul de ratio
Pour éviter les fausses alertes dues à des erreurs temporaires ou à des données manquantes, définissez la durée de votre requête PromQL sur au moins le double de l'intervalle d'évaluation :
- Google Cloud console : définissez la durée dans le champ Durée lors de la configuration de la condition d'alerte.
- API Cloud Monitoring ou Terraform : spécifiez la durée à l'aide du champ
AlertPolicy.Condition.PrometheusQueryLanguageCondition.duration.
Étape suivante
Pour en savoir plus sur l'utilisation de PromQL pour configurer des règles d'alerte, consultez la présentation des alertes PromQL.
Pour en savoir plus sur la création de graphiques, consultez les documents suivants :
- Pour créer des graphiques temporaires, consultez Explorateur de métriques.
- Pour ajouter des graphiques à un tableau de bord à l'aide de la Google Cloud console, consultez Ajouter des graphiques et des tableaux à un tableau de bord personnalisé.
- Pour gérer les graphiques à l'aide de l'API Cloud Monitoring, consultez Créer et gérer des tableaux de bord à l'aide de l'API.