Прометей: предотвратить начало нового временного ряда при смене метки - PullRequest
0 голосов
/ 06 марта 2020

Если предположить следующее значение c:

cpu_count{machine="srv1", owner="Alice", department="ops"} 8
cpu_count{machine="srv1", owner="Bob", department="ops"} 8

Я бы хотел предотвратить запуск нового временного ряда при изменении owner. Это все еще следует рассматривать тот же экземпляр, но я хотел бы иметь возможность посмотреть на owner. Меня не особенно волнует, совпадают ли они только на my_metric{owner=~"Box"} или на обоих my_metric{owner=~"Box"} и my_metric{owner=~"Alice"}, мне просто нужно убедиться, что он не рассчитывается дважды на my_metric{machine=~"srv1"} или my_metric{department=~"ops"} .

Я готов согласиться с тем, что использование меток для группировки экземпляров таким образом не является правильным подходом, но что такое?

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Если вы можете изменить код, было бы лучше иметь метрику c, посвященную владельцу:

 # all metrics are identified a usual
 cpu_count{machine="srv1", department="ops"} 8
 # use an info metrics to give details about owner
 machine_info{machine="srv1", owner="Alice", department="ops"} 1

Вы все равно можете агрегировать нужный вам идентификатор информации:

cpu_count * ON(machine,department) machine_info

Таким образом, owner не загрязняет все ваши метрики. Тем не менее, у вас будут проблемы при смене владельца машины в ожидании исчезновения старого метри c (за 5 минут до устаревания).

Я не пробовал, но можно было бы использовать время, в которое владелец изменился (если вы можете предоставить его) как значение метри c - время эпохи в секундах.

 # owner changed at Sun, 08 Mar 2020 22:05:53 GMT
 machine_info{machine="srv1", owner="Alice", department="ops"} 1583705153
 # Previous owner Sat, 01 Feb 2020 00:00:00 GMT
 machine_info{machine="srv1", owner="Alice", department="ops"} 1580515200

А затем используйте следующее выражение, чтобы получить последнего владельца, когда вам нужно текущий владелец - полезно только в том случае, если владелец сменил его в течение последних 5 минут:

machine_info == ON(machine,department) BOOL (max(machine_info) BY(machine,department) )

Довольно глоток, но он подходит к тому, что вы хотите.

1 голос
/ 06 марта 2020

Когда вы добавляете метку «владелец» в этот вид метрики c Я думаю, вы пытаетесь осуществить sh своего рода «управление активами», которое можно было бы улучшить с помощью какого-либо другого инструмента, разработанного спецификацией c для этой цели. Prometheus не является подходящим инструментом для хранения информации о том, кто использует каждую машину в вашей компании.

Сказал, что каждый раз, когда меняется владелец машины, вы можете обойти эту проблему, удалив старый ряд данных, используя REST API выполняет что-то вроде этого:

curl --silent --user USER:PASS --globoff --request POST "https://PROMETHEUS-SERVER/api/v1/admin/tsdb/delete_series?match[]={machine='srv1',owner='Bob'}"
...