Configurare il gestore degli avvisi per inviare messaggi ad Amazon SNS come JSON - Amazon Managed Service per Prometheus

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurare il gestore degli avvisi per inviare messaggi ad Amazon SNS come JSON

Per impostazione predefinita, il gestore degli avvisi di Amazon Managed Service for Prometheus emette i messaggi in un formato di elenco di testo semplice. Questo può essere più difficile da analizzare per altri servizi. Puoi invece configurare il gestore degli avvisi per inviare avvisi in formato JSON. JSON può semplificare l'elaborazione dei messaggi downstream da Amazon SNS negli endpoint di ricezione dei webhook o negli AWS Lambda endpoint di ricezione dei webhook. Invece di utilizzare il modello predefinito, puoi definire un modello personalizzato per l'output del contenuto del messaggio in JSON, semplificando l'analisi nelle funzioni downstream.

Per inviare messaggi da alert manager ad Amazon SNS in formato JSON, aggiorna la configurazione di alert manager in modo che contenga il seguente codice all'interno della sezione principale 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 }}
Nota

Questo modello crea JSON da dati alfanumerici. Se i tuoi dati contengono caratteri speciali, codificali prima di utilizzare questo modello.

Per assicurarti che questo modello venga utilizzato nelle notifiche in uscita, fai riferimento ad esso nel tuo blocco alertmanager_config come segue:

alertmanager_config: | global: templates: - 'default_template'
Nota

Questo modello è per l'intero corpo del messaggio in formato JSON. Questo modello sovrascrive l'intero corpo del messaggio. Non è possibile sovrascrivere il corpo del messaggio se desideri utilizzare questo modello specifico. Tutte le sostituzioni eseguite manualmente avranno la precedenza sul modello.

Per ulteriori informazioni su: