Configurer le gestionnaire d'alertes pour envoyer des messages à Amazon SNS au format JSON - Amazon Managed Service for Prometheus

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer le gestionnaire d'alertes pour envoyer des messages à Amazon SNS au format JSON

Par défaut, le gestionnaire d'alertes Amazon Managed Service for Prometheus produit des messages sous forme de liste en texte brut. Cela peut être plus difficile à analyser pour les autres services. Vous pouvez configurer le gestionnaire d'alertes pour qu'il envoie des alertes au format JSON à la place. Le JSON peut simplifier le traitement des messages en aval d'Amazon SNS dans AWS Lambda ou dans les points de terminaison recevant des webhooks. Au lieu d’utiliser le modèle par défaut, vous pouvez définir un modèle personnalisé pour afficher le contenu du message au format JSON, ce qui facilite l’analyse dans les fonctions en aval.

Pour envoyer des messages du gestionnaire d’alertes à Amazon SNS au format JSON, mettez à jour la configuration de votre gestionnaire d’alertes afin qu’il contienne le code suivant dans votre section racine 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 }}
Note

Ce modèle crée des données au format JSON à partir de données alphanumériques. Si vos données comportent des caractères spéciaux, encodez-les avant d’utiliser ce modèle.

Pour vous assurer que ce modèle est utilisé dans les notifications sortantes, référencez-le dans votre bloc alertmanager_config comme suit :

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

Ce modèle est destiné à l’ensemble du corps du message au format JSON. Ce modèle remplace l’intégralité du corps du message. Vous ne pouvez pas remplacer le corps du message si vous souhaitez utiliser ce modèle spécifique. Tout remplacement effectué manuellement a la priorité sur le modèle.

Pour plus d’informations sur :