У меня странная проблема, и я надеялся найти решение здесь. Я использую модуль push_to_gateway, чтобы позволить Прометею собрать некоторые данные. Процесс состоит из 2 шагов:
1) объявить переменную следующим образом:
g = Gauge(ctr, '', ['host', 'ip'], registry=registry)
host и ip - метки, используемые в БД Prometheus. Реестр не имеет отношения к моей проблеме.
2) Заполните данные:
g.labels(hostname, ipaddr).set(val)
hostname и ipaddr - переменные, содержащие значения
Когда вы посмотрите на данные в Prometheus, вы увидите что-то вроде:
ctr{hostname="node1",ip="1.1.1.1"} -1
Поскольку у меня есть тысячи счетчиков для импорта в Prometheus, и все они имеют разные наборы меток, я хочу создать заказной текст, содержащий метки и их значения, при анализе данных и использовании его для генерации 1) и 2) , Заполнить часть 1) легко. Я просто набираю:
g = Gauge(ctr, '', list(labels.keys()), registry=registry)
Строка ожидает список и получает список.
Но как мне заполнить часть 2), поскольку g.labels ожидает имя хоста и ipaddr, разделенные символом ',' (то есть не списком). Если я делаю list (tags.values ()), то он отображается в виде списка в скобках, и это не работает. Мне нужно, чтобы список (label.values ()) расширился до «node1», «1.1.1.1» внутри скобок, чтобы это работало, и я понятия не имею, как это сделать (если это вообще возможно), чтобы 2 ) выглядит так:
g.labels('node1', '1.1.1.1').set(val)
Thx