Как вывести ноль вместо последнего значения в прометей + графана

Я использую prometheus + grafana для сбора и отображения метрик. Если одно из моих устройств перестает сообщать о графане, оно продолжит отображать последнее значение. Например, если одно из моих устройств сообщило о своей температуре 2 дня назад, а температура была 50 градусов, графана будет отображать плоскую линию для 50 градусов за последние 2 дня. Я ожидал, что этот график временных рядов упадет до нуля, если устройство не будет сообщать какие-либо показатели.

Так себя ведут прометей и графана или мне что-то не хватает в конфигурации? Я хотел бы, чтобы этот график временных рядов отображал нули, если устройство не сообщает, а не показывал плоскую линию своего последнего значения.

Дополнительная информация:

Использование prometheus.net для отправки метрик на push-шлюз Prometheus.

Я пробовал использовать параметр Null value: null в качестве нуля в разделе Stacking and Null Value графика в grafana.

2 ответа

Решение

Это ожидаемое поведение push-шлюза. Как только значение будет отправлено, оно останется навсегда. Это предполагается командой разработчиков, и TTL или истечение срока действия метрик отклонены.

Обычное решение этой проблемы - отправить временную метку измерения Unix и настроить правило, предупреждающее, если оно становится слишком старым, или использовать UNLESS time() - timestamp_metric состояние.

Вы можете добавить эту часть в конец вашего выражения, чтобы решить эту проблему (она вернет 0, если выражение метрики ничего не вернет):

      OR on () vector(0)
Другие вопросы по тегам