новую серию со значениями среднего использования памяти за последние 3 минуты, чтобы потом использовать это в alert rules с разными порогами:
- record: instance:node_memory_MemUsed:avg_3m_pct
expr: 100 - (avg_over_time(node_memory_MemAvailable_bytes[3m]) / node_memory_MemTotal_bytes) * 100
В общем, оно возвращает то, что нужно (ну, я так думаю), однако, это нод экспортер, который собирает данные с vm (ну, в моей лабе только vm), память которых может измениться, в таком случае получается, что available оценивается за 3 минуты, а total берётся последний из серии. Я не очень понимаю, следует ли заморачиваться с этим. Ну и вопрос про алерт рул, очевидно, что в алерт нет смысла задавать период оценки через for, ведь в новой тайм серии значения уже за 3 минуты, верно? Или есть какие-то нюансы (ну, кроме того, что в случае изменения интервала в record я получу новую серию)?
Советую заменить avg_over_time на min_over_time и увеличить интервал времени в квадратных скобках с 3 минут хотя бы до 30 минут. avg_over_time в этом алерте не имеет смысла, т.к., если за последние 30 минут в течение одной минуты оставалось почти 0 байт свободной памяти, а в оставшиеся 29 минут - вся память была свободна, то avg_over_time за 30 минут вернет 97% свободной памяти. Но это не имеет смысла, т.к., если бы в ту минуту, когда свободной памяти оставалось совсем мало, она бы вообще закончилась, то пришел бы oom killer и замочил пару жирных процессов на хосте. Вряд ли это то, что вы ожидаете, наблюдая 97% свободной памяти в среднем за последние полчаса.
Спасибо за ответ. Солгасен, отслеживать минимум доступной памяти логичнее. Ну и действительно, не вижу смсыла использовать for в алерте, если у меня в record используется range vector (или я не прав?). Скажите, а своп рид рейт отслеживаете? Например: rate(node_vmstat_pgmajfault[1m]) > 1000
Нет, т.к., если из-за медленного чтения из свопа приложение начнет тормозить, то жто будет видно по другим метрикам вроде времени выполнения запросов или процента запросов с ошибками. А если своп находится на быстром диске (ram, comprrssed ram или ssd), то вообще пофиг, сколько данных из него читают
да, дисковая латенси вырастет, просто из повышенного своп рейта будет понятно, что это именно из-за неё. хотя, возможно, это действительно избыточно, там ведь и алрет по памяти должен будет выстрелить.
Обсуждают сегодня