Configurar el administrador de alertas para enviar mensajes a Amazon SNS como JSON - Servicio administrado por Amazon para Prometheus

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar el administrador de alertas para enviar mensajes a Amazon SNS como JSON

De forma predeterminada, el administrador de alertas de Amazon Managed Service for Prometheus genera los mensajes en un formato de lista de texto sin formato. Esto puede resultar más difícil de analizar para otros servicios. En su lugar, puede configurar el administrador de alertas para que envíe alertas en formato JSON. JSON puede facilitar el procesamiento de los mensajes en sentido descendente desde Amazon SNS AWS Lambda en los puntos de enlace receptores de webhooks o en ellos. En lugar de utilizar la plantilla predeterminada, puede definir una plantilla personalizada para mostrar el contenido del mensaje en JSON, lo que facilita su análisis en las funciones posteriores.

Para enviar mensajes del administrador de alertas a Amazon SNS en formato JSON, actualice la configuración del administrador de alertas para que incluya el siguiente código en la sección raíz 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

Esta plantilla crea JSON a partir de datos alfanuméricos. Si los datos contienen caracteres especiales, codifíquelos antes de usar esta plantilla.

Para asegurarse de que esta plantilla se usa en las notificaciones salientes, haga referencia a ella en el bloque alertmanager_config de la siguiente manera:

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

Esta plantilla es para todo el cuerpo del mensaje en formato JSON. Esta plantilla sobrescribe todo el cuerpo del mensaje. No puede anular el cuerpo del mensaje si desea utilizar esta plantilla específica. Cualquier modificación que se realice manualmente tendrá prioridad sobre la plantilla.

Para obtener más información acerca de: