如何在bosun的石墨查询中使用NumberExpr
How to use NumberExpr in graphite query in 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: time: unknown unit * in duration 5 * 3m
我想知道,是否可以用不同的方式实现相同的逻辑?
变量只是字符串替换。由于您已将其放在引号中,因此您正在制作一个字面意思为“5 * 3”的字符串。
您可以使用 tod()
function:
# 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), ""))
我使用宏来定义核心计算。而且我希望尽可能少地为宏定义参数。所以,我有一个宏,它的计算基于变量 $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: time: unknown unit * in duration 5 * 3m
我想知道,是否可以用不同的方式实现相同的逻辑?
变量只是字符串替换。由于您已将其放在引号中,因此您正在制作一个字面意思为“5 * 3”的字符串。
您可以使用 tod()
function:
# 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), ""))