Buat dan kelola sumber daya peringatan menggunakan Terraform - Amazon Managed Grafana

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

Buat dan kelola sumber daya peringatan menggunakan Terraform

Topik dokumentasi ini dirancang untuk ruang kerja Grafana yang mendukung Grafana versi 10.x.

Untuk ruang kerja Grafana yang mendukung Grafana versi 9.x, lihat. Bekerja di Grafana versi 9

Untuk ruang kerja Grafana yang mendukung Grafana versi 8.x, lihat. Bekerja di Grafana versi 8

Gunakan Penyedia Grafana Terraform untuk mengelola sumber daya peringatan Anda dan menyediakannya ke dalam sistem Grafana Anda. Dukungan penyedia Terraform untuk Grafana Alerting memudahkan untuk membuat, mengelola, dan memelihara seluruh tumpukan Grafana Alerting Anda sebagai kode.

Untuk informasi lebih lanjut tentang mengelola sumber daya peringatan Anda menggunakan Terraform, lihat dokumentasi Penyedia Grafana di dokumentasi Terraform.

Selesaikan tugas-tugas berikut untuk membuat dan mengelola sumber peringatan Anda menggunakan Terraform.

  1. Buat kunci API untuk penyediaan.

  2. Konfigurasikan penyedia Terraform.

  3. Tentukan sumber peringatan Anda di Terraform.

  4. Jalankan terraform apply untuk menyediakan sumber peringatan Anda.

Prasyarat

  • Pastikan Anda memiliki penyedia grafana/grafana Terraform 1.27.0 atau lebih tinggi.

  • Pastikan Anda menggunakan Grafana 9.1 atau lebih tinggi. Jika Anda membuat instans Grafana Terkelola Amazon dengan Grafana versi 9, ini benar.

Membuat kunci API untuk penyediaan

Anda dapat membuat kunci API Grafana normal untuk mengautentikasi Terraform dengan Grafana. Sebagian besar perkakas yang ada menggunakan kunci API akan secara otomatis bekerja dengan dukungan Grafana Alerting yang baru. Untuk informasi khusus tentang membuat kunci untuk digunakan dengan Terraform, lihat Menggunakan Terraform untuk otomatisasi Grafana Terkelola Amazon.

Untuk membuat kunci API untuk penyediaan
  1. Buat akun layanan baru untuk pipeline CI Anda.

  2. Tetapkan peran “Akses API Penyediaan aturan peringatan.”

  3. Buat token akun layanan baru.

  4. Beri nama dan simpan token untuk digunakan di Terraform.

Atau, Anda dapat menggunakan otentikasi dasar. Untuk melihat semua format autentikasi yang didukung, lihat Autentikasi Grafana di dokumentasi Terraform.

Konfigurasikan penyedia Terraform

Dukungan Grafana Alerting disertakan sebagai bagian dari penyedia Grafana Terraform.

Berikut ini adalah contoh yang dapat Anda gunakan untuk mengonfigurasi penyedia Terraform.

terraform { required_providers { grafana = { source = "grafana/grafana" version = ">= 1.28.2" } } } provider "grafana" { url = <YOUR_GRAFANA_URL> auth = <YOUR_GRAFANA_API_KEY> }

Penyediaan titik kontak dan templat

Titik kontak menghubungkan tumpukan peringatan ke dunia luar. Mereka memberi tahu Grafana cara terhubung ke sistem eksternal Anda dan di mana mengirimkan pemberitahuan. Ada lebih dari lima belas integrasi berbeda untuk dipilih. Contoh ini menggunakan titik kontak Slack.

Untuk menyediakan titik kontak dan templat
  1. Salin blok kode ini ke file.tf di mesin lokal Anda. Ganti < slack-webhook-url > dengan URL webhook Slack Anda (atau detail titik kontak lainnya).

    Contoh ini menciptakan titik kontak yang mengirimkan pemberitahuan peringatan ke Slack.

    resource "grafana_contact_point" "my_slack_contact_point" { name = "Send to My Slack Channel" slack { url = <slack-webhook-url> text = <<EOT {{ len .Alerts.Firing }} alerts are firing! Alert summaries: {{ range .Alerts.Firing }} {{ template "Alert Instance Template" . }} {{ end }} EOT } }
  2. Masukkan teks untuk notifikasi Anda di bidang teks.

    textBidang ini mendukung Templating Go-style. Ini memungkinkan Anda untuk mengelola templat notifikasi Grafana Alerting Anda langsung di Terraform.

  3. Jalankan perintah terraform apply.

  4. Buka Grafana UI dan periksa detail titik kontak Anda.

    Anda tidak dapat mengedit sumber daya yang disediakan melalui Terraform dari UI. Ini memastikan bahwa tumpukan peringatan Anda selalu sinkron dengan kode Anda.

  5. Klik Uji untuk memverifikasi bahwa titik kontak berfungsi dengan benar.

catatan

Anda dapat menggunakan kembali template yang sama di banyak titik kontak. Pada contoh di atas, template bersama disematkan menggunakan pernyataan {{ template "Alert Instance Template" . }}

Fragmen ini kemudian dapat dikelola secara terpisah di Terraform:

resource "grafana_message_template" "my_alert_template" { name = "Alert Instance Template" template = <<EOT {{ define "Alert Instance Template" }} Firing: {{ .Labels.alertname }} Silence: {{ .SilenceURL }} {{ end }} EOT }

Kebijakan pemberitahuan penyediaan dan perutean

Kebijakan notifikasi memberi tahu Grafana cara merutekan instance peringatan, sebagai lawan dari where. Mereka menghubungkan peringatan penembakan ke titik kontak yang Anda tentukan sebelumnya menggunakan sistem label dan pencocokan.

Untuk menyediakan kebijakan pemberitahuan dan perutean
  1. Salin blok kode ini ke file.tf di mesin lokal Anda.

    Dalam contoh ini, peringatan dikelompokkan berdasarkanalertname, yang berarti bahwa setiap pemberitahuan yang berasal dari peringatan yang memiliki nama yang sama, dikelompokkan ke dalam pesan Slack yang sama.

    Jika Anda ingin merutekan pemberitahuan tertentu secara berbeda, Anda dapat menambahkan sub-kebijakan. Sub-kebijakan memungkinkan Anda menerapkan perutean ke peringatan yang berbeda berdasarkan pencocokan label. Dalam contoh ini, kami menerapkan waktu bisu ke semua peringatan dengan label a=b.

    resource "grafana_notification_policy" "my_policy" { group_by = ["alertname"] contact_point = grafana_contact_point.my_slack_contact_point.name group_wait = "45s" group_interval = "6m" repeat_interval = "3h" policy { matcher { label = "a" match = "=" value = "b" } group_by = ["..."] contact_point = grafana_contact_point.a_different_contact_point.name mute_timings = [grafana_mute_timing.my_mute_timing.name] policy { matcher { label = "sublabel" match = "=" value = "subvalue" } contact_point = grafana_contact_point.a_third_contact_point.name group_by = ["..."] } } }
  2. Di bidang mute_timings, tautkan waktu bisu ke kebijakan notifikasi Anda.

  3. Jalankan perintah terraform apply.

  4. Buka Grafana UI dan periksa detail kebijakan notifikasi Anda.

    catatan

    Anda tidak dapat mengedit sumber daya yang disediakan dari Terraform dari UI. Ini memastikan bahwa tumpukan peringatan Anda selalu sinkron dengan kode Anda.

  5. Klik Uji untuk memverifikasi bahwa titik notifikasi berfungsi dengan benar.

Ketentuan waktu bisu

Pengaturan waktu bisu memberikan kemampuan untuk membisukan pemberitahuan peringatan untuk periode waktu yang ditentukan.

Untuk menyediakan timing bisu
  1. Salin blok kode ini ke file.tf di mesin lokal Anda.

    Dalam contoh ini, notifikasi peringatan dibisukan pada akhir pekan.

    resource "grafana_mute_timing" "my_mute_timing" { name = "My Mute Timing" intervals { times { start = "04:56" end = "14:17" } weekdays = ["saturday", "sunday", "tuesday:thursday"] months = ["january:march", "12"] years = ["2025:2027"] } }
  2. Jalankan perintah terraform apply.

  3. Buka Grafana UI dan periksa detail waktu bisu Anda.

  4. Referensikan waktu bisu yang baru dibuat dalam kebijakan notifikasi menggunakan mute_timings bidang. Ini akan menerapkan waktu bisu Anda ke beberapa atau semua notifikasi Anda.

    catatan

    Anda tidak dapat mengedit sumber daya yang disediakan dari Terraform dari UI. Ini memastikan bahwa tumpukan peringatan Anda selalu sinkron dengan kode Anda.

  5. Klik Uji untuk memverifikasi bahwa waktu bisu berfungsi dengan benar.

Aturan peringatan ketentuan

Aturan peringatan memungkinkan Anda untuk memperingatkan terhadap sumber data Grafana apa pun. Ini bisa berupa sumber data yang sudah Anda konfigurasikan, atau Anda dapat menentukan sumber data Anda di Terraform bersama aturan peringatan Anda.

Untuk menyediakan aturan peringatan
  1. Buat sumber data untuk kueri dan folder untuk menyimpan aturan Anda.

    Dalam contoh ini, sumber Konfigurasikan sumber TestData data untuk pengujian data digunakan.

    Peringatan dapat didefinisikan terhadap sumber data backend apa pun di Grafana.

    resource "grafana_data_source" "testdata_datasource" { name = "TestData" type = "testdata" } resource "grafana_folder" "rule_folder" { title = "My Rule Folder" }
  2. Tentukan aturan peringatan.

    Untuk informasi selengkapnya tentang aturan peringatan, lihat cara membuat lansiran yang dikelola Grafana.

  3. Buat grup aturan yang berisi satu atau beberapa aturan.

    Dalam contoh ini, grup grafana_rule_group sumber daya digunakan.

    resource "grafana_rule_group" "my_rule_group" { name = "My Alert Rules" folder_uid = grafana_folder.rule_folder.uid interval_seconds = 60 org_id = 1 rule { name = "My Random Walk Alert" condition = "C" for = "0s" // Query the datasource. data { ref_id = "A" relative_time_range { from = 600 to = 0 } datasource_uid = grafana_data_source.testdata_datasource.uid // `model` is a JSON blob that sends datasource-specific data. // It's different for every datasource. The alert's query is defined here. model = jsonencode({ intervalMs = 1000 maxDataPoints = 43200 refId = "A" }) } // The query was configured to obtain data from the last 60 seconds. Let's alert on the average value of that series using a Reduce stage. data { datasource_uid = "__expr__" // You can also create a rule in the UI, then GET that rule to obtain the JSON. // This can be helpful when using more complex reduce expressions. model = <<EOT {"conditions":[{"evaluator":{"params":[0,0],"type":"gt"},"operator":{"type":"and"},"query":{"params":["A"]},"reducer":{"params":[],"type":"last"},"type":"avg"}],"datasource":{"name":"Expression","type":"__expr__","uid":"__expr__"},"expression":"A","hide":false,"intervalMs":1000,"maxDataPoints":43200,"reducer":"last","refId":"B","type":"reduce"} EOT ref_id = "B" relative_time_range { from = 0 to = 0 } } // Now, let's use a math expression as our threshold. // We want to alert when the value of stage "B" above exceeds 70. data { datasource_uid = "__expr__" ref_id = "C" relative_time_range { from = 0 to = 0 } model = jsonencode({ expression = "$B > 70" type = "math" refId = "C" }) } } }
  4. Buka UI Grafana dan periksa aturan peringatan Anda.

    Anda dapat melihat apakah aturan peringatan menyala. Anda juga dapat melihat visualisasi dari setiap tahapan kueri aturan peringatan.

    Saat peringatan diaktifkan, Grafana merutekan notifikasi melalui kebijakan yang Anda tetapkan.

    Misalnya, jika Anda memilih Slack sebagai titik kontak, Alertmanager tertanam Grafana secara otomatis memposting pesan ke Slack.