1
votes

Prometheus - la même métrique avec des étiquettes différentes est remplacée avant le scraping

Je consomme diverses métriques de jauge de Kafka à Prometheus à l'aide d'une application python personnalisée. Les métriques doivent être consommées plus ou moins dans le même temps (millisecondes). Je ne parviens à supprimer que la dernière métrique de l'exemple ci-dessous, car les trois premières sont immédiatement écrasées.

my_metric_aaa_111{labelA = "aaa", labelB = "111"} 8

Je peux supprimer les quatre métriques en leur attribuant un nom de métrique unique, par exemple:

my_metric{labelA = "aaa", labelB = "111"} 8
my_metric{labelA = "aaa", labelB = "222"} 12
my_metric{labelA = "bbb", labelB = "111"} 7
**my_metric{labelA = "bbb", labelB = "222"} 15**

mais cela ne semble pas être la meilleure pratique et travailler avec de telles métriques est très difficile en général plus tard dans Grafana.

Je peux aussi pousser les métriques en série pour être mis au rebut et réduire l'intervalle de mise au rebut dans la configuration de Prometheus, mais cela va à l'encontre de l'idée générale de la solution.

En dehors des suggestions dont je ne suis absolument pas conscient - est-il possible de garder pour Prometheus la même métrique à mettre au rebut où seules les valeurs d'étiquette diffèrent? La seule discussion que j'ai trouvée à ce sujet est ici sans réponse: https://github.com/prometheus / pushgateway / issues / 65 .

Si ce qui précède n'est pas possible, puis-je en quelque sorte fusionner / joindre / combiner le nom des métriques plus tard dans Prometheus / Grafana pour pouvoir travailler avec elles en fonction de leurs étiquettes? Cela signifie-t-il supprimer la terminaison inutile _aaa_111 dans l'exemple ci-dessus pour travailler avec tout comme une seule métrique?


3 Réponses :


2
votes

1 commentaires

Merci Asier - cela semble fonctionner :) J'essayais de contourner le problème et j'ai concaténé chaque nom de métrique à partir des valeurs d'étiquette par exemple. my_metric_aaa_111 {labelA = "aaa", labelB = "111"} 8 puis dans Grafana, utilisez regex comme {__name __ = ~ "my_metrics. +", labelA = "aaa"} qui fonctionne également mais intuitivement, votre solution est plus efficace. Le cas principal est l'application python qui a besoin d'une refonte, mais c'est un sujet différent.



0
votes

Autre solution : rendez l'action de scraping plus fréquemment répétitive en utilisant l'attribut scrape_interval sur prometheus.yml . Si vous vous basez sur les minutes, convertissez-le en secondes ou en millisecondes pour éviter les conditions de concurrence.

- job_name: 'pushgateway'
  honor_labels: true
  scrape_interval: 50ms
  metrics_path: /metrics
  static_configs:
    - targets:
      - localhost:9091


0 commentaires

0
votes

Vous pouvez également avoir différentes clés de regroupement lorsque vous poussez vers la passerelle push (et cela sera plus beau que d'avoir le même préfixe et des suffixes différents pour les noms de travail)


0 commentaires