Могу ли я использовать списки в Prometheus / Prometheues в Графане?

#prometheus #grafana

Вопрос:

Я выбираю источник / устройство через up{instance='$mac'} in Grafana из источника данных Prometheus. Переменная Grafana $mac -это строка, представляющая имя хоста и т. Д. который я генерирую в зависимости от пользовательского ввода из базы данных SQL (Postgre). Это работает. Теперь я хочу сделать 2 вещи:

  1. Используйте самостоятельно установленную метку (например, местоположение устройства вместо его mac-адреса)
  2. Используйте список / массив mac-адресов instance , а также другую переменную для меток в легенде.

vectors Упомянутый на https://prometheus.io/docs/prometheus/latest/querying/basics/ похоже, это только для значений времени. В основном я ищу что-то эквивалентное IN в SQL.

Ответ №1:

Если я вас правильно понял, вы пытаетесь извлечь из заданной метрики up некоторый массив значений. Это то, что вы делаете по аналогии с IN оператором в SQL. Из документов, которые вы можете использовать =~: Select labels that regex-match the provided string . Например, в приведенном ниже запросе он используется здесь.

 up{job=~"(prometheus|alertmanager)"}
 

или вы можете использовать аналог NOT IN : !~: Select labels that do not regex-match the provided string .

 up{job!~"(prometheus)"}
 

Тогда я думаю, что вы можете заменить значения своими $mac переменными на Графане.