本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本文件主題專為支援 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 }}
範本資料
下列資料會傳遞至訊息範本。
名稱 | Type | 備註 |
---|---|---|
|
string |
通知要傳送到的聯絡點名稱。 |
|
string |
如果至少一個警示正在觸發,則觸發,否則會解決。 |
|
警示 |
此通知中包含的提醒物件清單 (請參閱以下內容)。 |
|
KeyValue |
這些提醒的標籤分組依據。 |
|
KeyValue |
此通知中包含的所有提醒通用的標籤。 |
|
KeyValue |
此通知中包含的所有提醒通用的註釋。 |
|
string |
傳送通知的 Grafana 的返回連結。如果使用外部 Alertmanager,請返回此 Alertmanager 的連結。 |
Alerts
類型會公開兩個用於篩選傳回提醒的函數。
-
Alerts.Firing
– 傳回射擊警示的清單。 -
Alerts.Resolved
– 傳回已解析提醒的清單。
提醒 (類型)
提醒類型包含下列資料。
名稱 | Type | 備註 |
---|---|---|
Status |
string |
|
標籤 |
KeyValue |
附加到提醒的一組標籤。 |
註釋 |
KeyValue |
附加到提醒的一組註釋。 |
StartsAt |
time.Time |
警示開始觸發的時間。 |
EndsAt |
time.Time |
只有在已知警示的結束時間時才設定。否則,將 設定為自上次收到提醒以來的可設定逾時期間。 |
GeneratorURL |
string |
Grafana 或外部 Alertmanager 的後退連結。 |
SilenceURL |
string |
連結至 的 grafana 無聲,並預先填入此提醒的標籤。僅適用於 Grafana 受管提醒。 |
DashboardURL |
string |
如果警示規則屬於 grafana 儀表板,則連結至 grafana 儀表板。僅適用於 Grafana 受管提醒。 |
PanelURL |
string |
如果警示規則屬於一個,則連結至 grafana 儀表板面板。僅適用於 Grafana 受管提醒。 |
指紋 |
string |
可用來識別提醒的指紋。 |
ValueString |
string |
包含提醒中每個減少表達式標籤和值的字串。 |
KeyValue 類型
KeyValue
類型是一組代表標籤和註釋的鍵/值字串對。
除了直接存取存放為 的資料之外KeyValue
,還有排序、移除和轉換資料的方法。
名稱 | 引數 | 傳回值 | 備註 |
---|---|---|---|
SortedPairs |
索引鍵和值字串對的排序清單 |
||
Remove (移除) |
【】字串 |
KeyValue |
傳回不含指定金鑰的金鑰/值映射複本。 |
名稱 |
【】字串 |
標籤名稱清單 |
|
值 |
【】字串 |
標籤值清單 |
範本函數
您可以使用範本函數處理標籤和註釋,以產生動態通知。下列 函數可供使用。
名稱 | 引數類型 | 傳回類型 | 描述 |
---|---|---|---|
|
數字或字串 |
string |
使用指標字首,將數字轉換為更易於讀取的格式。 |
|
數字或字串 |
string |
如同人文化,但使用 1024 作為基礎,而不是 1000。 |
|
數字或字串 |
string |
以秒為單位將持續時間轉換為更易於讀取的格式。 |
|
數字或字串 |
string |
將比率值轉換為 100 的分數。 |
|
數字或字串 |
string |
以秒為單位將 Unix 時間戳記轉換為更易於讀取的格式。 |
|
string |
string |
strings.Title,將每個字詞的第一個字元大寫。 |
|
string |
string |
strings.ToUpper, 會將所有字元轉換為大寫。 |
|
string |
string |
strings.ToLower, 會將所有字元轉換為小寫。 |
|
模式、文字 |
boolean |
regexp.MatchString 測試未錨定的 regexp 比對。 |
|
模式、替換、文字 |
string |
Regexp.ReplaceAllString Regexp 替換,未錨定。 |
|
string - JSON 物件與 |
string |
在探索中傳回指定表達式和資料來源的圖形檢視路徑。 |
|
string - JSON 物件與 |
string |
針對指定的表達式和資料來源,傳回探索中表格式檢視的路徑。 |
|
【】介面{} |
map【string】interface{} |
將物件清單轉換為具有索引鍵的映射,例如 arg0、arg1。使用此函數將多個引數傳遞至 範本。 |
|
無 |
string |
傳回代表外部 URL 的字串。 |
|
無 |
string |
傳回外部 URL 的路徑。 |
下表顯示使用每個函數的範例。
函式 | TemplateString | 輸入 | 預期 |
---|---|---|---|
人文化 |
{ 人文化 $value } |
1234567.0 |
12.35M |
humanize1024 |
{ humanize1024 $value } |
1048576.0 |
1Mi |
humanizeDuration |
{ humanizeDuration $value } |
899.99 |
14 公尺 59 秒 |
humanizePercentage |
{ humanizePercentage $value } |
0.1234567 |
12.35% |
humanizeTimestamp |
{ humanizeTimestamp $value } |
1435065584.128 |
2015-06-23 13:19:44.128 +0000 UTC |
標題 |
{ $value | 標題 } |
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 |
{ 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 |