Как использовать 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), ""))
Другие вопросы по тегам