Многозначный Прометей Запрос Графана - PullRequest
2 голосов
/ 20 апреля 2020

Я использую запросы Grafana plus Prometheus для создания информационных панелей в Grafana для Kubernetes. Я беру имя узла (в данном случае 3) в переменной, а затем передаю эти значения другому запросу, чтобы извлечь IP-адреса машин. Извлеченные значения являются правильными. У меня включена опция с несколькими значениями.

Проблема связана с запросом sum(rate(container_cpu_usage_seconds_total{id="/", instance=~"$ip_test:10250"}[1m])) и несколькими IP-адресами, поскольку он принимает только один из них. В другом запросе это работает, но я думаю, что это возможно, потому что другой запрос не имеет :10250 после переменной.

Мой вопрос, знаете ли вы какой-либо способ объединить все порт ip:? Например: XXXX: pppp | XXXX: pppp

1 Ответ

0 голосов
/ 21 апреля 2020

Из нескольких значений, формирующих документацию, переменные Prometheus расширяются до regex :

InfluxDB и Prometheus использует выражения regex, поэтому одна и та же переменная будет интерполируется как (host1 | host2 | host3). Каждое значение также будет экранировано регулярным выражением, если нет, значение с управляющим символом регулярного выражения нарушит выражение регулярного выражения.

Поэтому ваша переменная ip_test = ['127.0.0.1', '127.0.0.2',...] должна быть преобразована в: (127\.0\.0\.1|127\.0\.0\.2).

Это означает, что ваше выражение =~$ip_test:10250 должно быть преобразовано в =~"(127\.0\.0\.1|127\.0\.0\.2):10250", поэтому вам не нужно запрашиваемое многократное расширение.

Причина, по которой оно не работает, заключается в том, что либо документация неверна или есть ошибка в Grafana (протестировано с версией v6.7.2). Я подозреваю, что из моих тестов расширение Prometheus не расширяется с включением (), и в итоге вы получите выражение =~"127\.0\.0\.1|127\.0\.0\.2:10250" - это не то, что вам нужно.

Обходной путь - использовать регулярное выражение =~"${ip_test:regex}:10250".

...