

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

# Sesuaikan notifikasi
<a name="v9-alerting-notifications"></a>

****  
**Topik dokumentasi ini dirancang untuk ruang kerja Grafana yang mendukung Grafana versi 9.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 8.x, lihat. [Bekerja di Grafana versi 8](using-grafana-v8.md)

Sesuaikan notifikasi Anda dengan templat notifikasi.

Anda dapat menggunakan templat notifikasi untuk mengubah judul, pesan, dan format pesan di notifikasi.

Template notifikasi tidak terkait dengan integrasi titik kontak tertentu, seperti email atau Slack. Namun, Anda dapat memilih untuk membuat templat notifikasi terpisah untuk integrasi titik kontak yang berbeda.

Anda dapat menggunakan template notifikasi untuk:
+ Menambahkan, menghapus, atau mengurutkan ulang informasi dalam pemberitahuan termasuk ringkasan, deskripsi, label dan anotasi, nilai, dan tautan
+ Format teks dalam huruf tebal dan miring, dan tambahkan atau hapus jeda baris

Anda tidak dapat menggunakan templat notifikasi untuk:
+ Ubah desain notifikasi di layanan pesan instan seperti Slack dan Microsoft Teams

**Topics**
+ [Menggunakan bahasa template Go](v9-alerting-notifications-go-templating.md)
+ [Buat templat notifikasi](v9-alerting-create-templates.md)
+ [Referensi templat](v9-alerting-template-reference.md)

# Menggunakan bahasa template Go
<a name="v9-alerting-notifications-go-templating"></a>

****  
**Topik dokumentasi ini dirancang untuk ruang kerja Grafana yang mendukung Grafana versi 9.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 8.x, lihat. [Bekerja di Grafana versi 8](using-grafana-v8.md)

Anda menulis template notifikasi dalam bahasa template Go, [teks/template](https://pkg.go.dev/text/template).

Bagian ini memberikan ikhtisar bahasa template Go dan template penulisan dalam teks/template.

## Dot
<a name="v9-go-dot"></a>

Di text/template sana ada kursor khusus yang disebut titik, dan ditulis sebagai`.`. Anda dapat menganggap kursor ini sebagai variabel yang nilainya berubah tergantung di mana dalam template itu digunakan. Misalnya, pada awal template notifikasi `.` mengacu pada `ExtendedData` objek, yang berisi sejumlah bidang termasuk`Alerts`,,`Status`, `GroupLabels``CommonLabels`, `CommonAnnotations` dan`ExternalURL`. Namun, dot mungkin merujuk ke sesuatu yang lain saat digunakan dalam daftar di `range` atas, saat digunakan di dalam`with`, atau saat menulis templat fitur untuk digunakan di templat lain. Anda dapat melihat contoh ini di[Buat templat notifikasi](v9-alerting-create-templates.md), dan semua data dan fungsi di[Referensi templat](v9-alerting-template-reference.md).

## Membuka dan menutup tag
<a name="v9-go-openclosetags"></a>

Dalam teks/template, template dimulai dengan `{{` dan diakhiri dengan `}}` terlepas dari apakah template mencetak variabel atau menjalankan struktur kontrol seperti pernyataan if. Ini berbeda dari bahasa templating lainnya seperti Jinja di mana pencetakan variabel menggunakan `{{` dan `}}` dan struktur kontrol menggunakan `{%` dan. `%}`

## Cetak
<a name="v9-go-print"></a>

Untuk mencetak nilai sesuatu gunakan `{{` dan`}}`. Anda dapat mencetak nilai titik, bidang titik, hasil fungsi, dan nilai [variabel](#v9-go-variables). Misalnya, untuk mencetak `Alerts` bidang di mana titik mengacu pada `ExtendedData` Anda akan menulis yang berikut:

```
{{ .Alerts }}
```

## Iterasi di atas peringatan
<a name="v9-go-iterate-alerts"></a>

Untuk mencetak hanya label setiap peringatan, bukan semua informasi tentang peringatan, Anda dapat menggunakan a `range` untuk mengulangi peringatan di: `ExtendedData`

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
```

Di dalam rentang titik tidak lagi mengacu pada`ExtendedData`, tetapi ke`Alert`. Anda dapat menggunakan `{{ .Labels }}` untuk mencetak label setiap peringatan. Ini berfungsi karena `{{ range .Alerts }}` perubahan titik untuk merujuk ke peringatan saat ini dalam daftar peringatan. Ketika rentang selesai titik diatur ulang ke nilai yang dimilikinya sebelum dimulainya rentang, yang dalam contoh ini adalah`ExtendedData`:

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
{{/* does not work, .Labels does not exist here */}}
{{ .Labels }}
{{/* works, cursor was reset */}}
{{ .Status }}
```

## Ulangi anotasi dan label
<a name="v9-go-iterate-labels"></a>

Mari kita menulis template untuk mencetak label setiap peringatan dalam format`The name of the label is $name, and the value is $value`, di mana `$name` dan `$value` berisi nama dan nilai setiap label.

Seperti pada contoh sebelumnya, gunakan rentang untuk mengulangi peringatan `.Alerts` sedemikian rupa sehingga titik mengacu pada peringatan saat ini dalam daftar peringatan, dan kemudian gunakan rentang kedua pada label yang diurutkan sehingga titik diperbarui untuk kedua kalinya untuk merujuk ke label saat ini. Di dalam rentang kedua gunakan `.Name` dan `.Value` untuk mencetak nama dan nilai setiap label:

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
The name of the label is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ range .Annotations.SortedPairs }}
The name of the annotation is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ end }}
```

## Jika pernyataan
<a name="v9-go-if"></a>

Anda dapat menggunakan pernyataan if dalam template. Misalnya, untuk mencetak `There are no alerts` jika tidak ada peringatan di `.Alerts` Anda akan menulis yang berikut:

```
{{ if .Alerts }}
There are alerts
{{ else }}
There are no alerts
{{ end }}
```

## Dengan
<a name="v9-go-with"></a>

Dengan mirip dengan pernyataan if, namun tidak seperti pernyataan if, `with` pembaruan titik untuk merujuk ke nilai with:

```
{{ with .Alerts }}
There are {{ len . }} alert(s)
{{ else }}
There are no alerts
{{ end }}
```

## Variabel
<a name="v9-go-variables"></a>

Variabel dalam text/template harus dibuat dalam template. Misalnya, untuk membuat variabel yang disebut `$variable` dengan nilai titik saat ini Anda akan menulis yang berikut ini:

```
{{ $variable := . }}
```

Anda dapat menggunakan `$variable` di dalam rentang atau `with` dan itu akan merujuk ke nilai titik pada saat variabel didefinisikan, bukan nilai titik saat ini.

Misalnya, Anda tidak dapat menulis templat yang digunakan `{{ .Labels }}` dalam rentang kedua karena di sini titik mengacu pada label saat ini, bukan peringatan saat ini:

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* does not work because in the second range . is a label not an alert */}}
There are {{ len .Labels }}
{{ end }}
{{ end }}
```

Anda dapat memperbaikinya dengan mendefinisikan variabel yang disebut `$alert` dalam rentang pertama dan sebelum rentang kedua:

```
{{ range .Alerts }}
{{ $alert := . }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* works because $alert refers to the value of dot inside the first range */}}
There are {{ len $alert.Labels }}
{{ end }}
{{ end }}
```

## Rentang dengan indeks
<a name="v9-go-rangeindex"></a>

Anda bisa mendapatkan indeks setiap peringatan dalam rentang dengan mendefinisikan indeks dan variabel nilai di awal rentang:

```
{{ $num_alerts := len .Alerts }}
{{ range $index, $alert := .Alerts }}
This is alert {{ $index }} out of {{ $num_alerts }}
{{ end }}
```

## Tentukan templat
<a name="v9-go-define"></a>

Anda dapat menentukan template yang dapat digunakan dalam template lain, menggunakan `define` dan nama template dalam tanda kutip ganda. Anda tidak boleh mendefinisikan template dengan nama yang sama dengan template lain, termasuk template default seperti`__subject`,`__text_values_list`,`__text_alert_list`, `default.title` dan`default.message`. Jika templat telah dibuat dengan nama yang sama dengan templat default, atau templat di templat notifikasi lain, Grafana mungkin menggunakan salah satu templat. Grafana tidak mencegah, atau menampilkan pesan kesalahan, ketika ada dua atau lebih templat dengan nama yang sama.

```
{{ define "print_labels" }}
{{ end }}
```

## Template sematkan
<a name="v9-go-embed"></a>

Anda dapat menyematkan template yang ditentukan dalam template Anda menggunakan`template`, nama template dalam tanda kutip ganda, dan kursor yang harus diteruskan ke template:

```
{{ template "print_labels" . }}
```

## Meneruskan data ke template
<a name="v9-go-passdata"></a>

Dalam titik template mengacu pada nilai yang diteruskan ke template.

Misalnya, jika templat dilewatkan daftar peringatan penembakan maka dot mengacu pada daftar peringatan penembakan tersebut:

```
{{ template "print_alerts" .Alerts }}
```

Jika templat dilewatkan label yang diurutkan untuk peringatan maka dot mengacu pada daftar label yang diurutkan:

```
{{ template "print_labels" .SortedLabels }}
```

Ini berguna saat menulis templat yang dapat digunakan kembali. Misalnya, untuk mencetak semua peringatan, Anda dapat menulis yang berikut ini:

```
{{ template "print_alerts" .Alerts }}
```

Kemudian untuk mencetak hanya peringatan penembakan Anda dapat menulis ini:

```
{{ template "print_alerts" .Alerts.Firing }}
```

Ini berfungsi karena keduanya `.Alerts` dan `.Alerts.Firing` merupakan daftar peringatan.

```
{{ define "print_alerts" }}
{{ range . }}
{{ template "print_labels" .SortedLabels }}
{{ end }}
{{ end }}
```

## Komentar
<a name="v9-go-comments"></a>

Anda dapat menambahkan komentar dengan `{{/*` dan`*/}}`:

```
{{/* This is a comment */}}
```

Untuk mencegah komentar menambahkan jeda baris gunakan:

```
{{- /* This is a comment with no leading or trailing line breaks */ -}}
```

## Lekukan
<a name="v9-go-indentation"></a>

Anda dapat menggunakan lekukan, baik tab maupun spasi, dan jeda baris, untuk membuat templat lebih mudah dibaca:

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

Namun, lekukan dalam template juga akan ada dalam teks. Selanjutnya kita akan melihat cara menghapusnya.

## Hapus spasi dan jeda baris
<a name="v9-go-removespace"></a>

 text/template Digunakan `{{-` dan `-}}` untuk menghapus spasi depan dan trailing dan jeda garis.

Misalnya, saat menggunakan lekukan dan jeda baris untuk membuat templat lebih mudah dibaca:

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

Lekukan dan jeda baris juga akan ada dalam teks:

```
    alertname = "Test"

    grafana_folder = "Test alerts"
```

Anda dapat menghapus lekukan dan jeda baris dari teks yang berubah `}}` menjadi `-}}` di awal setiap rentang:

```
{{ range .Alerts -}}
  {{ range .Labels.SortedPairs -}}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

Indentasi dan jeda baris dalam template sekarang tidak ada dari teks:

```
alertname = "Test"
grafana_folder = "Test alerts"
```

# Buat templat notifikasi
<a name="v9-alerting-create-templates"></a>

****  
**Topik dokumentasi ini dirancang untuk ruang kerja Grafana yang mendukung Grafana versi 9.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 8.x, lihat. [Bekerja di Grafana versi 8](using-grafana-v8.md)

Buat templat notifikasi yang dapat digunakan kembali untuk dikirim ke titik kontak Anda.

Anda dapat menambahkan satu atau beberapa templat ke templat notifikasi Anda.

Nama template notifikasi Anda harus unik. Anda tidak dapat memiliki dua templat dengan nama yang sama di templat notifikasi yang sama atau di templat notifikasi yang berbeda. Hindari mendefinisikan template dengan nama yang sama dengan template default, seperti:`__subject`,, `__text_values_list``__text_alert_list`, `default.title` dan`default.message`.

Di tab Titik kontak, Anda dapat melihat daftar templat notifikasi Anda.

## Membuat template notifikasi
<a name="v9-alerting-creating-templates"></a>

**Untuk membuat template notifikasi**

1. Klik **Tambahkan templat**.

1. Pilih nama untuk template notifikasi, seperti`email.subject`.

1. Tulis konten template di bidang konten.

   Contoh:

   ```
   {{ if .Alerts.Firing -}}
      {{ len .Alerts.Firing }} firing alerts
      {{ end }}
      {{ if .Alerts.Resolved -}}
      {{ len .Alerts.Resolved }} resolved alerts
      {{ end }}
   ```

1. Klik Simpan.

   `{{ define "email.subject" }}`(di `email.subject` mana nama template Anda) dan `{{ end }}` secara otomatis ditambahkan ke awal dan akhir konten.

**Untuk membuat template notifikasi yang berisi lebih dari satu template:**

1. Klik **Tambahkan Template**.

1. Masukkan nama untuk template notifikasi keseluruhan. Misalnya, `email`.

1. Tulis setiap templat di bidang Konten, termasuk `{{ define "name-of-template" }}` dan `{{ end }}` di awal dan akhir setiap templat. Anda dapat menggunakan nama deskriptif untuk setiap templat di templat notifikasi, misalnya, `email.subject` atau`email.message`. Dalam hal ini, jangan gunakan kembali nama template notifikasi yang Anda masukkan di atas.

   Bagian berikut menunjukkan contoh rinci untuk template yang mungkin Anda buat.

1. Klik Simpan.

## Membuat template untuk subjek email
<a name="v9-alerting-create-template-subject"></a>

Buat templat untuk subjek email yang berisi jumlah peringatan yang ditembakkan dan diselesaikan, seperti dalam contoh ini:

```
1 firing alerts, 0 resolved alerts
```

**Untuk membuat template untuk subjek email**

1. Buat template yang disebut `email.subject` dengan konten berikut:

   ```
   {{ define "email.subject" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. Gunakan template saat membuat integrasi titik kontak Anda dengan memasukkannya ke bidang **Subjek** dengan `template` kata kunci.

   ```
   {{ template "email.subject" . }}
   ```

## Membuat template untuk pesan email
<a name="v9-alerting-create-template-message"></a>

Buat templat untuk pesan email yang berisi ringkasan semua peringatan yang diaktifkan dan diselesaikan, seperti dalam contoh ini:

```
There are 2 firing alerts, and 1 resolved alerts

Firing alerts:

- alertname=Test 1 grafana_folder=GrafanaCloud has value(s) B=1
- alertname=Test 2 grafana_folder=GrafanaCloud has value(s) B=2

Resolved alerts:

- alertname=Test 3 grafana_folder=GrafanaCloud has value(s) B=0
```

**Untuk membuat template untuk pesan email**

1. Buat template notifikasi yang disebut `email` dengan dua templat dalam konten: `email.message_alert` dan`email.message`.

   `email.message_alert`Template digunakan untuk mencetak label dan nilai untuk setiap peringatan yang diaktifkan dan diselesaikan sementara `email.message` template berisi struktur email.

   ```
   {{- define "email.message_alert" -}}
   {{- range .Labels.SortedPairs }}{{ .Name }}={{ .Value }} {{ end }} has value(s)
   {{- range $k, $v := .Values }} {{ $k }}={{ $v }}{{ end }}
   {{- end -}}
   
   {{ define "email.message" }}
   There are {{ len .Alerts.Firing }} firing alerts, and {{ len .Alerts.Resolved }} resolved alerts
   
   {{ if .Alerts.Firing -}}
   Firing alerts:
   {{- range .Alerts.Firing }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ if .Alerts.Resolved -}}
   Resolved alerts:
   {{- range .Alerts.Resolved }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ end }}
   ```

1. Gunakan template saat membuat integrasi titik kontak Anda dengan memasukkannya ke dalam bidang **Text Body** dengan `template` kata kunci.

   ```
   {{ template "email.message" . }}
   ```

## Membuat template untuk judul pesan Slack
<a name="v9-alerting-create-template-slack-title"></a>

Buat template untuk judul pesan Slack yang berisi jumlah peringatan yang diaktifkan dan diselesaikan, seperti pada contoh berikut:

```
1 firing alerts, 0 resolved alerts
```

**Untuk membuat template untuk judul pesan Slack**

1. Buat template yang disebut `slack.title` dengan konten berikut:

   ```
   {{ define "slack.title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. Gunakan template saat membuat integrasi titik kontak Anda dengan memasukkannya ke dalam bidang **Judul** dengan `template` kata kunci.

   ```
   {{ template "slack.title" . }}
   ```

## Membuat template untuk konten pesan Slack
<a name="v9-alerting-create-template-slack-message"></a>

Buat template untuk konten pesan Slack yang berisi deskripsi semua peringatan yang diaktifkan dan diselesaikan, termasuk label, anotasi, dan URL Dasbor:

```
1 firing alerts:

[firing] Test1
Labels:
- alertname: Test1
- grafana_folder: GrafanaCloud
Annotations:
- description: This is a test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1

1 resolved alerts:

[firing] Test2
Labels:
- alertname: Test2
- grafana_folder: GrafanaCloud
Annotations:
- description: This is another test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
```

**Untuk membuat template untuk konten pesan Slack**

1. Buat template yang disebut `slack` dengan dua template dalam konten: `slack.print_alert` dan`slack.message`.

   `slack.print_alert`Template digunakan untuk mencetak label, anotasi, dan dasbordURL sementara `slack.message` template berisi struktur notifikasi.

   ```
   {{ define "slack.print_alert" -}}
   [{{.Status}}] {{ .Labels.alertname }}
   Labels:
   {{ range .Labels.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ if .Annotations -}}
   Annotations:
   {{ range .Annotations.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ end -}}
   {{ if .DashboardURL -}}
     Go to dashboard: {{ .DashboardURL }}
   {{- end }}
   {{- end }}
   
   {{ define "slack.message" -}}
   {{ if .Alerts.Firing -}}
   {{ len .Alerts.Firing }} firing alerts:
   {{ range .Alerts.Firing }}
   {{ template "slack.print_alert" . }}
   {{ end -}}
   {{ end }}
   {{ if .Alerts.Resolved -}}
   {{ len .Alerts.Resolved }} resolved alerts:
   {{ range .Alerts.Resolved }}
   {{ template "slack.print_alert" .}}
   {{ end -}}
   {{ end }}
   {{- end }}
   ```

1. Gunakan template saat membuat integrasi titik kontak Anda dengan memasukkannya ke dalam bidang **Text Body** dengan `template` kata kunci.

   ```
   {{ template "slack.message" . }}
   ```

## Template email dan Slack dengan template bersama
<a name="v9-alerting-create-shared-templates"></a>

Alih-alih membuat template notifikasi terpisah untuk setiap titik kontak, seperti email dan Slack, Anda dapat berbagi template yang sama.

Misalnya, jika Anda ingin mengirim email dengan subjek ini dan pesan Slack dengan judul ini`1 firing alerts, 0 resolved alerts`, Anda dapat membuat templat bersama.

**Untuk membuat template bersama**

1. Buat template yang disebut `common.subject_title` dengan konten berikut:

   ```
   {{ define "common.subject_title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. Untuk email, jalankan template dari bidang subjek dalam integrasi titik kontak email Anda:

   ```
   {{ template "common.subject_title" . }}
   ```

1. Untuk Slack, jalankan template dari bidang judul di integrasi titik kontak Slack Anda:

   ```
   {{ template "common.subject_title" . }}
   ```

## Menggunakan template notifikasi
<a name="v9-alerting-use-notification-templates"></a>

Gunakan templat di titik kontak untuk menyesuaikan notifikasi Anda.

**Untuk menggunakan template saat membuat titik kontak**

1. Dari menu **Peringatan**, pilih **Titik kontak** untuk melihat daftar titik kontak yang ada.

1. Pilih **Tambahkan titik kontak**. Sebagai alternatif, Anda dapat mengedit titik kontak yang ada dengan memilih ikon **Edit** (pena) di sebelah titik kontak yang ingin Anda edit.

1. Masukkan templat yang ingin Anda gunakan dalam satu atau beberapa bidang, seperti **Pesan** atau **Subjek**. Untuk memasukkan templat, gunakan formulir`{{ template "template_name" . }}`, ganti *template\$1name* dengan nama templat yang ingin Anda gunakan.

1. Klik **Simpan titik kontak**.

# Referensi templat
<a name="v9-alerting-template-reference"></a>

****  
**Topik dokumentasi ini dirancang untuk ruang kerja Grafana yang mendukung Grafana versi 9.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 8.x, lihat. [Bekerja di Grafana versi 8](using-grafana-v8.md)

Bagian ini memberikan informasi referensi untuk membuat template Anda.

## Data templat
<a name="v9-alerting-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.  | 
| Nilai | KeyValue | Nilai dari semua ekspresi, termasuk Kondisi Klasik | 
|  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  |  Tautan untuk membungkam peringatan (dengan label untuk peringatan ini 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.  | 

 **ExtendedData**

 ExtendedData Objek berisi properti berikut.


| Nama | Jenis | Deskripsi | Contoh | 
| --- | --- | --- | --- | 
|  Penerima  |  `string`  |  Nama titik kontak yang mengirimkan notifikasi.  |  `{{ .Receiver }}`  | 
|  Status  |  `string`  |  Statusnya adalah `firing if at least one alert is firing, otherwise resolved.`  |  `{{ .Status }}`  | 
|  Pemberitahuan  |  `[]Alert`  |  Daftar semua peringatan yang ditembakkan dan diselesaikan dalam pemberitahuan ini.  |  `There are {{ len .Alerts }} alerts`  | 
|  Peringatan penembakan  |  `[]Alert`  |  Daftar semua peringatan penembakan dalam pemberitahuan ini.  |  `There are {{ len .Alerts.Firing }} firing alerts`  | 
|  Peringatan terselesaikan  |  `[]Alert`  |  Daftar semua peringatan yang diselesaikan dalam pemberitahuan ini.  |  `There are {{ len .Alerts.Resolved }} resolved alerts`  | 
|  GroupLabels  |  `KeyValue`  |  Label yang mengelompokkan peringatan ini termasuk pemberitahuannya.  |  `{{ .GroupLabels }}`  | 
|  CommonLabels  |  `KeyValue`  |  Label umum untuk semua peringatan dalam pemberitahuan ini.  |  `{{ .CommonLabels }}`  | 
|  CommonAnnotations  |  `KeyValue`  |  Anotasi umum untuk semua peringatan dalam pemberitahuan ini.  |  `{{ .CommonAnnotations }}`  | 
|  URL eksternal  |  `string`  |  Tautan ke ruang kerja Grafana atau Alertmanager yang mengirimkan pemberitahuan ini.  |  `{{ .ExternalURL }}`  | 

**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 | Contoh | 
| --- | --- | --- | --- | --- | 
|  SortedPairs  |    |  Daftar pasangan string kunci dan nilai yang diurutkan  |    | `{{ .Annotations.SortedPairs }}` | 
|  Menghapus  |  [] string  |  KeyValue  |  Mengembalikan salinan Key/Value peta tanpa kunci yang diberikan.  | `{{ .Annotations.Remove "summary" }}` | 
|  Nama  |    |  [] string  |  Daftar nama label  | `{{ .Names }}` | 
|  Nilai  |    |  [] string  |  Daftar nilai label  | `{{ .Values }}` | 

**Waktu**

Waktu dari [https://pkg.go.dev/time#Time](https://pkg.go.dev/time#Time)paket Go. Anda dapat mencetak waktu dalam sejumlah format berbeda. Misalnya, untuk mencetak waktu peringatan diaktifkan dalam format`Monday, 1st January 2022 at 10:00AM`, Anda menulis template berikut:

```
{{ .StartsAt.Format "Monday, 2 January 2006 at 3:04PM" }}
```

Anda dapat menemukan referensi untuk format waktu Go [di sini](https://pkg.go.dev/time#pkg-constants).

## Fungsi template
<a name="v9-alerting-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  | 