Как вывести ноль вместо последнего значения в прометей + графана
Я использую 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)