2017-04-18 4 views
1

J'ai une étiquette cs_job_time dans Prometheus/Alert Manager et vous souhaitez envoyer une alerte e-mail lorsqu'une nouvelle condition est remplie. L'email envoie bien mais est-il possible d'inclure la valeur de cs_job_time dans l'email? Je peux utiliser {{$value}} pour la métrique en question mais je voudrais également imprimer la valeur de cs_job_time.Prometheus alerte email pour afficher la valeur métrique

je suis tombé sur this mais lorsque je tente

time = "{{ `cs_job_time{instance='%s', job='/'}` $labels.instance | query | first }} 

ou des variantes, je reçois le message d'erreur "Error expanding alert template CSJobAlert with data '{map[] 2123}': runtime error: invalid memory address or nil pointer dereference" source="alerting.go:199"

Est-il possible d'envoyer un courriel valeurs métriques?

Répondre

2

Vous manquez l'printf il de l'exemple:

"{{ printf `cs_job_time{instance='%s', job='/'}` $labels.instance | query | first }}" 

Attention cependant, s'il n'y a aucun résultat alors le first échouera. Il est généralement préférable d'utiliser une instruction range, car cela résiste à cela.

+0

merci pour la réponse. Cela a résolu le problème mais je reçois maintenant ': erreur d'appel en premier: premier() appelé sur le vecteur sans éléments" '. Si j'accède' cs_job_time' de Prometheus, il y a une valeur. à 'range' mais j'ai reçu le message d'erreur dans mon post original mais je suis sûr que je le fais mal (désolé, je suis nouveau à Go templating) – iso123

+0

Je suppose que votre étiquette de travail est incorrecte. /prometheus.io/docs/visualization/template_examples/#simple-iteration pour un exemple –

+1

Merci, ça marche.J'ai codé en dur le nom du travail et cela a fonctionné.Si quelqu'un veut simplement la valeur, ajoutez le paramètre 'value' aussi. {{\ 'cs_job_time {instance = 'localhost: 9091', job = 'nom du travail'} \' | query | first | value}} ' – iso123