Configurar o gerenciador de alertas para enviar mensagens para o Amazon SNS como JSON - Amazon Managed Service para Prometheus

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar o gerenciador de alertas para enviar mensagens para o Amazon SNS como JSON

Por padrão, o gerenciador de alertas do Amazon Managed Service for Prometheus emite mensagens em formato de lista de texto simples. Isso pode ser mais difícil para outros serviços analisarem. Em vez disso, você pode configurar o gerenciador de alertas para enviar alertas no formato JSON. O JSON pode simplificar o processamento das mensagens a jusante do Amazon SNS em ou em AWS Lambda endpoints de recebimento de webhooks. Em vez de usar o modelo padrão, você pode definir um modelo personalizado para gerar o conteúdo da mensagem em JSON, facilitando a análise em funções posteriores.

Para enviar mensagens do gerenciador de alertas para o Amazon SNS no formato JSON, atualize a configuração do gerenciador de alertas para conter o seguinte código na seu seção raiz 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

Esse modelo cria JSON a partir de dados alfanuméricos. Se seus dados tiverem caracteres especiais, codifique-os antes de usar esse modelo.

Para garantir que esse modelo seja usado nas notificações enviadas, faça referência a ele em seu bloco alertmanager_config da seguinte forma:

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

Esse modelo é para o corpo inteiro da mensagem como o da mensagem JSON. Esse modelo substitui o corpo inteiro da mensagem. Você não pode substituir o corpo da mensagem se quiser usar esse modelo específico. Todas as substituições feitas manualmente terão precedência sobre o modelo.

Para obter mais informações sobre: