Konfigurasikan pengelola peringatan untuk mengirim pesan ke Amazon SNS sebagai JSON - Layanan Terkelola Amazon untuk Prometheus

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan pengelola peringatan untuk mengirim pesan ke Amazon SNS sebagai JSON

Secara default, Amazon Managed Service for Prometheus alert manager mengeluarkan pesan dalam format daftar teks biasa. Ini bisa lebih sulit bagi layanan lain untuk diuraikan. Anda dapat mengonfigurasi manajer peringatan untuk mengirim peringatan dalam format JSON sebagai gantinya. JSON dapat mempermudah proses pesan di hilir dari Amazon SNS AWS Lambda di atau di titik akhir penerima webhook. Alih-alih menggunakan template default, Anda dapat menentukan template kustom untuk menampilkan konten pesan di JSON, sehingga lebih mudah untuk mengurai dalam fungsi hilir.

Untuk menampilkan pesan dari manajer peringatan ke Amazon SNS dalam format JSON, perbarui konfigurasi manajer peringatan Anda untuk memuat kode berikut di dalam bagian root Andatemplate_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 }}
catatan

Template ini membuat JSON dari data alfanumerik. Jika data Anda memiliki karakter khusus, encode mereka sebelum menggunakan template ini.

Untuk memastikan bahwa template ini digunakan dalam notifikasi keluar, rujuk di alertmanager_config blok Anda sebagai berikut:

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

Template ini untuk seluruh badan pesan sebagai JSON. Template ini menimpa seluruh isi pesan. Anda tidak dapat mengganti isi pesan jika Anda ingin menggunakan templat khusus ini. Setiap penggantian yang dilakukan secara manual akan diutamakan daripada template.

Untuk informasi lebih lanjut tentang: