通知模板參考
Prometheus 建立並向 Alertmanager 傳送告警,Alertmanager 隨後根據告警的標籤將通知傳送給不同的接收者。接收者可以是眾多整合中的一種,包括:Slack、PagerDuty、電子郵件,或者透過通用 Webhook 介面實現的自定義整合。
傳送給接收者的通知是透過模板構建的。Alertmanager 附帶了 預設模板 ,但它們也可以自定義。為了避免混淆,需要注意的是 Alertmanager 模板與 Prometheus 中的模板不同,不過 Prometheus 模板也包括告警規則標籤/註解中的模板化。
Alertmanager 的通知模板基於 Go 模板 系統。請注意,有些欄位會被評估為文字,而其他欄位會被評估為 HTML,這會影響轉義。
資料結構
Data
Data 是傳遞給通知模板和 Webhook 推送的結構。
| 名稱 | 型別 | 備註 |
|---|---|---|
| Receiver | string | 定義接收通知的接收者名稱(如 slack、email 等)。 |
| Status | string | 如果至少有一個告警正在觸發,則定義為 firing(觸發中),否則為 resolved(已解決)。 |
| Alerts | Alert | 此組中所有告警物件的列表(見下文)。 |
| GroupLabels | KV | 這些告警的分組標籤。 |
| CommonLabels | KV | 所有告警共有的標籤。 |
| CommonAnnotations | KV | 所有告警共有的註解集。用於關於告警的較長附加資訊字串。 |
| ExternalURL | string | 指向傳送該通知的 Alertmanager 的反向連結。 |
Alerts 型別公開了用於過濾告警的函式
Alerts.Firing返回此組中當前正在觸發的告警物件列表Alerts.Resolved返回此組中已解決的告警物件列表
Alert
Alert 儲存通知模板的一個告警。
| 名稱 | 型別 | 備註 |
|---|---|---|
| Status | string | 定義告警是已解決還是當前正在觸發。 |
| Labels | KV | 要附加到告警的一組標籤。 |
| Annotations | KV | 告警的一組註解。 |
| StartsAt | time.Time | 告警開始觸發的時間。如果省略,則由 Alertmanager 分配當前時間。 |
| EndsAt | time.Time | 僅在已知告警的結束時間時設定。否則,設定為自收到最後一個告警以來可配置的超時時間。 |
| GeneratorURL | string | 標識引發此告警的實體的反向連結。 |
| Fingerprint | string | 可用於識別告警的指紋。 |
KV
KV 是一組用於表示標籤 and 註解的鍵/值字串對。
type KV map[string]string
包含兩個註解的註解示例
{
summary: "alert summary",
description: "alert description",
}
除了直接訪問以 KV 形式儲存的資料(標籤和註解)之外,還有對 LabelSet 進行排序、刪除和檢視的方法
KV 方法
| 名稱 | 引數 | 返回值 | 備註 |
|---|---|---|---|
| SortedPairs | - | Pairs (鍵/值字串對的列表。) | 返回已排序的鍵/值對列表。 |
| Remove | []string | KV | 返回不包含給定鍵的鍵/值對映的副本。 |
| Names | - | []string | 返回 LabelSet 中的標籤名稱。 |
| Values | - | []string | 返回 LabelSet 中的值列表。 |
函式
請注意 Go 模板還提供了 預設函式 。
字串
| 名稱 | 引數 | 描述 |
|---|---|---|
| append | slice []any, args ...any | 返回一個新切片,其中將提供的引數追加到提供的切片中。 |
| date | string, time.Time | 返回指定格式時間的文字表示。有關格式的文件,請參閱 pkg.go.dev/time 。 |
| dict | values ...any | 返回一個從可變鍵值對列表構建的 string 到 any 的對映。引數數量必須為偶數,且鍵必須為字串。 |
| humanizeDuration | number 或 string | 返回表示持續時間的人類可讀字串,以及發生的錯誤(如果有)。 |
| join | sep string, s []string | strings.Join ,連線 s 的元素以建立單個字串。分隔符字串 sep 放在結果字串中的元素之間。(注意:引數順序相反,以便於模板中的管道傳輸。) |
| list | ...any | 將傳遞的引數作為介面切片返回。 |
| match | pattern, string | Regexp.MatchString 。使用正則表示式匹配字串。 |
| now | time.Now ,返回當前本地時間。 | |
| reReplaceAll | pattern, replacement, text | Regexp.ReplaceAllString 正則表示式替換,未錨定。 |
| safeHtml | text string | html/template.HTML ,將字串標記為不需要自動轉義的 HTML。 |
| safeUrl | text string | html/template.URL ,將字串標記為不需要自動轉義的 URL。 |
| since | time.Time | time.Since ,返回從提供的時間到當前系統時間所經過的時間跨度。 |
| stringSlice | ...string | 將傳遞的字串作為字串切片返回。 |
| title | string | strings.Title ,將每個單詞的首字母大寫。 |
| toJson | any | json.Marshal ,返回該值的 JSON 編碼。 |
| toLower | string | strings.ToLower ,將所有字元轉換為小寫。 |
| toUpper | string | strings.ToUpper ,將所有字元轉換為大寫。 |
| trimSpace | string | strings.TrimSpace ,移除首尾空白字元。 |
| tz | string, time.Time | 返回指定時區的時間。例如,Europe/Paris。 |
| urlUnescape | text string | url.QueryUnescape ,對包含 % 編碼的 URL 進行反轉義 |