1

我使用宏来定义核心计算。而且我希望为宏定义的参数越少越好。所以,我有一个宏,它的计算基于变量$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 )

产生:

石墨带:时间:未知单位*持续时间5 * 3m

我想知道,是否有可能以不同的方式实现相同的逻辑?

4

1 回答 1

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), ""))
于 2016-11-21T12:27:24.323 回答