본문 바로가기
WIKI 기술 지식 베이스

템플릿 변수 평가

원문 보기 위키 갱신

템플릿 변수 평가 (Template Variable Evaluation)

모니터 알림 메시지에서 eval 구문을 사용해 템플릿 변수의 출력을 수정할 수 있어요. eval 구문은 숫자 또는 문자열 값을 가진 템플릿 변수에 여러 수학 연산과 함수를 적용할 수 있게 해줘요.

출처: 문서

본문

연산자 (Operators)

평가 연산자(evaluation operators)를 사용하면 숫자 템플릿 변수에 기본 산술 연산을 수행할 수 있어요. 구문은 다음 형식을 사용해요. 참고: 표현식은 반드시 따옴표(")로 감싸야 해요.

{{eval "TEMPLATE_VARIABLE_NAME+1-2*3/4"}}

다음 연산자가 지원돼요:

연산자 (Operator) 설명 (Description)
+ 덧셈 (Addition)
- 뺄셈 (Subtraction)
\* 곱셈 (Multiplication)
/ 나눗셈 (Division)
^ 거듭제곱 (Exponentiation)
% 모듈로 (Modulo)

예시 (Example)

{{last_triggered_at_epoch}} 템플릿 변수는 모니터가 마지막으로 트리거된 UTC 시간을 밀리초 epoch 형식으로 반환해요.

평가 연산자를 사용해 15분(15 * 60 * 1000밀리초)을 빼는 것은 다음과 같이 할 수 있어요:

{{eval "last_triggered_at_epoch-15*60*1000"}}

이는 모니터 알림 메시지에서 Datadog의 다른 페이지나 다른 워크플로 도구로 연결되는 시간 범위가 지정된 링크를 만드는 데 유용해요. 예를 들어 {{last_triggered_at_epoch}}에 평가 연산자를 사용해 Datadog Log Explorer로 연결되는 시간 범위가 지정된 링크를 만들 수 있어요:

https://app.datadoghq.com/logs?from_ts={{eval "last_triggered_at_epoch-15*60*1000"}}&to_ts={{last_triggered_at_epoch}}&live=false

시간대에 따라 다른 팀으로 알림 라우팅하기 (Routing notifications to different teams based on time of day)

last_triggered_at_epoch 변수의 모듈로 % 평가를 {{#is_exact_match}}{{/is_exact_match}}와 결합해 시간대(UTC)에 따라 알림 라우팅을 커스터마이징할 수 있어요:

{{#is_exact_match (eval "int(last_triggered_at_epoch / 3600000 % 24)") "8" "9" "10" "11" "12" "13"}}  
Handle that should receive notification if time is between 8AM and 2PM UTC
{{/is_exact_match}}

참고: 일정에 따라 모니터를 평가해야 한다면 Custom Schedules를 대신 참고하세요.

함수 (Functions)

템플릿 변수의 값은 평가 함수의 입력으로 사용되어 템플릿 변수의 형식을 변경하거나 값에 수학 연산을 수행할 수 있어요(해당되는 경우). 구문은 다음 형식을 사용해요. 참고: 표현식은 반드시 따옴표(")로 감싸야 해요.

{{eval "function(TEMPLATE_VARIABLE_NAME)"}}

{% tab title="Numeric variable" %} 다음 함수들은 숫자 템플릿 변수의 값이 표시되는 방식을 변경해요:

함수 (Function) 설명 (Description)
humanize_bytes(var) var 바이트를 사람이 읽기 쉬운 형식으로 반환해요
humanize_bits(var) var 비트를 사람이 읽기 쉬운 형식으로 반환해요
abs(var) var의 절댓값을 반환해요
int(var) var를 내림(floored)한 정수로 반환해요. 즉 소수점 왼쪽 숫자들이에요. 예: var = 12.345라면 int(var)은 12를 반환해요.
float(var) var를 부동소수점(float)으로 반환해요
trunc(var) var를 정수로 반환해요. int 함수의 별칭이에요
dec(var) 소수점 오른쪽 숫자들을 반환해요. 예: var = 12.345라면 dec(var)은 0.345를 반환해요.

다음 함수들은 숫자 템플릿 변수의 값을 수학 함수의 입력으로 사용해요:

함수 (Function) 설명 (Description)
round(var) var를 가장 가까운 정수로 반올림해요
round(var, n) var를 지정된 자릿수(n)로 반올림해요. 예: round(12.376, 2) = 12.38
ceil(var) var의 올림값(ceiling, var보다 크거나 같은 가장 작은 정수)을 반환해요
floor(var) var의 내림값(floor, var보다 작거나 같은 가장 큰 정수)을 반환해요
sgn(var) var에서 평가된 부호 함수의 값을 반환해요: var > 0이면 sgn(var) = 1, var = 0이면 sgn(var) = 0, var < 0이면 sgn(var) = -1
to_bool(var) var = 1이면 true를 반환해요. var = 0이면 false를 반환해요
exp(var) e(자연로그의 밑)를 var 거듭제곱한 값을 반환해요
log10(var) var의 밑이 10인 로그를 반환해요
sin(var) var 라디안의 사인(sine)을 반환해요
sinh(var) var의 쌍곡사인(hyperbolic sine)을 반환해요
asin(var) var의 아크사인(arc sine, 라디안)을 반환해요
asinh(var) var의 역쌍곡사인(inverse hyperbolic sine)을 반환해요
cos(var) var 라디안의 코사인(cosine)을 반환해요
cosh(var) var의 쌍곡코사인(hyperbolic cosine)을 반환해요
acos(var) var의 아크코사인(arc cosine, 라디안)을 반환해요
acosh(var) var의 역쌍곡코사인(inverse hyperbolic cosine)을 반환해요
tan(var) var 라디안의 탄젠트(tangent)를 반환해요
tanh(var) var의 쌍곡탄젠트(hyperbolic tangent)를 반환해요
atan(var) var의 아크탄젠트(arc tangent, 라디안)를 반환해요
atan2(var1, var2) atan(var1 / var2)을 라디안으로 반환해요
atanh(var) var의 역쌍곡탄젠트(inverse hyperbolic tangent)를 반환해요

예시 (Examples)

{{value}} 템플릿 변수의 소수 자릿수가 특정 사용 사례에 불필요하다면, int 함수를 사용해 {{value}}를 정수로 평가해서 가독성을 높이고 소수를 제거할 수 있어요:

{{eval "int(value)"}}

{{value}}가 많은 수의 바이트나 비트로 평가되고 있다면, humanize_bytes 또는 humanize_bits 함수를 사용해 GB나 MB 같은 더 높은 차수의 메모리 단위로 변환해서 가독성을 높일 수 있어요:

{{eval "humanize_bytes(value)"}}

{{eval "humanize_bits(value)"}}

{% /tab %}

{% tab title="String variable" %} 다음 함수들은 문자열 변수에 특정 연산을 수행하는 데 사용할 수 있어요:

함수 (Function) 설명 (Description)
upper(var) 대문자로 변환된 문자열을 반환해요
lower(var) 소문자로 변환된 문자열을 반환해요
substring(var, start, end) 문자열에서 두 지정된 인덱스(start, end) 사이의 문자를 추출해요. 세 번째 매개변수는 선택적이에요. 예: substring("host:D", 5) = "D"
strip(var, characters) 앞뒤 문자를 제거해요. 두 번째 매개변수가 null이면 문자열 시작과 끝의 공백을 제거해요. 예: strip(" host:E ") = "host:E", strip("abchost:Eabc", "abc") = "host:E"

{% /tab %}