Сглаживание графа Графа
Я устанавливаю контроль над инфраструктурой моей компании. Я установил Графану с источником данных Прометея. Я построил свои инструментальные панели и имею довольно "колючие" графики. Мне было интересно, есть ли способ немного сгладить его, чтобы он был более читабельным.
Благодарность!
2 ответа
Я должен предварить свой ответ, сказав, что я новичок в 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))
Надеюсь, что это дает вам некоторое представление; это, безусловно, полезная практика для меня по крайней мере:)
Ура, Кэмерон