

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

# Menggunakan templat perpesanan
<a name="alert-message-templates"></a>

****  
**Topik dokumentasi ini dirancang untuk ruang kerja Grafana yang mendukung Grafana versi 8.x.**  
Untuk ruang kerja Grafana yang mendukung Grafana versi 10.x, lihat. [Bekerja di Grafana versi 10](using-grafana-v10.md)  
Untuk ruang kerja Grafana yang mendukung Grafana versi 9.x, lihat. [Bekerja di Grafana versi 9](using-grafana-v9.md)

Pemberitahuan yang dikirim melalui [Bekerja dengan titik kontak](alert-contact-points.md) dibuat menggunakan *templat perpesanan*. Template default Grafana didasarkan pada [sistem template Go di mana beberapa bidang dievaluasi sebagai teks, sementara yang lain dievaluasi sebagai HTML (yang dapat memengaruhi pelolosan](https://golang.org/pkg/text/template)).

Karena sebagian besar bidang titik kontak dapat di-template, Anda dapat membuat templat khusus yang dapat digunakan kembali dan menggunakannya di beberapa titik kontak. [Data templat](#alert-template-data)Topik mencantumkan variabel yang tersedia untuk templating.

**Menggunakan template**

Template digunakan untuk membuat pesan. Misalnya, dengan pesan peringatan Slack, Anda dapat mengatur judul dan isi di titik kontak. Contoh berikut menunjukkan cara menggunakan templat default untuk membuat judul yang berisi jumlah peringatan yang ditembakkan dan diselesaikan, dan badan yang mencantumkan peringatan dan statusnya.
+ **Judul**:

  ```
  {{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved
  ```
+ **Tubuh Teks**: 

  ```
  {{ range .Alerts }}{{ .Status }}: {{ .Labels.alertname }}
  {{end }}
  ```

Anda dapat membuat template kustom Anda sendiri, seperti pada contoh berikut.
+ **Judul**:

  ```
  {{ template "slack.default.title" .}}
  ```
+ **Tubuh Teks**: 

  ```
  {{ template "mymessage" .}}
  ```

Berikut ini adalah contoh template.

```
{{ define "myalert" }}
  [{{.Status}}] {{ .Labels.alertname }}

  Labels:
  {{ range .Labels.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}

  {{ if gt (len .Annotations) 0 }}
  Annotations:
  {{ range .Annotations.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}
  {{ end }}

  {{ if gt (len .SilenceURL ) 0 }}
    Silence alert: {{ .SilenceURL }}
  {{ end }}
  {{ if gt (len .DashboardURL ) 0 }}
    Go to dashboard: {{ .DashboardURL }}
  {{ end }}
{{ end }}
```

Prosedur berikut menunjukkan cara membuat, mengedit, dan menghapus templat pesan khusus.

**Untuk membuat template pesan**

1. **Dari konsol Grafana Anda, di menu Grafana, pilih ikon **Peringatan** (bel) untuk membuka halaman Peringatan.**

1. Pilih **Titik kontak**.

1. Dari tarik-turun **Alertmanager**, pilih contoh Alertmanager yang ingin Anda buat template pesan. Defaultnya adalah Grafana Alertmanager.

1. Pilih **Tambahkan templat**.

1. Tambahkan **nama** deskriptif.

1. Tambahkan **Konten** untuk template, misalnya:

   ```
   {{ define "mymessage" }}
     {{ range .Alerts }}
       [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}}
     {{ end }}
   {{ end }}
   ```

   `define`Tag di bagian Konten memberikan nama template. Tag ini opsional, dan ketika dihilangkan, nama template berasal dari bidang **Nama**. Ketika keduanya ditentukan, itu adalah praktik terbaik untuk menjaga mereka tetap sama.

1. Pilih **Simpan template**.

**catatan**  
HTML dalam peringatan template pesan dirender sebagai teks, dengan karakter kontrol lolos. Rendering HTML dalam notifikasi yang dihasilkan tidak didukung oleh Grafana.

**Untuk mengedit template pesan**

1. Di halaman **Peringatan**, pilih **Titik kontak** untuk membuka daftar titik kontak.

1. Di **tabel Template**, temukan template yang ingin Anda edit, lalu pilih ikon **Edit** (pena).

1. Buat perubahan, lalu pilih **Simpan template**.

**Untuk menghapus template pesan**

1. Di halaman **Peringatan**, pilih **Titik kontak** untuk membuka daftar titik kontak.

1. Di **tabel Template**, temukan template yang ingin Anda hapus, lalu pilih ikon **Hapus** (tempat sampah).

1. Pilih **Ya, hapus** untuk menghapus template.

**Template bersarang**

Anda dapat menyematkan template dalam template lain.

Misalnya, Anda dapat menentukan fragmen template menggunakan `define` kata kunci:

```
{{ define "mytemplate" }}
  {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved.
{{ end }}
```

Anda kemudian dapat menyematkan template kustom dalam fragmen ini menggunakan kata kunci. `template` Contoh:

```
Alert summary:
{{ template "mytemplate" . }}
```

Anda dapat menggunakan opsi templat bawaan berikut untuk menyematkan templat khusus.


| Nama | Catatan | 
| --- | --- | 
|  `default.title`  |  Menampilkan informasi status tingkat tinggi.  | 
|  `default.message`  |  Menyediakan ringkasan pemformatan dan peringatan yang diselesaikan.  | 

**Contoh template kustom**

Berikut adalah contoh cara menggunakan templat khusus.

Template untuk membuat peringatan tunggal:

```
{{ define "myalert" }}
  [{{.Status}}] {{ .Labels.alertname }}

  Labels:
  {{ range .Labels.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}

  {{ if gt (len .Annotations) 0 }}
  Annotations:
  {{ range .Annotations.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}
  {{ end }}

  {{ if gt (len .SilenceURL ) 0 }}
    Silence alert: {{ .SilenceURL }}
  {{ end }}
  {{ if gt (len .DashboardURL ) 0 }}
    Go to dashboard: {{ .DashboardURL }}
  {{ end }}
{{ end }}
```

Template untuk merender seluruh pesan notifikasi:

```
{{ define "mymessage" }}
  {{ if gt (len .Alerts.Firing) 0 }}
    {{ len .Alerts.Firing }} firing:
    {{ range .Alerts.Firing }} {{ template "myalert" .}} {{ end }}
  {{ end }}
  {{ if gt (len .Alerts.Resolved) 0 }}
    {{ len .Alerts.Resolved }} resolved:
    {{ range .Alerts.Resolved }} {{ template "myalert" .}} {{ end }}
  {{ end }}
{{ end }}
```

## Data templat
<a name="alert-template-data"></a>

Data berikut diteruskan ke template pesan.


| Nama | Tipe | Catatan | 
| --- | --- | --- | 
|  `Receiver`  |  string  |  Nama titik kontak tempat notifikasi dikirim.  | 
|  `Status`  |  string  |  menembak jika setidaknya satu peringatan ditembakkan, jika tidak diselesaikan.  | 
|  `Alerts`  |  Pemberitahuan  |  Daftar objek peringatan yang disertakan dalam pemberitahuan ini (lihat di bawah).  | 
|  `GroupLabels`  |  KeyValue  |  Label peringatan ini dikelompokkan berdasarkan.  | 
|  `CommonLabels`  |  KeyValue  |  Label umum untuk semua peringatan yang disertakan dalam notifikasi ini.  | 
|  `CommonAnnotations`  |  KeyValue  |  Anotasi umum untuk semua peringatan yang disertakan dalam pemberitahuan ini.  | 
|  `ExternalURL`  |  string  |  Tautan kembali ke Grafana yang mengirim notifikasi. Jika menggunakan Alertmanager eksternal, tautan kembali ke Alertmanager ini.  | 

`Alerts`Jenis ini mengekspos dua fungsi untuk memfilter peringatan yang dikembalikan.
+ `Alerts.Firing`— Mengembalikan daftar peringatan penembakan.
+ `Alerts.Resolved`— Mengembalikan daftar peringatan diselesaikan.

**Peringatan (tipe)**

Jenis peringatan berisi data berikut.


| Nama | Tipe | Catatan | 
| --- | --- | --- | 
|  Status  |  string  |  `firing` atau `resolved`.  | 
|  Label  |  KeyValue  |  Satu set label yang dilampirkan pada peringatan.  | 
|  Anotasi  |  KeyValue  |  Satu set anotasi yang dilampirkan pada peringatan.  | 
|  StartsAt  |  waktu.waktu  |  Waktu peringatan mulai menembak.  | 
|  EndsAt  |  waktu.waktu  |  Hanya atur jika waktu akhir peringatan diketahui. Jika tidak, atur ke periode batas waktu yang dapat dikonfigurasi sejak peringatan terakhir diterima.  | 
|  GeneratorURL  |  string  |  Tautan balik ke Grafana atau Alertmanager eksternal.  | 
|  SilenceUrl  |  string  |  Tautkan ke grafana silence untuk dengan label untuk peringatan ini yang telah diisi sebelumnya. Hanya untuk peringatan terkelola Grafana.  | 
|  DashboardURL  |  string  |  Tautkan ke dasbor grafana, jika aturan peringatan milik salah satunya. Hanya untuk peringatan terkelola Grafana.  | 
|  PanelURL  |  string  |  Tautkan ke panel dasbor grafana, jika aturan peringatan milik salah satunya. Hanya untuk peringatan terkelola Grafana.  | 
|  Sidik jari  |  string  |  Sidik jari yang dapat digunakan untuk mengidentifikasi peringatan.  | 
|  ValueString  |  string  |  String yang berisi label dan nilai setiap ekspresi yang dikurangi dalam peringatan.  | 

**KeyValue jenis**

`KeyValue`Tipe adalah satu set pasangan key/value string yang mewakili label dan anotasi.

Selain akses langsung dari data yang disimpan sebagai a`KeyValue`, ada juga metode untuk menyortir, menghapus dan mengubah data.


| Nama | Pendapat | Pengembalian | Catatan | 
| --- | --- | --- | --- | 
|  SortedPairs  |    |  Daftar pasangan string kunci dan nilai yang diurutkan  |    | 
|  Menghapus  |  [] string  |  KeyValue  |  Mengembalikan salinan Key/Value peta tanpa kunci yang diberikan.  | 
|  Nama  |    |  [] string  |  Daftar nama label  | 
|  Nilai  |    |  [] string  |  Daftar nilai label  | 



## Fungsi template
<a name="alert-template-functions"></a>

Dengan menggunakan fungsi template, Anda dapat memproses label dan anotasi untuk menghasilkan notifikasi dinamis. Fungsi-fungsi berikut tersedia.


| Nama | Jenis Argumen | Jenis pengembalian | Deskripsi | 
| --- | --- | --- | --- | 
|  `humanize`  |  nomor atau string  |  string  |  Mengonversi angka ke format yang lebih mudah dibaca, menggunakan awalan metrik.  | 
|  `humanize1024`  |  nomor atau string  |  string  |  Seperti memanusiakan, tetapi menggunakan 1024 sebagai basis daripada 1000.  | 
|  `humanizeDuration`  |  nomor atau string  |  string  |  Mengonversi durasi dalam hitungan detik ke format yang lebih mudah dibaca.  | 
|  `humanizePercentage`  |  nomor atau string  |  string  |  Mengkonversi nilai rasio menjadi pecahan dari 100.  | 
|  `humanizeTimestamp`  |  nomor atau string  |  string  |  Mengonversi stempel waktu Unix dalam hitungan detik ke format yang lebih mudah dibaca.  | 
|  `title`  |  string  |  string  |  Strings.title, mengkapitalisasi karakter pertama dari setiap kata.  | 
|  `toUpper`  |  string  |  string  |  senar. ToUpper, mengonversi semua karakter ke huruf besar.  | 
|  `toLower`  |  string  |  string  |  senar. ToLower, mengonversi semua karakter ke huruf kecil.  | 
|  `match`  |  pola, teks  |  boolean  |  regexp. MatchString Tes untuk pertandingan regexp yang tidak ditambatkan.  | 
|  `reReplaceAll`  |  pola, penggantian, teks  |  string  |  Regexp. ReplaceAllString Regexp substitusi, tidak berlabuh.  | 
|  `graphLink`  |  string - Objek JSON dengan `expr` dan bidang `datasource`  |  string  |  Mengembalikan jalur ke tampilan grafis di Jelajahi untuk ekspresi dan sumber data yang diberikan.  | 
|  `tableLink`  |  string - Objek JSON dengan `expr` dan bidang `datasource`  |  string  |  Mengembalikan jalur ke tampilan tabel di Jelajahi untuk ekspresi dan sumber data yang diberikan.  | 
|  `args`  |  [] antarmuka \$1\$1  |  peta [string] antarmuka \$1\$1  |  Mengkonversi daftar objek ke peta dengan kunci, misalnya, arg0, arg1. Gunakan fungsi ini untuk meneruskan beberapa argumen ke template.  | 
|  `externalURL`  |  tidak ada  |  string  |  Mengembalikan string yang mewakili URL eksternal.  | 
|  `pathPrefix`  |  tidak ada  |  string  |  Mengembalikan jalur URL eksternal.  | 

Tabel berikut menunjukkan contoh penggunaan setiap fungsi.


| Fungsi | TemplateString | Input | Expected | 
| --- | --- | --- | --- | 
|  memanusiakan  |  \$1memanusiakan \$1value\$1  |  1234567.0  |  1.235 M  | 
|  manusia1024  |  \$1humanize1024 \$1nilai\$1  |  1048576.0  |  1Mi  | 
|  HumanizeUrasi  |  \$1HumanizeDuration \$1value\$1  |  899,99  |  14m 59s  | 
|  HumanizePersentase  |  \$1HumanizePersentase \$1 nilai\$1  |  0.1234567  |  12,35%  | 
|  HumanizeTimestamp  |  \$1HumanizeTimeStamp \$1nilai\$1  |  1435065584.128  |  2015-06-23 13:19:44.128 \$10000 UTC  | 
|  title  |  \$1\$1value \$1 judul\$1  |  aa bB CC  |  Aa Bb Cc  | 
|  toUpper  |  \$1\$1nilai \$1 TouPper\$1  |  aa bB CC  |  AA BB CC  | 
|  toLower  |  \$1\$1value \$1 toLower\$1  |  aa bB CC  |  aa bb cc  | 
|  match  |  \$1cocokkan “a\$1” \$1labels.instance\$1  |  aa  |  true  | 
|  reReplaceAll  |  \$1\$1 reReplaceAll “localhost :( .\$1)” “my.domain: \$11" \$1labels.instance\$1\$1  |  localhost:3000  |  domain.my:3000  | 
|  GraphLink  |  \$1\$1GraphLink “\$1\$1" expr\$1”:\$1 "up\$1”,\$1 "sumber data\$1”:\$1 "gdev-prometheus\$1"\$1”\$1\$1  |    |  /jelajahi? left= ["now-1h”, "now”, "gdev-prometheus”, \$1"datasource” :"gdev-prometheus”, "expr” :"up”, "instant” :false, "range” :true\$1]  | 
|  TableLink  |  \$1\$1TableLink “\$1\$1" expr\$1”:\$1 "up\$1”,\$1 "sumber data\$1”:\$1 "gdev-prometheus\$1"\$1”\$1\$1  |    |  /jelajahi? left= ["now-1h”, "now”, "gdev-prometheus”, \$1"datasource” :"gdev-prometheus”, "expr” :"up”, "instant” :true, "range” :false\$1]  | 
|  args  |  \$1\$1define “x"\$1\$1 \$1\$1.arg0\$1\$1 \$1\$1.arg1\$1\$1 \$1\$1end\$1\$1 \$1\$1template “x” (argumen 1 “2")\$1\$1  |    |  1 2  | 
|  URL eksternal  |  \$1ExternalUrl\$1  |    |  http://localhost/path/prefix  | 
|  PathPrefix  |  \$1PathPrefix\$1  |    |  /jalur/awalan  | 