Как использовать NumberExpr в графическом запросе в Bosun
Я использую макрос для определения основных расчетов. И я хотел бы иметь как можно меньше параметров для макроса. Итак, у меня есть макрос, который основывает свои вычисления на переменной $period
, Затем я пытаюсь использовать переменную, которая связана с period
в запросе графита, но я получаю ошибку.
Упрощенный код:
# defined outside a macro
$period_min = 5
#macro, skipping irrelevant variables
$control_period_min = $period_min * 3
$periods = graphiteBand( $expr, "${control_period_min}m", "1h", "tag", 1 )
Производит:
graphiteBand: время: неизвестная единица * длительностью 5 * 3м
Интересно, возможно ли реализовать ту же логику по-другому?
1 ответ
Решение
Переменные - это просто замена строк. Поскольку вы поместили его в кавычки, вы создаете строку, которая будет буквально "5 * 3".
Что вы можете сделать, это использовать tod()
функция:
# defined outside a macro
$period_min = 5
#macro, skipping irrelevant variables
$control_period_min = $period_min * 3
avg(q("avg:rate:os.cpu{host=*bosun*}", tod($control_period_min), ""))