Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Templating label dan anotasi
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
Untuk ruang kerja Grafana yang mendukung Grafana versi 8.x, lihat. Bekerja di Grafana versi 8
Di Grafana, Anda membuat template label dan anotasi seperti yang Anda lakukan di Prometheus. Jika Anda telah menggunakan Prometheus sebelumnya maka Anda harus terbiasa dengan $labels
variabel $value
dan, yang berisi label dan nilai peringatan. Anda dapat menggunakan variabel yang sama di Grafana, bahkan jika peringatan tidak menggunakan sumber data Prometheus. Jika Anda belum pernah menggunakan Prometheus sebelumnya maka jangan khawatir karena masing-masing variabel ini, dan cara membuat template mereka, akan dijelaskan saat Anda mengikuti sisa halaman ini.
Bahasa Templating Go
Template untuk label dan anotasi ditulis dalam bahasa template Go, teks/template.
Membuka dan menutup tag
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
Untuk mencetak nilai sesuatu gunakan {{
dan}}
. Anda dapat mencetak hasil fungsi atau nilai variabel. Misalnya, untuk mencetak $labels
variabel Anda akan menulis yang berikut:
{{ $labels }}
Iterasi di atas label
Untuk mengulangi setiap label di $labels
Anda dapat menggunakan. range
Di sini $k
mengacu pada nama dan $v
mengacu pada nilai label saat ini. Misalnya, jika kueri Anda mengembalikan label instance=test
maka $k
akan instance
dan $v
akan menjaditest
.
{{ range $k, $v := $labels }} {{ $k }}={{ $v }} {{ end }}
Label, nilai dan nilai variabel
Variabel label
$labels
Variabel berisi label dari kueri. Misalnya, kueri yang memeriksa apakah instance sedang down mungkin mengembalikan label instance dengan nama instance yang sedang down. Misalnya, Anda memiliki aturan peringatan yang menyala ketika salah satu instance Anda telah mati selama lebih dari 5 menit. Anda ingin menambahkan ringkasan ke peringatan yang memberi tahu Anda instance mana yang sedang down. Dengan $labels
variabel, Anda dapat membuat ringkasan yang mencetak label instance dalam ringkasan:
Instance {{ $labels.instance }} has been down for more than 5 minutes
Label dengan titik-titik
Jika label yang ingin Anda cetak berisi titik (penghentian penuh atau titik) dalam namanya menggunakan titik yang sama di templat tidak akan berfungsi:
Instance {{ $labels.instance.name }} has been down for more than 5 minutes
Ini karena template mencoba menggunakan bidang yang tidak ada yang dipanggilname
. $labels.instance
Anda sebaiknya menggunakan index
fungsi, yang mencetak label instance.name
dalam $labels
variabel:
Instance {{ index $labels "instance.name" }} has been down for more than 5 minutes
Variabel nilai
$value
Variabel bekerja berbeda dari Prometheus. Dalam $value
Prometheus adalah nomor floating point yang berisi nilai ekspresi, tetapi di Grafana itu adalah string yang berisi label dan nilai dari semua ekspresi Ambang, Kurangi dan Matematika, dan Kondisi Klasik untuk aturan peringatan ini. Ini tidak berisi hasil kueri, karena ini dapat kembali dari 10 hingga 10.000 baris atau metrik.
Jika Anda menggunakan $value
variabel dalam ringkasan peringatan:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $value }})
Ringkasannya mungkin terlihat seperti berikut:
api has an over 5% of responses with 5xx errors: [ var='B' labels={service=api} value=6.789 ]
Di sini var='B'
mengacu pada ekspresi dengan RefiD B. Di Grafana, semua kueri dan ekspresi diidentifikasi oleh ReFID yang mengidentifikasi setiap kueri dan ekspresi dalam aturan peringatan. Demikian pula labels={service=api}
mengacu pada label, dan value=6.789
mengacu pada nilai.
Anda mungkin telah mengamati bahwa tidak ada ReFID A. Itu karena di sebagian besar aturan peringatan ReFID A mengacu pada kueri, dan karena kueri dapat mengembalikan banyak baris atau deret waktu mereka tidak termasuk dalam. $value
Variabel nilai
Jika $value
variabel berisi lebih banyak informasi daripada yang Anda butuhkan, Anda dapat mencetak label dan nilai ekspresi individu menggunakan$values
. Tidak seperti$value
, $values
variabel adalah tabel objek yang berisi label dan nilai floating point dari setiap ekspresi, diindeks oleh ReFID mereka.
Jika Anda mencetak nilai ekspresi dengan ReFID B
dalam ringkasan peringatan:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $values.B }}%
Ringkasan hanya akan berisi nilai:
api has an over 5% of responses with 5xx errors: 6.789%
Namun, saat {{ $values.B }}
mencetak angka 6.789, itu sebenarnya adalah string karena Anda mencetak objek yang berisi label dan nilai untuk RefiD B, bukan nilai floating point B. Untuk menggunakan nilai floating point dari RefiD B Anda harus menggunakan bidang dari. Value
$values.B
Jika Anda memanusiakan nilai floating point dalam ringkasan peringatan:
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanize $values.B.Value }}%
Tidak ada data, kesalahan runtime, dan batas waktu
Jika kueri dalam aturan peringatan Anda tidak mengembalikan data, atau gagal karena kesalahan sumber data atau batas waktu, maka ekspresi Threshold, Reduce atau Math apa pun yang menggunakan kueri itu juga tidak akan mengembalikan data atau kesalahan. Ketika ini terjadi ungkapan ini akan absen dari$values
. Merupakan praktik yang baik untuk memeriksa apakah ReFID ada sebelum menggunakannya karena jika tidak, template Anda akan rusak jika kueri Anda tidak mengembalikan data atau kesalahan. Anda dapat melakukan ini menggunakan pernyataan if:
{{ if $values.B }}{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanizePercentage $values.B.Value }}{{ end }}
Kondisi Klasik
Jika aturan menggunakan Classic Conditions bukan Threshold, Reduce dan Math ekspresi, maka $values
variabel diindeks oleh kedua ID Ref dan posisi kondisi dalam Kondisi Klasik. Misalnya, jika Anda memiliki Kondisi Klasik dengan ReFID B yang berisi dua kondisi, maka $values
akan berisi dua kondisi B0
dan. B1
The first condition is {{ $values.B0 }}, and the second condition is {{ $values.B1 }}
Fungsi
Fungsi-fungsi berikut juga tersedia saat memperluas label dan anotasi:
args
args
Fungsi menerjemahkan daftar objek ke peta dengan kunci arg0, arg1 dll Ini dimaksudkan untuk memungkinkan beberapa argumen diteruskan ke template.
Contoh
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
1 2
URL eksternal
externalURL
Fungsi mengembalikan URL eksternal dari server Grafana seperti yang dikonfigurasi dalam file ini (s).
Contoh
{{ externalURL }}
https://example.com/grafana
GraphLink
graphLink
Fungsi mengembalikan path ke tampilan grafis Jelajahi di Grafana versi 9 untuk ekspresi yang diberikan dan sumber data.
Contoh
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]
memanusiakan
humanize
Fungsi memanusiakan angka desimal.
Contoh
{{ humanize 1000.0 }}
1k
manusia1024
humanize1024
Karya-karya yang mirip dengan humanize
tetapi menggunakan 1024 sebagai basis daripada 1000.
Contoh
{{ humanize1024 1024.0 }}
1ki
HumanizeUrasi
humanizeDuration
Fungsi memanusiakan durasi dalam hitungan detik.
Contoh
{{ humanizeDuration 60.0 }}
1m 0s
HumanizePersentase
humanizePercentage
Fungsi memanusiakan nilai rasio terhadap persentase.
Contoh
{{ humanizePercentage 0.2 }}
20%
HumanizeTimestamp
humanizeTimestamp
Fungsi ini memanusiakan stempel waktu Unix.
Contoh
{{ humanizeTimestamp 1577836800.0 }}
2020-01-01 00:00:00 +0000 UTC
pertandingan
match
Fungsi ini cocok dengan teks terhadap pola ekspresi reguler.
Contoh
{{ match "a.*" "abc" }}
true
PathPrefix
pathPrefix
Fungsi mengembalikan path dari server Grafana seperti yang dikonfigurasi dalam file ini (s).
Contoh
{{ pathPrefix }}
/grafana
TableLink
tableLink
Fungsi mengembalikan path ke tampilan tabular Jelajahi di Grafana versi 9 untuk ekspresi yang diberikan dan sumber data.
Contoh
{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]
judul
title
Fungsi ini mengkapitalisasi karakter pertama dari setiap kata.
Contoh
{{ title "hello, world!" }}
Hello, World!
ToLower
toLower
Fungsi mengembalikan semua teks dalam huruf kecil.
Contoh
{{ toLower "Hello, world!" }}
hello, world!
TouPper
toUpper
Fungsi mengembalikan semua teks dalam huruf besar.
Contoh
{{ toUpper "Hello, world!" }}
HELLO, WORLD!
reReplaceAll
reReplaceAll
Fungsi menggantikan teks yang cocok dengan ekspresi reguler.
Contoh
{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
example.com:8080