通知模板參考

Prometheus 建立並向 Alertmanager 傳送告警,Alertmanager 隨後根據告警的標籤將通知傳送給不同的接收者。接收者可以是眾多整合中的一種,包括:Slack、PagerDuty、電子郵件,或者透過通用 Webhook 介面實現的自定義整合。

傳送給接收者的通知是透過模板構建的。Alertmanager 附帶了 預設模板 ,但它們也可以自定義。為了避免混淆,需要注意的是 Alertmanager 模板與 Prometheus 中的模板不同,不過 Prometheus 模板也包括告警規則標籤/註解中的模板化。

Alertmanager 的通知模板基於 Go 模板  系統。請注意,有些欄位會被評估為文字,而其他欄位會被評估為 HTML,這會影響轉義。

資料結構

Data

Data 是傳遞給通知模板和 Webhook 推送的結構。

名稱型別備註
Receiverstring定義接收通知的接收者名稱(如 slack、email 等)。
Statusstring如果至少有一個告警正在觸發,則定義為 firing(觸發中),否則為 resolved(已解決)。
AlertsAlert此組中所有告警物件的列表(見下文)。
GroupLabelsKV這些告警的分組標籤。
CommonLabelsKV所有告警共有的標籤。
CommonAnnotationsKV所有告警共有的註解集。用於關於告警的較長附加資訊字串。
ExternalURLstring指向傳送該通知的 Alertmanager 的反向連結。

Alerts 型別公開了用於過濾告警的函式

  • Alerts.Firing 返回此組中當前正在觸發的告警物件列表
  • Alerts.Resolved 返回此組中已解決的告警物件列表

Alert

Alert 儲存通知模板的一個告警。

名稱型別備註
Statusstring定義告警是已解決還是當前正在觸發。
LabelsKV要附加到告警的一組標籤。
AnnotationsKV告警的一組註解。
StartsAttime.Time告警開始觸發的時間。如果省略,則由 Alertmanager 分配當前時間。
EndsAttime.Time僅在已知告警的結束時間時設定。否則,設定為自收到最後一個告警以來可配置的超時時間。
GeneratorURLstring標識引發此告警的實體的反向連結。
Fingerprintstring可用於識別告警的指紋。

KV

KV 是一組用於表示標籤 and 註解的鍵/值字串對。

type KV map[string]string

包含兩個註解的註解示例

{
  summary: "alert summary",
  description: "alert description",
}

除了直接訪問以 KV 形式儲存的資料(標籤和註解)之外,還有對 LabelSet 進行排序、刪除和檢視的方法

KV 方法

名稱引數返回值備註
SortedPairs-Pairs (鍵/值字串對的列表。)返回已排序的鍵/值對列表。
Remove[]stringKV返回不包含給定鍵的鍵/值對映的副本。
Names-[]string返回 LabelSet 中的標籤名稱。
Values-[]string返回 LabelSet 中的值列表。

函式

請注意 Go 模板還提供了 預設函式 

字串

名稱引數描述
appendslice []any, args ...any返回一個新切片,其中將提供的引數追加到提供的切片中。
datestring, time.Time返回指定格式時間的文字表示。有關格式的文件,請參閱 pkg.go.dev/time 
dictvalues ...any返回一個從可變鍵值對列表構建的 string 到 any 的對映。引數數量必須為偶數,且鍵必須為字串。
humanizeDurationnumber 或 string返回表示持續時間的人類可讀字串,以及發生的錯誤(如果有)。
joinsep string, s []stringstrings.Join ,連線 s 的元素以建立單個字串。分隔符字串 sep 放在結果字串中的元素之間。(注意:引數順序相反,以便於模板中的管道傳輸。)
list...any將傳遞的引數作為介面切片返回。
matchpattern, stringRegexp.MatchString 。使用正則表示式匹配字串。
nowtime.Now ,返回當前本地時間。
reReplaceAllpattern, replacement, textRegexp.ReplaceAllString  正則表示式替換,未錨定。
safeHtmltext stringhtml/template.HTML ,將字串標記為不需要自動轉義的 HTML。
safeUrltext stringhtml/template.URL ,將字串標記為不需要自動轉義的 URL。
sincetime.Timetime.Since ,返回從提供的時間到當前系統時間所經過的時間跨度。
stringSlice...string將傳遞的字串作為字串切片返回。
titlestringstrings.Title ,將每個單詞的首字母大寫。
toJsonanyjson.Marshal ,返回該值的 JSON 編碼。
toLowerstringstrings.ToLower ,將所有字元轉換為小寫。
toUpperstringstrings.ToUpper ,將所有字元轉換為大寫。
trimSpacestringstrings.TrimSpace ,移除首尾空白字元。
tzstring, time.Time返回指定時區的時間。例如,Europe/Paris。
urlUnescapetext stringurl.QueryUnescape ,對包含 % 編碼的 URL 進行反轉義

本頁內容