Template dan variabel - Amazon Managed Grafana

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 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:

  • $varnameSintaks 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 pemformatan 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 teksnya. 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.

directionKontrol 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.