Я настраиваю мониторинг инфраструктуры своей компании. Я установил Grafana с источником данных Prometheus. Я построил свои дашборды, и у меня довольно "острые" графики. Мне было интересно, есть ли способ немного сгладить его, чтобы он был более читабельным.
Спасибо !
Я думаю, что ты можешь использовать ставка в вашем запросе Prometheus, например:
Возвращает 5-минутную частоту метрики http_requests_total за последние 30 минут с разрешением 1 минуту.
скорость (http_requests_total [5m]) [30m: 1m]
Я должен предварить свой ответ, сказав, что я новичок в Prometheus и сам привык к PromQL.
Я должен напомнить себе, что «скорость» - это то, что следует применять только к счетчикам, а не к датчикам (в вашем примере это нормально). Я собираюсь использовать количество раз, когда хост вызвал connect () для TCP-сокета.
node_netstat_Tcp_ActiveOpens
На графике он всегда увеличивается, поэтому очень вероятно, что это счетчик, даже если источник данных экспортера узлов говорит следующее:
# HELP node_netstat_Tcp_ActiveOpens Statistic TcpActiveOpens.
# TYPE node_netstat_Tcp_ActiveOpens untyped
node_netstat_Tcp_ActiveOpens 20684
У меня есть только экземпляр, который я отслеживаю, но давайте добавим туда фильтр, просто мы не будем запрашивать слишком много временных рядов:
node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}
Добавим к этому «ставку»:
rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"})
О, но здесь не удалось сказать «вектор диапазона ожидаемого типа при вызове функции rate» получил мгновенный вектор »; чтобы построить график, нам нужно что-то типа «мгновенный вектор», но у нас есть «вектор скорости». Нам нужно указать квант (я не думаю, что используется термин Прометей), по которому будут агрегироваться / обрабатывать данные временного ряда.
rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}[5m])
Хорошо, это работает, и мы можем поиграть со сглаживанием, изменив 5 м на 20 м и т. Д.
Но всплески могут быть полезны, а «скорость» - лишь один из способов работы с данными.
Я думаю, что полезно посмотреть на определенный процентиль данных, который помогает удалить выбросы, но все же придает некоторую живость отображаемым данным. Здесь я указал 90-й процентиль.
quantile(0.9, rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}[5m]))
Вы захотите попробовать эти еще одни реалистичные данные, чтобы найти хороший квантиль (0,9) и окно (5 м).
Давайте просто предположим, что у этих данных есть шаблонный шаблон, и мы хотим сравнить данные с данными за 1 день до этого:
quantile(0.9, rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}[5m]))
- quantile(0.9, rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}[5m] offset 1d))
Надеюсь, это даст вам некоторое представление; по крайней мере, это полезная практика для меня :)
Ура, Кэмерон