使用訊息範本 - Amazon Managed Grafana

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用訊息範本

本文件主題是針對支援 Grafana 8.x 版的 Grafana 工作區所設計。

如需支援 Grafana 10.x 版的 Grafana 工作區,請參閱。在 Grafana 第 10 版工作

如需支援 Grafana 9.x 版的 Grafana 工作區,請參閱。在 Grafana 第 9 版中工作

透過傳送的通知使用接觸點是使用訊息範本建立的。Grafana 的默認模板基於 Go 模板系統,其中一些字段被評估為文本,而另一些則被評估為 HTML(這可能會影響轉義)。

由於大多數聯繫點字段都可以模板化,因此您可以創建可重複使用的自定義模板,並在多個聯繫點中使用它們。主範本資料題會列出可用於範本化的變數。

使用範本

範本可用來建立訊息。例如,透過 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 }}

下列程序顯示如何建立、編輯及刪除自訂訊息範本。

若要建立訊息範本
  1. 在 Grafana 主控台的 Grafana 選單中,選擇警示 (鈴鐺) 圖示以開啟示頁面。

  2. 選擇聯絡點

  3. 警報管理員下拉式清單中,選取您要為其建立訊息範本的警示管理員執行個體。默認值是 Grafana 警報管理器。

  4. 選擇 [新增範本]。

  5. 新增描述性名稱

  6. 新增範本的內容,例如:

    {{ define "mymessage" }} {{ range .Alerts }} [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}} {{ end }} {{ end }}

    「內容」區段中的define標籤會指派範本名稱。此標籤是選擇性的,如果省略,範本名稱會從「名稱」(Name) 欄位衍生出來。當兩者都指定時,最佳做法是保持相同的。

  7. 選擇儲存範本

注意

警示訊息範本中的 HTML 會呈現為文字,控制字元逸出。Grafana 不支援在產生的通知中呈現 HTML。

編輯訊息範本
  1. 在「示」頁面中,選擇「聯絡方式」以開啟聯絡點清單。

  2. 在「範本」表格中,找到您要編輯的範本,然後選擇「編輯」 圖示 (筆)。

  3. 進行變更,然後選擇「儲存範本」。

刪除訊息範本
  1. 在「示」頁面中,選擇「聯絡方式」以開啟聯絡點清單。

  2. 在「範本」表格中,找出您要移除的範本,然後選擇「刪除」圖示 (垃圾桶)。

  3. 選擇「是,刪除」以刪除範本。

嵌套模板

您可以在其他範本中嵌入範本。

例如,您可以使用define關鍵字定義模板片段:

{{ define "mytemplate" }} {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved. {{ end }}

然後,您可以使用template關鍵字在此片段中嵌入自定義模板。例如:

Alert summary: {{ template "mytemplate" . }}

您可以使用以下內置模板選項嵌入自定義模板。

名稱 備註

default.title

顯示高階狀態資訊。

default.message

提供觸發和已解決警示的格式化摘要。

自訂範本範例

以下是如何使用自訂範本的範例。

呈現單一警示的範本:

{{ 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 備註

Receiver

string

要傳送通知的聯絡點名稱。

Status

string

如果至少有一個警報正在觸發,則觸發,否則解決。

Alerts

警示

包含在此通知中的警示物件清單 (請參閱下方)。

GroupLabels

KeyValue

這些警示的標籤依據分組。

CommonLabels

KeyValue

此通知中包含的所有警示通用標籤。

CommonAnnotations

KeyValue

此通知中包含的所有警示的通用註釋。

ExternalURL

string

返回鏈接到發送通知的 Grafana。如果使用外部警報管理器,請返回此警報管理器的鏈接。

Alerts類型公開了兩個函數,用於過濾返回的警報。

  • Alerts.Firing— 傳回觸發警示的清單。

  • Alerts.Resolved— 傳回已解決警示的清單。

警示 (類型)

警示類型包含下列資料。

名稱 Type 備註

Status

string

firingresolved

標籤

KeyValue

附加至警示的一組標籤。

註釋

KeyValue

附加至警示的一組註釋。

StartsAt

時間. 時間

警報開始發射的時間。

EndsAt

時間. 時間

僅在已知警示結束時間時才設定。否則,請設定為自上次收到警示之後的可設定逾時期間。

生成器網址

string

一個反向鏈接到 Grafana 或外部警報管理器。

沉默網址

string

鏈接到 grafana 沉默,並預先填寫此警報的標籤。僅適用於 Grafana 管理的警示。

儀表板

string

鏈接到圖標儀表板,如果警報規則屬於一個。僅適用於 Grafana 管理的警示。

面板網址

string

如果警示規則屬於一個,則連結至圖標面板。僅適用於 Grafana 管理的警示。

指紋

string

可用於識別警示的指紋。

ValueString

string

包含警示中每個減少運算式的標籤和值的字串。

KeyValue 類型

KeyValue類型是一組代表標籤和註釋的鍵/值字符串對。

除了直接訪問存儲為一個數據KeyValue,也有用於排序,刪除和轉換數據的方法。

名稱 引數 傳回值 備註

SortedPairs

鍵和值字符串對的排序列表

Remove (移除)

[] 字符串

KeyValue

返回沒有給定鍵的鍵/值映射的副本。

名稱

[] 字符串

標籤名稱清單

[] 字符串

標籤值清單

模板函數

使用範本函數,您可以處理標籤和註釋以產生動態通知。以下是可用的功能。

名稱 引數類型 傳回類型 描述

humanize

數字或字串

string

使用度量前置詞,將數字轉換為更易讀的格式。

humanize1024

數字或字串

string

喜歡人性化,但使用 1024 作為基礎,而不是 1000。

humanizeDuration

數字或字串

string

將持續時間 (以秒為單位) 轉換為更易讀的格式。

humanizePercentage

數字或字串

string

將比率值轉換為 100 的分數。

humanizeTimestamp

數字或字串

string

以秒為單位的 Unix 時間戳轉換為更易讀的格式。

title

string

string

字符串。標題,大寫每個單詞的第一個字符。

toUpper

string

string

字符串。 ToUpper,將所有字元轉換為大寫。

toLower

string

string

字符串。 ToLower,將所有字元轉換為小寫。

match

圖案,文字

boolean

正則表達式。 MatchString 測試未錨定正則表達式匹配。

reReplaceAll

圖案取代文字

string

正則表達式。 ReplaceAllString 正則表達式替換,未錨定。

graphLink

字符串-JSON 對象expr和字datasource

string

針對指定的運算式和資料來源,傳回 Explore 中圖形檢視的路徑。

tableLink

字符串-JSON 對象expr和字datasource

string

針對指定的運算式和資料來源,傳回 Explore 中表格檢視的路徑。

args

[] 介面 {}

映射 [字符串] 接口 {}

將物件清單轉換為具有索引鍵的地圖,例如 arg0, arg1。使用此函數可將多個引數傳遞給模板。

externalURL

什麼都沒有

string

返回表示外部 URL 的字符串。

pathPrefix

什麼都沒有

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

路徑前綴

{路徑前綴}

/路徑/前綴