本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定警示管理員,以 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 格式。此範本會覆寫整個訊息內文。如果您想要使用此特定範本,則無法覆寫訊息內文。任何手動完成的覆寫都會優先於範本。
如需更多相關資訊:
-
警示管理員組態檔案,請參閱 在適用於 Prometheus 的 Amazon 受管服務中建立警示管理員組態,以管理和路由提醒。
-
上傳您的組態檔案時,請參閱 將您的警示管理器組態檔案上傳至適用於 Prometheus 的 Amazon 受管服務。