понимания разбираю имеющиеся примеры правил, наткнулся на правило, показывающее, что память "недоутилизирована" и её количество можно снизить (summary, etc опускаю):
- alert: HostMemoryIsUnderutilized
expr: '(100 - (rate(node_memory_MemAvailable_bytes[30m]) / node_memory_MemTotal_bytes * 100) < 20) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}'
for: 1w
Я что-то совсем поплыл, какой смысл использовать rate с gauge метрикой, да и вообще зачем здесь функция? Разве не достаточно просто оценить процент свободной памяти памяти '(node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100' и если он больше, скажем, 60-70-80%, файрить варниг? Единственное, слабо представляю, как будет работать отслеживание в течение недели, может лучше делать рекорд рул и на его основе алерт?
Это совершенно неправильный запрос. Как вы правильно заметили, rate() нельзя использовать с метриками типа gauge ( https://docs.victoriametrics.com/keyConcepts.html#gauge ). Тут вместо rate() должна быть функция max_over_time(). Тогда алерт обретает смысл - если в течение последних 30 минут на хосте использовалось максимум 50% от имеющейся памяти, то, возможно, можно либо переехать на хост с меньшим объемом памяти, либо запустить на этом же хосте дополнительные приложения. Но я бы сравнивал не с 50%, а максимум с 30%, т.к., когда на хосте свободно меньше половины памяти, то он может не выдержать ожидаемые периодические всплески нагрузки
Обсуждают сегодня