2016-11-21 7 views
1

매크로를 사용하여 핵심 계산을 정의합니다. 그리고 가능한 한 매크로를 정의하기위한 매개 변수를 적게하고 싶습니다. 그래서 변수의 계산을 기본으로하는 매크로가 있습니다 $period. 그런 다음 흑연 쿼리에서 period과 관련된 변수를 사용하려고 시도하지만 오류가 발생합니다.bosun에서 흑연 쿼리에 NumberExpr을 사용하는 방법

단순화 된 코드 :

# 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 * 3m

,이 같은 구현이 가능하다 논리가 다른 방식으로?

답변

1

변수는 단지 문자열 대체품입니다. 따옴표로 묶어서 문자 그대로 "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), "")) 
+0

내가 'TOD'와 같은 뭔가를 찾고했지만 아무것도 찾을 수 없습니다. 도와 주셔서 감사합니다. – Microfed

+0

그건 그렇고, 미래의 독자들을 위해 : tod는 몇 분이 아니라 초를 받아 들인다는 것을 알아 두십시오! 그래서, 나의 예제에 대한 적절한 값은'$ control_period_sec = $ period_min * 3 * 60' – Microfed

+1

입니다. @Microfed는 문자열에서 초 수를 반환 할 수있는'd()'func를 봅니다. 그들은 함께 일할 수 있습니다 : 즉'tod (d ("5m") * 5)' –