알림 메시지 템플릿을 사용하면 알림 이벤트 데이터를 타사 대상으로 보내기 전에 사용자 지정할 수 있습니다. 템플릿은 사용자 지정 값을 타사 대상에서 사용하는 값에 매핑합니다.
이를 통해 전송되는 데이터와 위치를 완전히 제어할 수 있을 뿐만 아니라 사용하는 서비스에 완전히 참여할 수 있습니다.
메시지 템플릿 변수 메시지 템플릿은 New Relic 이벤트 데이터를 타사 서비스에서 사용할 수 있는 데이터로 변환하는 데 사용하는 것입니다. 변수는 타사 서비스의 데이터 필드에 매핑되는 특정 속성입니다.
메시지 템플릿은 Handlebars 라는 간단한 템플릿 언어로 작성됩니다. 메시지 템플릿의 변수는 이중 중괄호 {{ }} 안에 표현식 으로 작성됩니다.
알림 메시지 템플릿을 사용하여 New Relic 알림을 외부 서비스의 필드에 매핑합니다.
New Relic 변수 이름은 메시지 템플릿 변수 메뉴에 나열됩니다. 변수는 하위 범주로 그룹화됩니다.
변수 메뉴에서 {{ 입력하여 변수 목록에서 선택하세요. 입력하는 동안 변수 이름이 자동 완성 기능으로 나타납니다. 변수의 유형은 오른쪽에 적혀 있습니다. 만약 해당 개체우에 강화 기능이 있다면, {{ 입력한 후 목록의 맨 위에 나타납니다.
변수 메뉴는 New Relic 알림 필드를 외부 서비스의 필드에 매핑할 때 사용할 수 있는 옵션을 보여줍니다.
중요 이 메타데이터가 포함된 문제가 이미 발생하지 않는 한 accumulations.tag.foo 와 같은 문제별 변수는 표시되지 않습니다. 문제가 발생하기 전에 이를 포함하는 메시지 템플릿을 생성하려면 아래 설명된 #if 문을 사용하세요.
핸들바 구문 사용 이벤트가 알림을 생성하면 메시지 템플릿은 핸들바 변수를 사용하여 알림 데이터를 타사 서비스에서 사용하는 필드에 매핑합니다.
Handlebars 언어는 기본적인 변수 치환 외에도 중첩된 입력 객체 및 함수 평가, 반복문(루프), 조건문 등 다양한 기능을 제공합니다. Handlebars에서는 이러한 기능을 헬퍼라고 부릅니다. 여기를 클릭하시면 도표우에 사용된 변수에 대한 설명을 보실 수 있습니다.
도우미 기능 메시지 템플릿은 핸들바에 내장된 도우미를 지원합니다.
또한 유용할 수 있는 다른 도우미를 추가했습니다.
JSON {{json}} 도우미는 텍스트를 JSON 요소로 변환합니다.
JSON 구문을 사용하는 Webhook의 페이로드를 구성할 때와 JSON 형식 데이터를 전달할 수 있는 기타 상황에 사용합니다.
예를 들어, data 이라는 변수를 사용합니다.
"tags" : [ "infra, team-a" ]
tags 배열을 JSON 요소로 가져오려면 {{json}} 도우미를 사용하세요.
얻을:
탈출하다 {{json}} 도우미와 마찬가지로 {{escape}} 도우미는 JSON 분리 문자를 이스케이프하지만 JSON 출력을 생성하지 않습니다.
변수 값에 메시지 템플릿이 올바른 구문을 가지도록 이스케이프해야 하는 JSON 분리 문자(예: ")가 포함된 텍스트가 포함된 경우 이스케이프 도우미를 사용하세요.
예를 들어 Slack 웹후크 엔드포인트로 보낼 때와 같이 다음을 텍스트로 보내야 합니다.
"text" : "id:{{ escape issueId }},\nEnrichment Data: {{ escape [latest my_enrichment] }},\nDescription:{{ escape accumulations.conditionDescription }}"
평등 같음 {{#eq}} 도우미를 사용하여 변수를 비교합니다.
Compares variables a and b, renders 'yes' or 'no':
{{ #eq a b }} yes {{ else }} no {{ /eq }}
Compares string value "a" to variable b, renders 'yes' or 'no':
{{ #eq "a" b }} yes {{ else }} no {{ /eq }}
Renders 'true' or 'false':
{{ eq a b yes = 'y' no = 'n' }}
포함 {{#contains}} 도우미를 사용하여 변수를 비교합니다.
Asserts that b contains a, renders 'yes' or 'no':
{{ #contains a b }} yes {{ else }} no {{ /contains }}
Asserts that variable b contains string value "a", renders 'yes' or 'no':
{{ #contains "a" b }} yes {{ else }} no {{ /contains }}
Renders 'true' or 'false':
{{ contains a b yes = 'y' no = 'n' }}
수학 {{#math}} 사용하여 간단한 수학 연산을 수행합니다.
Renders addition of two number values:
{{ #math openIncidentsCount '+' closedIncidentsCount }} {{ /math }}
Renders subtraction of two number values:
{{ #math createdAt '-' closedAt }} {{ /math }}
Renders multiplication of two number values:
{{ #math 3 '*' 3 }} {{ /math }}
Renders division of two number values:
{{ #math 9 '/' 3 }} {{ /math }}
시간대 {{#timezone}} 를 사용하여 epoch 시간을 'yyyy-MM-dd HH:mm:ss zzz' 형식의 날짜로 변환합니다. 여기에서 tz 데이터베이스 시간대 목록을 찾을 수 있습니다.
예 #1: epoch 시간의 createdAt를 미국 동부 시간대로 변환:
{{ #timezone createdAt 'US/Eastern' }} {{ /timezone }}
얻을:
"2023-06-06 09:45:07 EDT"
예 #2: epoch 시간을 파리 시간대로 변환::
{{ #timezone 1686059107319 'Europe/Paris' }} {{ /timezone }}
얻을:
"2023-06-06 15:45:07 GMT+2"
바꾸다 replace 도우미는 두 번째 매개변수의 첫 번째 매개변수 인스턴스를 하위 블록으로 바꿉니다.
else 절을 사용하여 첫 번째 매개변수의 인스턴스를 찾을 수 없을 때 어떤 일이 발생하는지 지정합니다. 생략하면 빈 문자열이 생성됩니다.
예 #1: 문장 The dog likes to eat 에서 단어 dog 을 cat 로 교체:
{{ #replace "dog" "The dog likes to eat" }} cat {{ /replace }}
얻을:
예 #2: 문장 The dog likes to eat 에서 단어 cat 을 mouse 로 교체:
{{ #replace "cat" "The dog likes to eat" }} mouse {{ /replace }}
빈 문자열을 얻으려면:
예 #3: else 절을 사용하여 The dog likes to eat 문장에서 cat 단어를 mouse 로 바꿉니다.
{{ #replace "cat" "The dog likes to eat" }} mouse {{ else }} There is no cat to replace {{ /replace }}
얻을:
There is no cat to replace
예 #4: 대소문자를 무시하고 문장 The DOG likes to eat 에서 단어 dog 을 cat 로 대체:
{{ #replace "/dog/i" "The DOG likes to eat" }} cat {{ /replace }}
얻을:
예 #5: {{needle}} 변수를 {{haystack}} 변수의 {{replacement}} 변수로 바꿉니다.
{{ #replace needle haystack }} {{ replacement }} {{ /replace }}
이 데이터를 사용하여:
"haystack" : "The DOG likes to eat" ,
얻을:
도우미 함수는 중첩될 수도 있습니다. 다음은 예입니다.
{{ #eq "a" b }} yes1 {{ else }} {{ #eq "a" c }} yes2 {{ else }} no {{ /eq }} {{ /eq }}
사용 예 예는 data 이라는 변수를 기반으로 합니다.
"tags" : [ "infra, team-a" ] ,
data 값은 동등한 점 표기 형식을 가집니다.
"data.tags" : [ "infra, team-a" ]
데이터 검증 id 이 123456789 이면 출력은 valid 입니다. 그렇지 않은 경우 출력은 not valid 입니다.
{{ eq data . name "Alice" yes = 'valid' no = 'not valid' }}
name 이 Alice 이면 출력은 valid 입니다.
JSON 반환 JSON 형식으로 tags 및 객체 속성을 가져옵니다.
그러면 다음 JSON이 반환됩니다.
배열에서 값 가져오기 tags 배열에서 첫 번째 태그를 가져옵니다.
이렇게 하면 배열에서 첫 번째 값이 반환됩니다.
배열을 통해 반복 배열 유형의 변수를 반복하고 값을 문자열로 집계합니다.
{{ #each tags }} {{ this }} {{ #unless @ last }} , {{ /unless }} {{ /each }}
결과에는 쉼표로 구분된 태그가 포함됩니다(후행 쉼표는 생략됨).
마찬가지로 data 변수를 반복하고 객체의 값을 집계하고 JSON 요소를 출력합니다.
{{ #each ( json data ) }} {{ this }} {{ /each }}
그러면 다음과 같은 JSON이 반환됩니다.
"tags" : [ "infra, team-a" ] ,
data 변수를 반복한 다음 객체의 항목을 문자열로 집계합니다.
{{ #each data }} {{ @ key }} : {{ this }} {{ #unless @ last }} , {{ /unless }} {{ /each }}
그러면 다음과 같은 문자열이 반환됩니다.
tags: infra,team-a, name: Alice, id: 123456789
누락된 속성 처리 이전 호에 없었던 태그와 같은 일부 경우에는 변수 메뉴 에서 속성이 누락되거나 전혀 존재하지 않을 수 있습니다.
#if 문을 사용하여 다음과 같이 대체를 설정할 수 있습니다.
{{ #if data . type }} {{ json data . type }} {{ else }} "N/A" {{ /if }}
그러면 "N/A" 문자열이 반환됩니다.
주의 누락된 속성에 중첩된 값도 있으면 렌더링이 실패하므로 웹훅 페이로드가 저장되지 않습니다. 예를 들면 다음과 같습니다.
{{ #if data . type }} {{ json data . type }} {{ else }} "N/A" {{ /if }}
다음과 같이 변경해야 합니다.
{{ #if data }} {{ #if data . type }} {{ json data . type }} {{ else }} "N/A" {{ else }} "N/A" {{ /if }}