Процент использования памяти в Bosun
У меня проблема с созданием конкретного графика в Bosun. Этот график должен содержать хосты с самым высоким использованием памяти в процентах, но я не могу найти ни одной пригодной метрики для этого. Конечно, я использую os.mem.used так же, как os.mem.percent_free, но для меня это не совсем полезно. Я подумал о том, чтобы получить две серии из запроса, как для оповещения: общее количество мимрий и использованных, разделить использованное на общее и умножить на 100.
Кажется, проблема в том, что я не могу разделить ряды, поэтому последний шанс - написать собственную метрику, выполнив команду grep и awk free в Linux.
2 ответа
Если вам действительно нужен график процентов_использованных вместо процентов_фреймов, используйте 100-q("sum:os.mem.percent_free{host=$hosts}", "1h", "")
, Затем, если вы хотите отфильтровать ряды на графике, вы должны использовать функцию фильтра. Пример, который вы можете использовать на странице выражения:
$hosts=ny-redis*|ny-devredis*
$limit=5
$avgfree=avg(q("sum:os.mem.percent_free{host=$hosts}", "1h", ""))
$lowest_free=limit(sort($avgfree,"asc"),$limit)
$percent_used=100-q("sum:os.mem.percent_free{host=$hosts}", "1h", "")
filter($percent_used,$lowest_free)
У нас есть два экземпляра dev и два экземпляра prod, поэтому с пределом 5 я вижу их все на графике:
Но вы можете изменить выражение, чтобы использовать $limit=2
и это только показало бы лучшие два:
однако обратите внимание, что масштаб был усечен. Сейчас я не думаю, что есть какой-либо способ указать, какой масштаб использовать на странице выражения или в шаблоне оповещения, но вы можете получить необработанные данные и отобразить их с помощью другой библиотеки графиков.
Если вы открыты для альтернативной серверной части, база данных временных рядов Axibase поддерживает scollector в качестве источника данных.
Раскрытие: я работаю на Axibase. В настоящее время у нас нет драйвера хранилища для самого Bosun, но Bosun выглядит очень многообещающе, поэтому мы смотрим на него.
В ATSD вы вычисляете производные метрики сколлектора следующим образом:
value = 100*value('os.mem.used')/value('os.mem.total')
Иногда вам просто нужно пересчитать один и тот же ряд, например, чтобы преобразовать некоторую метрику в отрицательные значения. В этом случае, replace-value
работает довольно хорошо
replace-value = -value