기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
메시징 템플릿 사용
이 설명서 주제는 Grafana 버전 8.x를 지원하는 Grafana 워크스페이스를 위해 설계되었습니다.
Grafana 버전 10.x를 지원하는 Grafana 워크스페이스는 Grafana 버전 10에서 작업 섹션을 참조하세요.
Grafana 버전 9.x를 지원하는 Grafana 워크스페이스는 Grafana 버전 9에서 작업 섹션을 참조하세요.
연락 지점 작업을 통해 전송되는 알림은 메시징 템플릿를 사용하여 빌드됩니다. Grafana의 기본 템플릿은 Go 템플릿 지정 시스템
대부분의 연락 지점 필드는 템플릿 지정 가능하므로 재사용 가능한 사용자 지정 템플릿을 생성하고 여러 연락 지점에서 사용할 수 있습니다. 이 템플릿 데이터 주제에서는 템플릿 지정에 사용할 수 있는 변수를 나열합니다.
템플릿 사용
템플릿은 메시지를 생성하는 데 사용됩니다. 예를 들어, Slack 알림 메시지를 사용하는 경우 연락 지점의에서제목과 본문을 설정할 수 있습니다. 다음 예제에서는 기본 템플릿을 사용하여 실행 알림 및 해결된 알림 수를 포함하는 제목과 알림 및 해당 상태를 나열하는 본문을 생성하는 방법을 보여줍니다.
-
제목:
{{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved
-
텍스트 본문:
{{ range .Alerts }}{{ .Status }}: {{ .Labels.alertname }} {{end }}
다음 예제와 같이 사용자 지정 템플릿을 생성할 수 있습니다.
-
제목:
{{ template "slack.default.title" .}}
-
텍스트 본문:
{{ template "mymessage" .}}
다음은 샘플 템플릿입니다.
{{ define "myalert" }} [{{.Status}}] {{ .Labels.alertname }} Labels: {{ range .Labels.SortedPairs }} {{ .Name }}: {{ .Value }} {{ end }} {{ if gt (len .Annotations) 0 }} Annotations: {{ range .Annotations.SortedPairs }} {{ .Name }}: {{ .Value }} {{ end }} {{ end }} {{ if gt (len .SilenceURL ) 0 }} Silence alert: {{ .SilenceURL }} {{ end }} {{ if gt (len .DashboardURL ) 0 }} Go to dashboard: {{ .DashboardURL }} {{ end }} {{ end }}
다음 절차에서는 사용자 지정 메시지 템플릿을 생성, 편집 및 삭제하는 방법을 보여줍니다.
메시지 템플릿을 생성하는 방법
-
Grafana 콘솔의 Grafana 메뉴에서 알림(종 모양) 아이콘을 선택하여 알림 페이지를 여세요.
-
연락 지점을 선택하세요.
-
Alertmanager 드롭다운에서 메시지 템플릿을 생성할 Alertmanager 인스턴스를 선택하세요. 기본값은 Grafana Alertmanager입니다.
-
템플릿 추가를 선택하세요.
-
설명이 포함된 이름을 지정하세요.
-
템플릿의 콘텐츠를 추가하세요. 예를 들어 다음과 같습니다.
{{ define "mymessage" }} {{ range .Alerts }} [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}} {{ end }} {{ end }}
콘텐츠 섹션의
define
태그는 템플릿 이름을 할당합니다. 이 태그는 선택 사항이며 생략하면 템플릿 이름이 이름 필드에서 파생됩니다. 둘 다 지정하면 동일하게 유지하는 것이 가장 좋습니다. -
템플릿 저장을 선택합니다.
참고
알림 메시지 템플릿의 HTML은 텍스트로 렌더링되며 제어 문자가 이스케이프 처리됩니다. Grafana는 결과 알림에서 HTML 렌더링을 지원하지 않습니다.
메시지 템플릿을 편집하려면 다음과 같이 하십시오.
-
알림 페이지에서 연락 지점을 선택하여 연락 시점 목록을 여세요.
-
템플릿 테이블에서 편집할 템플릿을 찾고 편집 아이콘(펜)을 선택하세요.
-
변경을 수행하고 템플릿 저장을 선택하세요.
메시지 템플릿을 삭제하려면 다음과 같이 하십시오.
-
알림 페이지에서 연락 지점을 선택하여 연락 시점 목록을 여세요.
-
템플릿 테이블에서 제거할 템플릿을 찾고 삭제 아이콘(휴지통)을 선택하세요.
-
예, 삭제를 선택하여 템플릿을 삭제하세요.
중첩된 템플릿
다른 템플릿 내에 템플릿을 포함할 수 있습니다.
예를 들어 define
키워드를 사용하여 템플릿 조각을 정의할 수 있습니다.
{{ define "mytemplate" }} {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved. {{ end }}
그런 다음, template
키워드를 사용하여 이 조각 내에 사용자 지정 템플릿을 포함할 수 있습니다. 예:
Alert summary: {{ template "mytemplate" . }}
다음 기본 제공 템플릿 옵션을 사용하여 사용자 지정 템플릿을 포함할 수 있습니다.
명칭 | 참고 |
---|---|
|
개요 수준의 상태 정보를 표시합니다. |
|
실행 알림 및 해결된 알림의 형식이 지정된 요약을 제공합니다. |
사용자 지정 템플릿 예제
다음은 사용자 지정 템플릿을 사용하는 방법에 대한 예제입니다.
단일 알림을 렌더링하기 위한 템플릿:
{{ define "myalert" }} [{{.Status}}] {{ .Labels.alertname }} Labels: {{ range .Labels.SortedPairs }} {{ .Name }}: {{ .Value }} {{ end }} {{ if gt (len .Annotations) 0 }} Annotations: {{ range .Annotations.SortedPairs }} {{ .Name }}: {{ .Value }} {{ end }} {{ end }} {{ if gt (len .SilenceURL ) 0 }} Silence alert: {{ .SilenceURL }} {{ end }} {{ if gt (len .DashboardURL ) 0 }} Go to dashboard: {{ .DashboardURL }} {{ end }} {{ end }}
전체 알림 메시지를 렌더링하기 위한 템플릿:
{{ define "mymessage" }} {{ if gt (len .Alerts.Firing) 0 }} {{ len .Alerts.Firing }} firing: {{ range .Alerts.Firing }} {{ template "myalert" .}} {{ end }} {{ end }} {{ if gt (len .Alerts.Resolved) 0 }} {{ len .Alerts.Resolved }} resolved: {{ range .Alerts.Resolved }} {{ template "myalert" .}} {{ end }} {{ end }} {{ end }}
템플릿 데이터
다음 데이터가 메시지 템플릿에 전달됩니다.
명칭 | 유형 | 참고 |
---|---|---|
|
문자열 |
알림이 전송되는 연락 지점 이름. |
|
문자열 |
하나 이상의 알림이 실행 중인 경우 실행이고, 그렇지 않으면 해결됨 상태입니다. |
|
Alert |
이 알림에 포함된 알림 객체 목록(아래 참조). |
|
KeyValue |
이러한 알림이 그룹화된 레이블. |
|
KeyValue |
이 알림에 포함된 모든 알림에 공통된 레이블. |
|
KeyValue |
이 알림에 포함된 모든 알림에 공통된 주석. |
|
문자열 |
알림을 전송한 Grafana로 돌아가는 링크. 외부 Alertmanager를 사용하는 경우 이 Alertmanager로 돌아가는 링크. |
Alerts
유형은 반환된 알림을 필터링하기 위한 두 가지 함수를 노출합니다.
-
Alerts.Firing
- 실행 알림 목록을 반환합니다. -
Alerts.Resolved
- 해결된 알림 목록을 반환합니다.
알림(유형)
알림 유형에는 다음 데이터가 포함됩니다.
명칭 | 유형 | 참고 |
---|---|---|
상태 표시기 |
문자열 |
|
레이블 |
KeyValue |
알림에 연결된 레이블 세트. |
주석 |
KeyValue |
알림에 연결된 주석 세트. |
StartsAt |
time.Time |
알림이 실행되는 시간. |
EndsAt |
time.Time |
알림의 종료 시간을 알고 있는 경우에만 설정합니다. 그렇지 않으면 마지막 알림이 수신된 이후부터 구성 가능한 제한 시간으로 설정됩니다. |
GeneratorURL |
문자열 |
Grafana 또는 외부 Alertmanager에 대한 백 링크. |
SilenceURL |
문자열 |
이 알림의 레이블이 미리 채워진 Grafana 무음에 대한 링크. Grafana 관리형 알림에만 적용됩니다. |
DashboardURL |
문자열 |
알림 규칙이 하나에 속하는 경우 Grafana 대시보드에 대한 링크. Grafana 관리형 알림에만 적용됩니다. |
PanelURL |
문자열 |
알림 규칙이 하나에 속하는 경우 Grafana 대시보드 패널에 대한 링크. Grafana 관리형 알림에만 적용됩니다. |
지문 |
문자열 |
알림을 식별하는 데 사용할 수 있는 지문. |
ValueString |
문자열 |
알림에서 축소된 각 표현식의 레이블과 값을 포함하는 문자열. |
KeyValue 유형
KeyValue
유형은 레이블과 주석을 나타내는 키/값 문자열 페어 세트입니다.
KeyValue
로 저장된 데이터에 대한 직접 액세스 외에도 데이터를 정렬, 제거 및 변환하는 방법도 있습니다.
명칭 | 인수 | 반환 값 | 참고 |
---|---|---|---|
SortedPairs |
키 및 값 문자열 페어의 정렬된 목록 |
||
Remove |
[]string |
KeyValue |
지정된 키 없이 키/값 맵의 사본을 반환합니다. |
이름 |
[]string |
레이블 이름 목록 |
|
값 |
[]string |
레이블 값 목록 |
템플릿 함수
템플릿 함수를 사용하여 레이블 및 주석을 처리해 동적 알림을 생성할 수 있습니다. 다음 함수를 사용할 수 있습니다.
명칭 | 인수 유형 | 반환 타입 | 설명 |
---|---|---|---|
|
숫자 또는 문자열 |
문자열 |
지표 접두사를 사용하여 숫자를 더 읽기 쉬운 형식으로 변환합니다. |
|
숫자 또는 문자열 |
문자열 |
humanize와 비슷하지만 1000이 아닌 1024를 밑으로 사용합니다. |
|
숫자 또는 문자열 |
문자열 |
기간(초 단위)을 더 읽기 쉬운 형식으로 변환합니다. |
|
숫자 또는 문자열 |
문자열 |
비율 값을 100의 분율로 변환합니다. |
|
숫자 또는 문자열 |
문자열 |
Unix 타임스탬프(초 단위)를 더 읽기 쉬운 형식으로 변환합니다. |
|
문자열 |
문자열 |
strings.Title, 각 단어의 첫 번째 문자를 대문자로 표시합니다. |
|
문자열 |
문자열 |
strings.ToUpper, 모든 문자를 대문자로 변환합니다. |
|
문자열 |
문자열 |
strings.ToLower, 모든 문자를 소문자로 변환합니다. |
|
패턴, 텍스트 |
boolean |
regexp.MatchString 고정되지 않은 정규식 일치를 테스트합니다. |
|
패턴, 교체, 텍스트 |
문자열 |
Regexp.ReplaceAllString Regexp 대체(고정되지 않음). |
|
문자열 - |
문자열 |
지정된 표현식 및 데이터 소스에 대한 탐색의 그래픽 보기 경로를 반환합니다. |
|
문자열 - |
문자열 |
지정된 표현식 및 데이터 소스에 대한 탐색의 테이블 형식 보기 경로를 반환합니다. |
|
[]interface{} |
map[string]interface{} |
객체 목록을 arg0, arg1과 같은 키가 있는 맵으로 변환합니다. 이 함수를 사용하여 여러 인수를 템플릿에 전달합니다. |
|
없음 |
문자열 |
외부 URL을 나타내는 문자열을 반환합니다. |
|
없음 |
문자열 |
외부 URL의 경로를 반환합니다. |
다음 표에는 각 함수 사용 예제가 나와 있습니다.
함수 | TemplateString | Input | 예상 |
---|---|---|---|
humanize |
{ humanize $value } |
1234567.0 |
1.235M |
humanize1024 |
{ humanize1024 $value } |
1048576.0 |
1Mi |
humanizeDuration |
{ humanizeDuration $value } |
899.99 |
14m 59s |
humanizePercentage |
{ humanizePercentage $value } |
0.1234567 |
12.35% |
humanizeTimestamp |
{ humanizeTimestamp $value } |
1435065584.128 |
2015-06-23 13:19:44.128 +0000 UTC |
title |
{ $value | title } |
aa bB CC |
Aa Bb Cc |
toUpper |
{ $value | toUpper } |
aa bB CC |
AA BB CC |
toLower |
{ $value | toLower } |
aa bB CC |
aa bb cc |
일치 |
{ match "a+" $labels.instance } |
aa |
true |
reReplaceAll |
{{ reReplaceAll "localhost:(.*)" "my.domain:$1" $labels.instance }} |
localhost:3000 |
my.domain:3000 |
graphLink |
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }} |
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}] |
|
tableLink |
{{ tableLink "{\"expr\":\"up\", \"datasource\":\"gdev-prometheus\"}" }} |
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}] |
|
args |
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}} |
1 2 |
|
externalURL |
{ externalURL } |
http://localhost/path/prefix |
|
pathPrefix |
{ pathPrefix } |
/path/prefix |