템플릿 변수 평가
템플릿 변수 평가 (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 형식으로 반환해요.
특정 시간으로 범위가 지정된 링크 (Scope links to specific times)
평가 연산자를 사용해 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 %}