Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Template dan variabel
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
Untuk ruang kerja Grafana yang mendukung Grafana versi 9.x, lihat. Bekerja di Grafana versi 9
Variabel adalah placeholder untuk suatu nilai. Anda dapat menggunakan variabel dalam kueri metrik dan judul panel. Variabel memberi Anda kemampuan untuk membuat dasbor yang lebih interaktif dan dinamis. Alih-alih melakukan hardcoding hal-hal seperti server, aplikasi, dan nama sensor dalam kueri metrik Anda, Anda dapat menggunakan variabel sebagai gantinya.
Variabel ditampilkan sebagai daftar dropdown di bagian atas dasbor. Saat Anda mengubah nilai dengan menggunakan daftar tarik-turun di bagian atas dasbor, kueri metrik panel Anda mencerminkan nilai baru.
Ini dapat sangat berguna bagi administrator yang ingin memungkinkan pemirsa menyesuaikan visualisasi dengan cepat tetapi tidak ingin memberi mereka izin pengeditan penuh. Pemirsa Grafana dapat menggunakan variabel.
Dengan menggunakan variabel dan template, Anda dapat dasbor sumber tunggal. Jika Anda memiliki beberapa sumber data atau server yang identik, Anda dapat membuat satu dasbor dan menggunakan variabel untuk mengubah apa yang Anda lihat. Ini menyederhanakan pemeliharaan dan pemeliharaan.
Untuk daftar tipe variabel yang didukung, dan petunjuk untuk menambahkan setiap jenis variabel, lihat Jenis variabel
Template
Template adalah kueri yang berisi variabel.
Misalnya, jika Anda mengelola dasbor untuk memantau beberapa server, Anda dapat membuat dasbor untuk setiap server. Atau Anda bisa membuat satu dasbor dan menggunakan panel dengan kueri template, seperti yang ditunjukkan pada contoh berikut.
wmi_system_threads{instance=~"$server"}
Nilai variabel selalu disinkronkan ke URL dengan menggunakan sintaksvar-<varname>=value
.
Praktik terbaik variabel
Daftar dropdown variabel ditampilkan dalam urutan mereka tercantum dalam daftar variabel di pengaturan Dashboard.
Letakkan variabel yang akan sering Anda ubah di bagian atas, sehingga akan ditampilkan terlebih dahulu, di paling kiri di dasbor.
Sintaks variabel
Judul panel dan kueri metrik dapat melihat variabel dengan menggunakan dua sintaks yang berbeda:
-
$varname
Sintaks ini lebih mudah dibaca, seperti pada contoh berikut:apps.frontend.$server.requests.count
. Namun, Anda tidak dapat menggunakan variabel di tengah kata. -
${var_name}
Gunakan sintaks ini ketika Anda ingin menginterpolasi variabel di tengah ekspresi. -
${var_name:<format>}
Format ini memberi Anda kontrol lebih besar atas bagaimana Grafana menginterpolasi nilai. Untuk informasi selengkapnya, lihat Opsi format variabel lanjutan.
Sebelum kueri dikirim ke sumber data Anda, kueri diinterpolasi, artinya variabel diganti dengan nilai saat ini. Selama interpolasi, nilai variabel mungkin lolos agar sesuai dengan sintaks bahasa kueri dan di mana ia digunakan. Misalnya, variabel yang digunakan dalam ekspresi regex dalam kueri Prometheus akan di-regex escaped. Baca topik dokumentasi khusus sumber data untuk detail tentang pelarian nilai selama interpolasi.
Untuk informasi tentang sintaks lanjutan untuk mengganti format default sumber data, lihat. Opsi format variabel lanjutan
Opsi variabel lainnya
Bagian ini menjelaskan opsi variabel lain yang tersedia.
Memasukkan opsi pemilihan variabel
Anda dapat menggunakan Pilihan Pilihan untuk mengelola pilihan opsi variabel. Semua opsi pilihan adalah opsional, dan mereka mati secara default.
Multi-nilai
Jika Anda mengaktifkan opsi ini, daftar dropdown variabel mendukung pemilihan beberapa opsi secara bersamaan. Untuk informasi selengkapnya, lihat Memformat variabel multi-nilai.
Sertakan Semua opsi
Ruang kerja Grafana menambahkan All
opsi ke daftar dropdown variabel. Jika pengguna akhir memilih opsi ini, semua opsi variabel dipilih.
Kustom semua nilai
Opsi ini hanya terlihat jika opsi Sertakan Semua dipilih.
Untuk menentukan nilai All
opsi, masukkan sintaks regex, glob, atau Lucene di bidang Kustom semua nilai.
Secara default, All
nilai mencakup semua opsi dalam ekspresi gabungan. Ini bisa menjadi sangat panjang dan dapat memiliki masalah kinerja. Terkadang lebih baik untuk menentukan nilai semua kustom, seperti regex kartu liar.
Saat Anda menggunakan sintaks regex, glob, atau Lucene kustom di opsi Kustom semua nilai, itu tidak pernah lolos, jadi Anda harus mempertimbangkan nilai yang valid untuk sumber data Anda.
Opsi format variabel lanjutan
Pemformatan interpolasi variabel tergantung pada sumber data, tetapi ada beberapa situasi di mana Anda mungkin ingin mengubah format default.
Misalnya, default untuk sumber data MySQL adalah menggabungkan beberapa nilai sebagai dipisahkan koma dengan tanda kutip:. 'server01','server02'
Dalam beberapa kasus, Anda mungkin ingin memiliki string yang dipisahkan koma tanpa tanda kutip:. server01,server02
Untuk melakukan ini, gunakan opsi pemformatan variabel lanjutan berikut.
Sintaks umum
Sintaks: ${var_name:option}
Jika ada opsi pemformatan yang tidak valid ditentukan, glob
adalah opsi default, atau fallback,.
CSV
Memformat variabel dengan beberapa nilai sebagai string yang dipisahkan koma.
servers = ['test1', 'test2'] String to interpolate: '${servers:csv}' Interpolation result: 'test1,test2'
Didistribusikan - OpenTSDB
Memformat variabel dengan beberapa nilai dalam format khusus untuk OpenTSDB.
servers = ['test1', 'test2'] String to interpolate: '${servers:distributed}' Interpolation result: 'test1,servers=test2'
Kutipan ganda
Memformat variabel nilai tunggal dan multi-nilai ke dalam string yang dipisahkan koma, lolos "
di setiap nilai dengan\"
, dan mengutip setiap nilai dengan. "
servers = ['test1', 'test2'] String to interpolate: '${servers:doublequote}' Interpolation result: '"test1","test2"'
Glob - Grafit
Memformat variabel dengan beberapa nilai menjadi gumpalan (untuk kueri Grafit).
servers = ['test1', 'test2'] String to interpolate: '${servers:glob}' Interpolation result: '{test1,test2}'
JSON
Memformat variabel dengan beberapa nilai sebagai string yang dipisahkan koma.
servers = ['test1', 'test2'] String to interpolate: '${servers:json}' Interpolation result: '["test1", "test2"]'
Lucene - OpenSearch
Memformat variabel dengan beberapa nilai dalam format Lucene untuk. OpenSearch
servers = ['test1', 'test2'] String to interpolate: '${servers:lucene}' Interpolation result: '("test1" OR "test2")'
Kode Persentase
Memformat variabel nilai tunggal dan multi-nilai untuk digunakan dalam parameter URL.
servers = ['foo()bar BAZ', 'test2'] String to interpolate: '${servers:percentencode}' Interpolation result: 'foo%28%29bar%20BAZ%2Ctest2'
Pipa
Memformat variabel dengan beberapa nilai menjadi string yang dipisahkan pipa.
servers = ['test1.', 'test2'] String to interpolate: '${servers:pipe}' Interpolation result: 'test1.|test2'
Mentah
Mematikan format khusus sumber data, seperti tanda kutip tunggal dalam kueri SQL.
servers = ['test1.', 'test2'] String to interpolate: '${var_name:raw}' Interpolation result: '{test.1,test2}'
Regex
Memformat variabel dengan beberapa nilai menjadi string regex.
servers = ['test1.', 'test2'] String to interpolate: '${servers:regex}' Interpolation result: '(test1\.|test2)'
Singlequote
Memformat variabel nilai tunggal dan multi-menjadi string yang dipisahkan koma, lolos '
di setiap nilai dengan \'
dan mengutip setiap nilai dengan. '
servers = ['test1', 'test2'] String to interpolate: '${servers:singlequote}' Interpolation result: "'test1','test2'"
Sqlstring
Memformat variabel nilai tunggal dan multi-menjadi string yang dipisahkan koma, lolos '
di setiap nilai dengan ''
dan mengutip setiap nilai dengan. '
servers = ["test'1", "test2"] String to interpolate: '${servers:sqlstring}' Interpolation result: "'test''1','test2'"
Teks
Memformat variabel nilai tunggal dan multi-nilai ke dalam representasi teks mereka. Untuk satu variabel, itu hanya akan mengembalikan representasi teks. Untuk variabel multi-nilai, itu akan mengembalikan representasi teks yang digabungkan dengan+
.
servers = ["test1", "test2"] String to interpolate: '${servers:text}' Interpolation result: "test1 + test2"
Memformat variabel multi-nilai
Menginterpolasi variabel dengan beberapa nilai yang dipilih rumit karena tidak langsung bagaimana memformat beberapa nilai menjadi string yang valid dalam konteks tertentu di mana variabel digunakan. Grafana mencoba menyelesaikan ini dengan mengaktifkan setiap plugin sumber data untuk menginformasikan mesin interpolasi template format apa yang akan digunakan untuk beberapa nilai.
catatan
Opsi Kustom semua nilai pada variabel harus kosong agar Grafana memformat semua nilai menjadi satu string. Jika dibiarkan kosong, maka Grafana menggabungkan (menambahkan bersama) semua nilai dalam kueri. Sesuatu sepertivalue1,value2,value3
. Jika all
nilai kustom digunakan, maka sebaliknya nilai akan menjadi sesuatu seperti *
atauall
.
Variabel multi-nilai dengan sumber data Grafit
Grafit menggunakan ekspresi glob. Variabel dengan beberapa nilai akan, dalam hal ini, diinterpolasi {host1,host2,host3}
seolah-olah nilai variabel saat ini adalah host1, host2, dan host3.
Variabel multi-nilai dengan sumber data Prometheus atau InfluxDB
InfluxDB dan Prometheus menggunakan ekspresi regex, sehingga variabel yang sama akan diinterpolasi sebagai. (host1|host2|host3)
Setiap nilai juga akan lolos dari regex. Jika tidak, nilai dengan karakter kontrol regex akan merusak ekspresi regex.
Variabel multi-nilai dengan sumber data Elastis
Amazon OpenSearch menggunakan sintaks kueri Lucene, sehingga variabel yang sama akan diformat sebagai. ("host1" OR "host2" OR
"host3")
Dalam hal ini, setiap nilai harus diloloskan sehingga nilainya hanya berisi kata-kata kontrol Lucene dan tanda kutip.
Memecahkan masalah pemformatan
Pelarian dan pemformatan otomatis dapat menyebabkan masalah. Mungkin sulit untuk memahami logika di balik masalah, terutama untuk InfluxDB dan Prometheus, di mana penggunaan sintaks regex mengharuskan variabel tersebut digunakan dalam konteks operator regex.
Jika Anda tidak ingin Grafana melakukan pelolosan dan pemformatan regex otomatis ini, Anda harus melakukan salah satu hal berikut:
-
Matikan opsi Multi-nilai Sertakan Semua opsi.
-
Gunakan [format variabel mentah] ({{< relref "advanced-variable-format-options.md #raw" >}}).
Memfilter variabel dengan regex
Menggunakan opsi Regex Query, Anda dapat memfilter daftar opsi yang dikembalikan oleh kueri variabel atau memodifikasi opsi yang dikembalikan.
Bagian ini menunjukkan cara menggunakan regex untuk memfilter dan memodifikasi nilai dalam daftar dropdown variabel.
Menggunakan opsi Regex Query, Anda memfilter daftar opsi yang dikembalikan oleh kueri Variabel atau memodifikasi opsi yang dikembalikan. Untuk informasi selengkapnya, lihat Ekspresi reguler
Contoh penyaringan pada daftar opsi berikut:
backend_01 backend_02 backend_03 backend_04
Pemfilteran sehingga hanya opsi yang diakhiri dengan 01
atau 02
dikembalikan
Regex:
/.*[01|02]/
Hasil:
backend_01 backend_02
Memfilter dan memodifikasi opsi menggunakan grup tangkapan regex untuk mengembalikan bagian teks
Regex:
/.*(01|02)/
Hasil:
01 02
Memfilter dan memodifikasi - Contoh Prometheus
Daftar opsi:
up{instance="demo.robustperception.io:9090",job="prometheus"} 1 1521630638000 up{instance="demo.robustperception.io:9093",job="alertmanager"} 1 1521630638000 up{instance="demo.robustperception.io:9100",job="node"} 1 1521630638000
Regex:
/.*instance="([^"]*).*/
Hasil:
demo.robustperception.io:9090 demo.robustperception.io:9093 demo.robustperception.io:9100
Memfilter dan memodifikasi menggunakan teks bernama dan grup penangkap nilai
Menggunakan grup tangkapan bernama, Anda dapat menangkap bagian “teks” dan “nilai” terpisah dari opsi yang dikembalikan oleh kueri variabel. Daftar dropdown variabel dapat berisi nama ramah untuk setiap nilai yang dapat dipilih.
Misalnya, saat menanyakan metrik node_hwmon_chip_names
Prometheus, metrik lebih ramah daripada nilainya. chip_name
chip
Mulailah dengan hasil query variabel berikut.
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_0",chip_name="enp216s0f0np0"} 1 node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_1",chip_name="enp216s0f0np1"} 1 node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_2",chip_name="enp216s0f0np2"} 1 node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_3",chip_name="enp216s0f0np3"} 1
Lewati melalui Regex berikut.
/chip_name="(?<text>[^"]+)|chip="(?<value>[^"]+)/g
Daftar dropdown berikut diproduksi.
Display Name Value ------------ ------------------------- enp216s0f0np0 0000:d7:00_0_0000:d8:00_0 enp216s0f0np1 0000:d7:00_0_0000:d8:00_1 enp216s0f0np2 0000:d7:00_0_0000:d8:00_2 enp216s0f0np3 0000:d7:00_0_0000:d8:00_3
Catatan: Hanya text
dan value
menangkap nama grup yang didukung.
Panel atau baris berulang
Anda dapat membuat dasbor dinamis menggunakan variabel template. Semua variabel dalam kueri Anda diperluas ke nilai variabel saat ini sebelum kueri dikirim ke database. Dengan variabel, Anda dapat menggunakan kembali satu dasbor untuk semua layanan Anda.
Variabel template bisa sangat berguna untuk mengubah kueri Anda secara dinamis di seluruh dasbor. Jika Anda ingin Grafana membuat panel atau baris baru secara dinamis berdasarkan nilai yang telah Anda pilih, Anda dapat menggunakan fitur Ulangi.
Panel berulang
Jika Anda memiliki variabel dengan Multi-value
atau Include all
value
opsi diaktifkan, Anda dapat memilih satu panel dan meminta Grafana mengulangi panel itu untuk setiap nilai yang dipilih. Anda dapat menemukan fitur Ulangi di bawah tab Umum dalam mode edit panel.
direction
Kontrol bagaimana panel diatur.
Jika Anda memilihhorizontal
, panel diatur side-by-side. Grafana secara otomatis menyesuaikan lebar setiap panel berulang sehingga seluruh baris terisi. Saat ini, Anda tidak dapat mencampur panel lain secara berurutan dengan panel berulang.
Atur Max per row
untuk memberi tahu Grafana berapa banyak panel per baris yang paling Anda inginkan. Defaultnya ke 4.
Jika Anda memilihvertical
, panel disusun dari atas ke bawah dalam kolom. Lebar panel berulang sama dengan panel pertama (template asli) yang diulang.
Buat perubahan hanya pada panel pertama (template asli). Agar perubahan diterapkan pada semua panel, Anda harus memulai pembuatan ulang dasbor dinamis. Anda dapat melakukan ini dengan mengubah nilai variabel (yaitu, dasar untuk pengulangan) atau memuat ulang dasbor.
catatan
Panel berulang membutuhkan variabel untuk memiliki satu atau lebih item yang dipilih. Anda tidak dapat mengulang panel nol kali untuk menyembunyikannya.
Baris berulang
Seperti yang terlihat di atas dengan panel Anda juga dapat mengulangi baris jika Anda memiliki variabel yang ditetapkan dengan Multi-value
atau Include all value
pilihan pilihan.
Untuk mengaktifkan fitur ini, Anda harus terlebih dahulu menambahkan Baris baru dengan menggunakan menu Add Panel. Kemudian jeda pada judul baris dan pilih tombol roda gigi untuk mengakses panel Row Options
konfigurasi. Anda kemudian dapat memilih variabel yang ingin Anda ulangi barisnya.
Praktik terbaik adalah menggunakan variabel dalam judul baris juga.