Grafana: Demande de fonctionnalité : Accepter les variables dans les niveaux de seuils de grille

Créé le 10 oct. 2014  ·  66Commentaires  ·  Source: grafana/grafana

Salut @torkelo , il me manque des niveaux de seuils variables par modèle de tableau de bord

Supposons que je conçoive un modèle de tableau de bord de produit (serveur Web Apache par exemple) et que j'ai besoin de surveiller lorsque le temps de réponse est supérieur à un seuil.

Bien que le tableau de bord soit le même, nous pouvons passer à d'autres instances avec des variables, mais le temps de réponse (s'il est bon ou non) dépend du backend qui traite réellement le (peut être un serveur d'applications, peut être un html statique ou peut-être un serveur LAMP) , dans chaque cas, les seuils seront très différents.

Ce serait également une bonne idée de mapper ces seuils (2 chiffres) avec l'une des variables du modèle (nom d'instance) par exemple.

aredashboartemplating arepanegraph typfeature-request

Commentaire le plus utile

@kmoczydlowski @bogatuadrian @sofixa @golddiga @cattt84
S'il vous plaît arrêtez de cogner avec +1, vous envoyez à chaque abonné une notification (et éventuellement un e-mail)

Utilisez les réactions à droite de chaque commentaire pour exprimer votre vote.
Merci

Tous les 66 commentaires

:+1:

J'adorerais voir ça aussi :+1:

je ne sais pas si cela fonctionne du tout, mais peut-être si nous pouvions créer une variable $ seuil liée qui met à jour le seuil en fonction du paramètre de variable, puis le seuil utilise simplement $ seuil

+1 qui ouvrira plein de nouvelles possibilités en terme de tableaux de bord dynamiques

J'aimerais avoir la possibilité de mapper une métrique à un seuil. J'utilise Grafana pour dessiner des graphiques d'utilisation des liens pour le matériel réseau et c'est bien d'avoir un seuil mappé sur le type d'interface. Pour le moment, j'utilise la source SNMP IfSpeed ​​pour obtenir la vitesse de l'interface active et la dessiner comme une métrique non remplie, mais de cette façon, cela brise la fonction dynamique max/min de Grafana.

+1, ce serait très cool d'avoir cette fonctionnalité. J'ai besoin de définir le seuil par les balises influxdb.

Y a-t-il des nouvelles sur ce sujet?

J'en ai aussi grandement besoin. Idéalement, la valeur de la variable du modèle pourrait être le résultat d'une requête (pas le nom du chemin mais la valeur renvoyée par cette requête)

+1

Vous cherchez à définir une valeur seuil de manière dynamique en fonction de la requête Elasticsearch.

Pour utiliser Grafana en remplacement de PNP4Nagios, il serait très utile d'avoir la possibilité de définir des seuils d'avertissement/critique et des valeurs d'axe y min/max basées sur les valeurs de champ !

Besoin de ça aussi.
Par exemple, j'ai un graphique de mémoire et je ne peux pas changer la variable $ server. Les serveurs ont une quantité de mémoire différente et je veux savoir combien en Gio (pas en %) est utilisé, mais je ne me souviens pas de la quantité totale de mémoire sur eux. J'ai donc besoin d'un seuil (ou, peut-être, de Y-Max) avec la variable $ total_mem.

+1 ici besoin d'accepter $variable

+1

Je suis également impatient de cette fonctionnalité, afin que je puisse utiliser un seul modèle de graphique pour plusieurs appareils ayant des seuils différents.

J'aimerais aussi avoir cette fonctionnalité. Quel est l'état actuel de cela ?

+1

+1

+1

+1

@kmoczydlowski @bogatuadrian @sofixa @golddiga @cattt84
S'il vous plaît arrêtez de cogner avec +1, vous envoyez à chaque abonné une notification (et éventuellement un e-mail)

Utilisez les réactions à droite de chaque commentaire pour exprimer votre vote.
Merci

pourquoi ne peut pas utiliser de modèles?

Le seuil dynamique peut-il être implémenté dans la source de données simpleJson.

+1

+1

+1

Nous avons donc maintenant 2018. Qu'en est-il de cette fonctionnalité ?

+1

+1 à ce sujet.

Comment est-ce ouvert depuis 4 ans ? L'un de nos cas d'utilisation est la surveillance des quotas de stockage de fichiers. Le seuil est défini comme une limite souple et une limite stricte, qui sont toutes deux définies par partage de fichiers, il est donc impossible de le définir manuellement car les graphiques sont créés dynamiquement. Il semble trivial de nous laisser choisir une valeur métrique à passer comme valeur au seuil. Ces seuils devraient également pouvoir être utilisés pour l'alerte.

J'étais également après cela (pour le panneau singlestat) et j'ai implémenté une version qui, espérons-le, sera fusionnée dans le plugin tiers singlestat-math (première tentative de création d'un plugin - il peut donc y avoir des bords rugueux).
Le PR est ici : https://github.com/black-mirror-1/singlestat-math/pull/14
Vous pouvez tirer de ma branche si vous voulez l'utiliser maintenant.
Tout ce que vous avez à faire est d'ajouter une source de données supplémentaire, de lui donner un nom et d'utiliser ce nom dans les seuils. Ce plugin prend également en charge les seuils n , ce qui peut être utile à certains.

J'en ai besoin pour vérifier si un travail est en retard. Comme solution de contournement pour l'instant, j'utilise une requête de variable de modèle max(my_prometheus_metric) et la définit sur une variable cachée, puis j'ai une requête supplémentaire pour ma vue de table qui fait abs(my_prometheus_metric - $variable) , et j'ajoute un seuil à cela colonne. Il n'est malheureusement pas possible de masquer une colonne utilisée pour définir la couleur des lignes, donc je serais moi aussi heureux de cette fonctionnalité.

Une mise à jour sur cette fonctionnalité?

@debmalyapan53 Désolé, j'ai laissé tomber la balle à ce sujet - mais je viens de mettre un autre PR contre la dernière version. Espérons qu'il sera fusionné dans pas trop longtemps. Le PR actuel est à: https://github.com/black-mirror-1/singlestat-math/pull/30
À votre santé.

En fait, je souhaite implémenter une zone de texte où l'utilisateur pourra définir une valeur seuil, afin que la même chose puisse être reflétée dans le graphique.

+1

en utilisant le modèle, nous pouvons contourner ce problème, voici ma configuration :

image

image

Notez que j'ai désactivé un serveur au cours des dernières minutes et que le seuil a changé

Malheureusement, cela ne résout pas tout, nous ne pouvons pas "remplir ci-dessus" et ne pouvons pas avoir d'alertes basées sur cela. Ainsi, bien que la solution de contournement fonctionne dans de nombreux cas, elle ne résout pas tous les problèmes, mais grafana devait toujours pouvoir utiliser des variables/requêtes pour configurer les seuils/alertes

5 ans et aucune nouvelle de cet exploit. demander?

J'aimerais être alerté des résultats d'Elastic ML avec Grafana. Exemple de tableau de bord sur lequel j'aimerais alerter. J'ai le seuil inférieur/supérieur dans le graphique qui est le tracé du modèle.

image

+1
c'est une caractéristique très importante. Curios pourquoi est-il à la traîne.

C'est vraiment une fonctionnalité indispensable. Pouvons-nous avoir une mise à jour à ce sujet s'il vous plaît?

C'est vraiment une fonctionnalité indispensable. Pouvons-nous avoir une mise à jour à ce sujet s'il vous plaît?

Je seconde ceci. S'il te plaît s'il te plaît s'il te plaît....

Donc, fondamentalement, cela n'arrivera jamais malgré le fait que beaucoup de gens le demandent ici, et dans une multitude d'autres demandes, rapports de bogues et sur le Web en général au cours des 5 dernières années. Un moyen de prendre vos utilisateurs en compte et d'améliorer votre application.

J'ai besoin de ça aussi.

Vérifiez https://github.com/grafana/grafana/pull/19102 -- Si vous pouvez utiliser votre variable pour générer une valeur à partir d'une requête, cela pourrait fonctionner. "SELECT ${var} FROM xyz"

Comme solution de contournement, je fais ce qui suit. Il suppose que le deuxième axe Y n'est pas utilisé (ou qu'il a des valeurs min et max fixes).

Exemple :
image

Il y a comment le créer:

  • Ajoutez une métrique nommée "down" (ou autre)

    • Utilisez une requête Prometheus comme celle-ci (plusieurs lignes !). voir les notes ci-dessous.

      1 - (day_of_week(vector(time())) > bool 0)
      * (day_of_week(vector(time())) < bool 6)
      * (((hour(vector(time()))  >= bool 7 - 2)))
      * (hour(vector(time())) < bool 19 - 2)
  • Ajoutez un remplacement de visualisation pour cette métrique nommée "down" :

    • Remplissage de ligne : 1

    • Largeur de ligne : 0

    • Ligne d'escalier : vrai

    • Couleur : _un gris clair, comme_ "rgb (167, 167, 167)"

    • Axe Y : 2

    • Z-index : 1 _(devant les autres métriques)_

    • Légende : faux

    • Masquer dans l'info-bulle : false

  • Configurez la visualisation du 2e axe Y :

    • min : 0

    • max : 1 (ou ce que vous voulez... multipliez la métrique ci-dessus en conséquence)

Remarque concernant la requête :

  • Dans l'exemple de requête ci-dessus, "7-2" correspond à 7h00 du matin, le "-2" correspond à mon fuseau horaire et à l'heure d'été !
  • L'exemple de requête gère également le week-end
  • Vous pouvez répondre à ce commentaire si vous adaptez la requête pour d'autres sources de données

Ugh... vraiment besoin de ça et c'est 2019... c'est un vieux fil

la même chose ici... n'arrivera probablement jamais ?

Est-ce difficile à mettre en œuvre ou tout simplement personne ne veut le faire ? Si oui j'aimerais essayer

@EggTronic J'ai regardé ce que cela impliquerait, je pense que cela se résume à l'objet Threshold :
https://github.com/grafana/grafana/blob/4a25ec0d36edcb551e6efd60e665df0fa93cb954/packages/grafana-data/src/types/threshold.ts#L1 -L4

Je cherchais à mettre en œuvre cela pour le bar-jauge spécifiquement. Le ou les seuils sont utilisés ici :
https://github.com/grafana/grafana/blob/4a25ec0d36edcb551e6efd60e665df0fa93cb954/public/app/plugins/panel/bargauge/BarGaugePanel.tsx#L37

Et plus bas dans le même fichier, une fonction replaceVariables est utilisée, je pense qu'elle est utilisée pour évaluer les variables grafana :
https://github.com/grafana/grafana/blob/4a25ec0d36edcb551e6efd60e665df0fa93cb954/public/app/plugins/panel/bargauge/BarGaugePanel.tsx#L53 -L61

La façon dont je peux voir que cela est fait est

  1. Modifiez le type Threshold afin que value puisse être un nom de variable (chaîne) à la place.
  2. Ajoutez une logique à chaque type de panneau pour appeler replaceVariables sur n'importe quel Threshold.value qui sont des chaînes.
  3. Faire en sorte que la boîte de réglage du seuil accepte les chaînes (noms de variables).

Je ne sais pas si la conception est appropriée pour la base de code, c'est un peu un hack.

+1 pour la demande de fonctionnalité

+1

Je pourrais vraiment l'utiliser pour le panneau de jauge. Je souhaite afficher une jauge pour chaque taglogger écrivant dans ma base de données. Chaque enregistreur rapporte son taux d'acquisition et son taux d'acquisition théorique optimal. Mais chaque enregistreur a besoin de seuils différents pour leurs taux d'ingestion respectifs.

+1

Existe-t-il une solution de contournement pour ce type de fonctionnalité (pour le panneau SingleStat) ? Ou les seuils peuvent-ils être mis à jour avec une requête MySQL ?

Quel est le statut de ces problèmes ? Cela va-t-il être mis en œuvre ? Ou est-ce trop difficile à mettre en œuvre ?

J'ai déjà demandé ceci mais sans réponse : #25313

+1

Je ne sais pas si la conception est appropriée pour la base de code, c'est un peu un hack.

@liamdiprose IMHO est approprié, cela vous dérangeait-il de proposer une pull request ?
Une raison théorique pour éviter les légendes dynamiques est qu'un modèle de panel doit être référé à un ensemble de données uniforme. Avoir une légende dynamique ouverte pour avoir un modèle générique pouvant gérer différents flux de données et cela pourrait ne pas être correct. À mon humble avis, je suis confronté à un cas d'utilisation où plusieurs index partagent une disposition de panneau similaire avec différentes échelles et mappages de couleurs.
Avoir des seuils dynamiques me permet de gérer un seul tableau de bord au lieu de le répliquer pour différents index.

Des retours de @torkelo ou d'autres dans le laboratoire grafana ou des contributeurs principaux ? certaines fonctionnalités sont gérées dans https://github.com/grafana/grafana/pull/24763 ?

@luipir Pas encore, nous avons vraiment besoin de cette fonctionnalité au travail mais elle est toujours dans mon carnet de commandes. :cri:

Grafana 7 semble évoluer dans le sens des données, je pense donc que cette fonctionnalité sera éventuellement ajoutée. @ryantxu de GrafanaLabs a mentionné que l'utilisation de variables de cette manière était à venir dans un fil de discussion similaire : https://github.com/grafana/grafana/issues/4929#issuecomment -601958742

J'aimerais voir chaque boîte de réglage accepter des variables. Peut-être que chaque valeur fournie par l'utilisateur devrait être « évaluée » : les noms de variables s'évaluent à leur valeur, les valeurs s'évaluent à elles-mêmes. L'évaluation des variables aura besoin de la fonction replaceVariables correcte (fournie au panneau en tant qu'accessoire) pour fonctionner.

Ce serait bien si replaceVariables était remplacé par eval(varname) -> value , et alors replaceVariables peut devenir une fonction utilitaire qui prend eval comme paramètre.

+1

+1

+1

+1

Ce serait une fonctionnalité extrêmement utile lors de la cartographie des actions. Par exemple, je peux avoir des seuils basés sur le prix d'ouverture d'un symbole boursier sans le représenter sous forme de métrique. Le problème que j'ai rencontré pour le représenter en tant que métrique est qu'il aplatira/normalisera le graphique.

Sans tracer le prix d'ouverture :
image

Après avoir tracé le prix d'ouverture :
image

Définition du prix d'ouverture comme seuil (ligne bleue) :
image

+1

+1, c'est une fonctionnalité demandée depuis longtemps et qui semble assez "standard". Dans l'attente d'une future mise à jour avec cette fonctionnalité !

+1

Au lieu du +1 ennuyeux, je mets un 🍺 (géant) comme prime pour celui qui apporte cette fonctionnalité à la réalité.

Exemple de cas d'utilisation : en essayant de créer un tableau de bord SLO générique pour tous les points de terminaison d'une API, je souhaite que le tableau de bord reçoive les conditions SLO via l'URL du tableau de bord.

J'ai eu un problème similaire, j'ai une requête mysql et un tableau de bord avec des variables pour min et max. Ne pas pouvoir utiliser les variables min/max dans les seuils était décevant. Mais j'ai réussi à tracer quelque chose de similaire, ce qui m'a au moins permis de visualiser les valeurs aberrantes.

  1. Dans la requête, référencez vos variables en tant que colonnes supplémentaires.
    select time, data, ${minimum} as data_min, ${maximum} as data_max from table
  2. Ajouter un remplacement de série, avec une correspondance regex sur le min et le max (par exemple /data_(min|max)/ )
  3. Définissez le remplacement sur :

    1. Activer les lignes (en supposant que le graphique est autrement des points)

    2. Désactiver les points

    3. Utilisez une couleur différente (ou utilisez des remplacements individuels pour min/max)

    4. Désactiver la légende

    5. Désactiver les info-bulles

Si vous avez une colonne métrique, vous voudrez probablement nommer votre valeur de données comme '' ( data as '' ) ce qui laisse la légende/l'info-bulle sans fioritures.

Bien sûr, il ne s'agit que d'une solution de contournement visuelle, vous n'obtenez pas les autres avantages des seuils, donc cette demande de fonctionnalité est toujours nécessaire.

Cette page vous a été utile?
0 / 5 - 0 notes