設定警示管理員,以 JSON 格式將訊息傳送至 Amazon SNS - Amazon Managed Service for Prometheus

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

設定警示管理員,以 JSON 格式將訊息傳送至 Amazon SNS

根據預設,適用於 Prometheus 的 Amazon 受管服務警示管理員會以純文字清單格式輸出訊息。對於其他服務來說,這可能會更難以解析。您可以將警報管理器配置為以 JSON 格式發送警報。JSON 可讓您更輕鬆地在網路連結接收端點內 AWS Lambda 或在 Amazon SNS 下游處理訊息。您可以定義自訂範本而非使用預設範本,以 JSON 格式輸出訊息內容,以便在下游函數中更容易剖析。

若要以 JSON 格式將訊息從警示管理員輸出至 Amazon SNS,請更新警示管理員組態,以在 template_files 根區段中包含下列代碼:

default_template: | {{ define "sns.default.message" }}{{ "{" }}"receiver": "{{ .Receiver }}","status": "{{ .Status }}","alerts": [{{ range $alertIndex, $alerts := .Alerts }}{{ if $alertIndex }}, {{ end }}{{ "{" }}"status": "{{ $alerts.Status }}"{{ if gt (len $alerts.Labels.SortedPairs) 0 -}},"labels": {{ "{" }}{{ range $index, $label := $alerts.Labels.SortedPairs }}{{ if $index }}, {{ end }}"{{ $label.Name }}": "{{ $label.Value }}"{{ end }}{{ "}" }}{{- end }}{{ if gt (len $alerts.Annotations.SortedPairs ) 0 -}},"annotations": {{ "{" }}{{ range $index, $annotations := $alerts.Annotations.SortedPairs }}{{ if $index }}, {{ end }}"{{ $annotations.Name }}": "{{ $annotations.Value }}"{{ end }}{{ "}" }}{{- end }},"startsAt": "{{ $alerts.StartsAt }}","endsAt": "{{ $alerts.EndsAt }}","generatorURL": "{{ $alerts.GeneratorURL }}","fingerprint": "{{ $alerts.Fingerprint }}"{{ "}" }}{{ end }}]{{ if gt (len .GroupLabels) 0 -}},"groupLabels": {{ "{" }}{{ range $index, $groupLabels := .GroupLabels.SortedPairs }}{{ if $index }}, {{ end }}"{{ $groupLabels.Name }}": "{{ $groupLabels.Value }}"{{ end }}{{ "}" }}{{- end }}{{ if gt (len .CommonLabels) 0 -}},"commonLabels": {{ "{" }}{{ range $index, $commonLabels := .CommonLabels.SortedPairs }}{{ if $index }}, {{ end }}"{{ $commonLabels.Name }}": "{{ $commonLabels.Value }}"{{ end }}{{ "}" }}{{- end }}{{ if gt (len .CommonAnnotations) 0 -}},"commonAnnotations": {{ "{" }}{{ range $index, $commonAnnotations := .CommonAnnotations.SortedPairs }}{{ if $index }}, {{ end }}"{{ $commonAnnotations.Name }}": "{{ $commonAnnotations.Value }}"{{ end }}{{ "}" }}{{- end }}{{ "}" }}{{ end }} {{ define "sns.default.subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]{{ end }}
注意

此版本會從英數字元資料建立 JSON。如果您的資料具有特殊字元,請在使用此範本之前對其進行編碼。

若要確認已在送出通知中使用此範本,則請在 alertmanager_config 區塊中依照下列方式參考:

alertmanager_config: | global: templates: - 'default_template'
注意

此範本適用於整個郵件內文的 JSON 格式。此範本會覆寫整個訊息內文。如果您想要使用此特定範本,則無法覆寫訊息內文。任何手動完成的覆寫都會優先於範本。

如需更多相關資訊: