本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用訊息範本
本文件主題是針對支援 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 選單中,選擇警示 (鈴鐺) 圖示以開啟警示頁面。
-
選擇聯絡點。
-
從警報管理員下拉式清單中,選取您要為其建立訊息範本的警示管理員執行個體。默認值是 Grafana 警報管理器。
-
選擇 [新增範本]。
-
新增描述性名稱。
-
新增範本的內容,例如:
{{ define "mymessage" }} {{ range .Alerts }} [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}} {{ end }} {{ end }}
「內容」區段中的
define
標籤會指派範本名稱。此標籤是選擇性的,如果省略,範本名稱會從「名稱」(Name) 欄位衍生出來。當兩者都指定時,最佳做法是保持相同的。 -
選擇儲存範本。
注意
警示訊息範本中的 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。如果使用外部警報管理器,請返回此警報管理器的鏈接。 |
該Alerts
類型公開了兩個函數,用於過濾返回的警報。
-
Alerts.Firing
— 傳回觸發警示的清單。 -
Alerts.Resolved
— 傳回已解決警示的清單。
警示 (類型)
警示類型包含下列資料。
名稱 | Type | 備註 |
---|---|---|
Status |
string |
|
標籤 |
KeyValue |
附加至警示的一組標籤。 |
註釋 |
KeyValue |
附加至警示的一組註釋。 |
StartsAt |
時間. 時間 |
警報開始發射的時間。 |
EndsAt |
時間. 時間 |
僅在已知警示結束時間時才設定。否則,請設定為自上次收到警示之後的可設定逾時期間。 |
生成器網址 |
string |
一個反向鏈接到 Grafana 或外部警報管理器。 |
沉默網址 |
string |
鏈接到 grafana 沉默,並預先填寫此警報的標籤。僅適用於 Grafana 管理的警示。 |
儀表板 |
string |
鏈接到圖標儀表板,如果警報規則屬於一個。僅適用於 Grafana 管理的警示。 |
面板網址 |
string |
如果警示規則屬於一個,則連結至圖標面板。僅適用於 Grafana 管理的警示。 |
指紋 |
string |
可用於識別警示的指紋。 |
ValueString |
string |
包含警示中每個減少運算式的標籤和值的字串。 |
KeyValue 類型
該KeyValue
類型是一組代表標籤和註釋的鍵/值字符串對。
除了直接訪問存儲為一個數據KeyValue
,也有用於排序,刪除和轉換數據的方法。
名稱 | 引數 | 傳回值 | 備註 |
---|---|---|---|
SortedPairs |
鍵和值字符串對的排序列表 |
||
Remove (移除) |
[] 字符串 |
KeyValue |
返回沒有給定鍵的鍵/值映射的副本。 |
名稱 |
[] 字符串 |
標籤名稱清單 |
|
值 |
[] 字符串 |
標籤值清單 |
模板函數
使用範本函數,您可以處理標籤和註釋以產生動態通知。以下是可用的功能。
名稱 | 引數類型 | 傳回類型 | 描述 |
---|---|---|---|
|
數字或字串 |
string |
使用度量前置詞,將數字轉換為更易讀的格式。 |
|
數字或字串 |
string |
喜歡人性化,但使用 1024 作為基礎,而不是 1000。 |
|
數字或字串 |
string |
將持續時間 (以秒為單位) 轉換為更易讀的格式。 |
|
數字或字串 |
string |
將比率值轉換為 100 的分數。 |
|
數字或字串 |
string |
以秒為單位的 Unix 時間戳轉換為更易讀的格式。 |
|
string |
string |
字符串。標題,大寫每個單詞的第一個字符。 |
|
string |
string |
字符串。 ToUpper,將所有字元轉換為大寫。 |
|
string |
string |
字符串。 ToLower,將所有字元轉換為小寫。 |
|
圖案,文字 |
boolean |
正則表達式。 MatchString 測試未錨定正則表達式匹配。 |
|
圖案取代文字 |
string |
正則表達式。 ReplaceAllString 正則表達式替換,未錨定。 |
|
字符串-JSON 對象 |
string |
針對指定的運算式和資料來源,傳回 Explore 中圖形檢視的路徑。 |
|
字符串-JSON 對象 |
string |
針對指定的運算式和資料來源,傳回 Explore 中表格檢視的路徑。 |
|
[] 介面 {} |
映射 [字符串] 接口 {} |
將物件清單轉換為具有索引鍵的地圖,例如 arg0, arg1。使用此函數可將多個引數傳遞給模板。 |
|
什麼都沒有 |
string |
返回表示外部 URL 的字符串。 |
|
什麼都沒有 |
string |
返回外部 URL 的路徑。 |
下表顯示使用每個函數的範例。
函式 | TemplateString | 輸入 | 預期 |
---|---|---|---|
人性化 |
{人性化 $ 值} |
1234567.0 |
米 |
人文化 |
{人性化 1024$ 值} |
1048576.0 |
1 米 |
人性化 |
{人性化 $ 值} |
899.99 |
十四米 |
人性百分比 |
{人性百分比 $ 值} |
0.1234567 |
12.35% |
人性化時間戳 |
{人性化時間戳 $ 值} |
1435065584.128 |
2015-06-23 世界標準時間 13:44.128 |
標題 |
{$ 值 | 標題} |
bB 抄送 |
AA BB 抄送 |
toUpper |
{$ 值 | toUpper} |
bB 抄送 |
BB 抄送 |
toLower |
{$ 值 | toLower} |
bB 抄送 |
BB 抄送 |
match |
{匹配「A +」$ 標籤。實例} |
aa |
true |
reReplaceAll |
{{ reReplaceAll 「本地主機 :( .*)」「我的域名:$1」$ 標籤。實例}} |
本地主機: |
我的. 網域名稱:3000 |
圖形連結 |
{{圖形連結「{\" EXPR\」:\ "向上\」,\ "資料來源\」:\ "gdev-Prometheus\"}」}} |
/探索? 左 = [「現在 -1 小時」,「現在」,「gdev-Prometheus」,{「數據源」:「gdev-Prometheus」,「EXPR」:「向上」,「即時」:假,「範圍」:真}] |
|
表格連結 |
{{表格連結「{\" EXPR\」:\ "向上\」,\ "資料來源\」:\ "gdev-Prometheus\"}」}} |
/探索? 左 = [「現在 -1 小時」,「現在」,「gdev-Prometheus」,{「數據源」:「gdev-Prometheus」,「EXPR」:「向上」,「即時」:真,「範圍」:假}] |
|
args |
{{定義 "x"}} {{.arg0}} {{結束} {模板「x」(參數 1「2」)}} |
1 2 |
|
外部網址 |
{外部網址} |
http://localhost/path/prefix |
|
路徑前綴 |
{路徑前綴} |
/路徑/前綴 |