Tulis kueri ekspresi - Amazon Managed Grafana

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

Tulis kueri ekspresi

Topik dokumentasi ini dirancang untuk ruang kerja Grafana yang mendukung Grafana versi 10.x.

Untuk ruang kerja Grafana yang mendukung Grafana versi 9.x, lihat. Bekerja di Grafana versi 9

Untuk ruang kerja Grafana yang mendukung Grafana versi 8.x, lihat. Bekerja di Grafana versi 8

Ekspresi sisi server memungkinkan Anda memanipulasi data yang dikembalikan dari kueri dengan matematika dan operasi lainnya. Ekspresi membuat data baru dan tidak memanipulasi data yang dikembalikan oleh sumber data.

Tentang ekspresi

Ekspresi sisi server memungkinkan Anda memanipulasi data yang dikembalikan dari kueri dengan matematika dan operasi lainnya. Ekspresi membuat data baru dan tidak memanipulasi data yang dikembalikan oleh sumber data, selain dari beberapa restrukturisasi data kecil untuk membuat input data yang dapat diterima untuk ekspresi.

Menggunakan ekspresi

Ekspresi paling sering digunakan oleh peringatan Grafana. Pemrosesan dilakukan sisi server, sehingga ekspresi dapat beroperasi tanpa sesi browser. Namun, ekspresi juga dapat digunakan dengan sumber data backend dan visualisasi.

catatan

Ekspresi tidak berfungsi dengan peringatan dasbor lama.

Ekspresi dimaksudkan untuk menambah sumber data dengan memungkinkan kueri dari sumber data yang berbeda untuk digabungkan atau dengan menyediakan operasi yang tidak tersedia di sumber data.

catatan

Jika memungkinkan, Anda harus melakukan pemrosesan data di dalam sumber data. Menyalin data dari penyimpanan ke server Grafana untuk diproses tidak efisien, sehingga ekspresi ditargetkan pada pemrosesan data ringan.

Ekspresi bekerja dengan kueri sumber data yang mengembalikan deret waktu atau data numerik. Mereka juga beroperasi pada data multi-dimensi. Misalnya, kueri yang mengembalikan beberapa seri, di mana setiap seri diidentifikasi oleh label atau tag.

Ekspresi individu mengambil satu atau lebih kueri atau ekspresi lain sebagai input dan menambahkan data ke hasilnya. Setiap ekspresi atau kueri individu diwakili oleh variabel yang merupakan pengidentifikasi bernama yang dikenal sebagai ReFID-nya (misalnya, huruf A default atau). B

Untuk mereferensikan output dari ekspresi individu atau kueri sumber data dalam ekspresi lain, pengidentifikasi ini digunakan sebagai variabel.

Jenis ekspresi

Ekspresi bekerja dengan dua jenis data.

  • Koleksi deret waktu.

  • Kumpulan angka, di mana setiap nomor adalah item.

Setiap koleksi dikembalikan dari kueri atau ekspresi sumber data tunggal dan diwakili oleh ReFID. Setiap koleksi adalah satu set, di mana setiap item dalam set diidentifikasi secara unik oleh dimensinya yang disimpan sebagai label atau pasangan nilai kunci.

Kueri sumber data

Ekspresi sisi server hanya mendukung kueri sumber data untuk sumber data backend. Data umumnya diasumsikan diberi label data deret waktu.

Kueri sumber data, bila digunakan dengan ekspresi, dijalankan oleh mesin ekspresi. Ketika melakukan ini, ia merestrukturisasi data menjadi satu deret waktu atau satu angka per frame data. Jadi misalnya jika menggunakan sumber data yang mengembalikan beberapa seri pada satu bingkai dalam tampilan tabel, Anda mungkin melihat itu terlihat berbeda saat dijalankan dengan ekspresi.

Saat ini, satu-satunya format seri non-waktu (angka) yang didukung saat menggunakan bingkai data adalah Anda memiliki respons tabel yang mengembalikan bingkai data tanpa waktu, kolom string, dan satu kolom angka:

Contoh tabel berikut menghasilkan angka yang bekerja dengan ekspresi. Kolom string menjadi label dan kolom nomor nilai yang sesuai. Misalnya {"Loc": "MIA", "Host": "A"} dengan nilai 1.

Loc Host AVG_CPU

MIA

A

1

NYC

B

2

Operasi

Anda dapat menggunakan operasi berikut dalam ekspresi: matematika, kurangi, dan sampel ulang.

Matematika

Matematika adalah untuk rumus matematika bentuk bebas pada deret waktu atau data angka. Operasi matematika mengambil angka dan deret waktu sebagai masukan dan mengubahnya menjadi angka dan deret waktu yang berbeda.

Data dari kueri atau ekspresi lain direferensikan dengan awalan ReFID dengan tanda dolar, misalnya. $A Jika variabel memiliki spasi dalam nama, maka Anda dapat menggunakan sintaks kurung kurung seperti. ${my variable}

Konstanta numerik bisa dalam desimal (2.24), oktal (dengan nol terkemuka seperti072), atau hex (dengan seperti 0x terkemuka). 0x2A Eksponensial dan tanda juga didukung (misalnya,). -0.8e-2

Operator

Operator aritmatika (+, biner dan unary-,,*,/,%, eksponen**), relasional (,<,,,>,<=) ==!=, >= dan logis (,, dan unary) && didukung||. !

Bagaimana operasi berperilaku dengan data tergantung pada apakah itu adalah data angka atau deret waktu.

Dengan operasi biner$A || $B, seperti $A + $B atau, operator diterapkan dengan cara berikut tergantung pada jenis data:

  • Jika keduanya $A dan $B merupakan angka, maka operasi dilakukan antara dua angka.

  • Jika satu variabel adalah angka, dan variabel lainnya adalah deret waktu, maka operasi antara nilai setiap titik dalam deret waktu dan angka dilakukan.

  • Jika keduanya $A dan $B merupakan data deret waktu, maka operasi antara setiap nilai dalam dua seri dilakukan untuk setiap cap waktu yang ada di keduanya $A dan$B. ResampleOperasi ini dapat digunakan untuk menyusun stempel waktu.

Ringkasan:

  • Nomor <Operation>nomor = angka

  • Nomor <Operation>seri = seri

  • Seri <Operation>seri = seri

Karena ekspresi bekerja dengan beberapa seri atau angka yang diwakili oleh satu variabel, operasi biner juga melakukan penyatuan (gabungan) antara dua variabel. Ini dilakukan berdasarkan label pengenal yang terkait dengan setiap seri atau nomor individu.

Jadi jika Anda memiliki angka dengan label seperti {host=web01} in $A dan nomor lain $B dengan label yang sama maka operasi dilakukan antara dua item dalam setiap variabel, dan hasilnya akan berbagi label yang sama. Aturan untuk perilaku serikat ini adalah sebagai berikut:

  • Item tanpa label akan bergabung dengan apa pun.

  • Jika keduanya $A dan $B masing-masing hanya berisi satu item (satu seri, atau satu nomor), mereka akan bergabung.

  • Jika label sama persis, mereka akan bergabung.

  • Jika label adalah bagian dari yang lain, misalnya item di $A diberi label {host=A,dc=MIA} dan item di $B diberi label, {host=A} mereka akan bergabung.

  • Jika dalam variabel seperti $A ada kunci tag yang berbeda untuk setiap item, perilaku bergabung tidak terdefinisi.

Operator relasional dan logis mengembalikan 0 untuk false 1 untuk true.

Fungsi Matematika

Sementara sebagian besar fungsi ada dalam operasi ekspresi sendiri, operasi matematika memang memiliki beberapa fungsi yang mirip dengan operator matematika atau simbol. Ketika fungsi dapat mengambil angka atau seri, dari jenis yang sama dengan argumen akan dikembalikan. Ketika itu adalah seri, operasi dilakukan untuk nilai setiap titik dalam seri.

perut

abs mengembalikan nilai absolut dari argumennya yang dapat berupa angka atau seri. Misalnya, abs(-1) atau abs($A).

is_inf

is_inf mengambil angka atau seri dan mengembalikan 1 Inf nilai (negatif atau positif) dan 0 untuk nilai lainnya. Sebagai contoh, is_inf($A).

catatan

Jika Anda perlu secara khusus memeriksa ketidakterbatasan negatif misalnya, Anda dapat melakukan perbandingan seperti$A == infn().

is_nan

is_nan mengambil angka atau seri dan mengembalikan 1 NaN nilai dan 0 nilai lainnya. Sebagai contoh, is_nan($A). Fungsi ini diperlukan untuk pemeriksaan ini karena NaN tidak sama denganNaN.

adalah_null

is_null mengambil angka atau seri dan mengembalikan 1 null nilai dan nilai lainnya0. Sebagai contoh, is_null($A).

is_number

is_number mengambil angka atau seri dan mengembalikan 1 untuk semua nilai bilangan real dan 0 untuk nilai lainnya (yaitunull,, Inf+Inf-, danNaN). Sebagai contoh, is_number($A).

log

Log mengembalikan logaritma natural dari argumennya yang dapat berupa angka atau seri. Jika nilainya kurang dari 0, NaN dikembalikan. Misalnya, log(-1) atau log($A).

inf, infn, nan, dan null

Fungsi inf, infn, nan, dan null semuanya mengembalikan satu nilai nama. Mereka terutama ada untuk pengujian. Contoh:null().

bulat

Round mengembalikan nilai integer bulat. Misalnya, round(3.123) atau round($A).

ceil

Ceil membulatkan angka ke nilai integer terdekat. Misalnya, ceil(3.123) mengembalikan 4.

lantai

Lantai membulatkan angka ke bawah ke nilai integer terdekat. Misalnya,floor(3.123) kembali3.

Mengurangi

Reduce mengambil satu atau lebih deret waktu yang dikembalikan dari kueri atau ekspresi dan mengubah setiap seri menjadi satu nomor. Label deret waktu disimpan sebagai label pada setiap angka yang dikurangi yang dikeluarkan.

Bidang:

  • Fungsi — Fungsi reduksi yang digunakan

  • Input - Variabel (ReFID (sepertiA)) untuk sampel ulang

  • Mode - Memungkinkan perilaku kontrol fungsi reduksi ketika seri berisi nilai non-numerik (null, NaN, +-Inf)

Fungsi Reduksi

Hitungan

Hitung mengembalikan jumlah poin di setiap seri.

Berarti

Mean mengembalikan total semua nilai dalam setiap seri dibagi dengan jumlah poin dalam seri itu. Dalam strict mode jika ada nilai dalam seri nol atau nan, atau jika seri kosong, NaN dikembalikan.

Min dan Max

Min dan Max mengembalikan nilai terkecil atau terbesar dalam seri masing-masing. Dalam strict mode jika ada nilai dalam seri nol atau nan, atau jika seri kosong, NaN dikembalikan.

Jumlah

Jumlah mengembalikan total semua nilai dalam seri. Jika seri memiliki panjang nol, jumlahnya akan menjadi 0. Dalam strict mode jika ada nilai NaN atau Null dalam seri, NaN dikembalikan.

Terakhir

Terakhir mengembalikan nomor terakhir dalam seri. Jika seri tidak memiliki nilai maka kembali NaN.

Mode Pengurangan

Ketat

Dalam mode Ketat, seri input diproses apa adanya. Jika ada nilai dalam seri non-numerik (null, NaN atau +-Inf), NaN dikembalikan.

Jatuhkan Non-Numerik

Dalam mode ini semua nilai non-numerik (null, NaN atau +-Inf) dalam seri input disaring sebelum menjalankan fungsi reduksi.

Ganti Non-Numerik

Dalam mode ini semua nilai non-numerik diganti dengan nilai yang telah ditentukan sebelumnya.

Sampel ulang

Sampel ulang mengubah stempel waktu di setiap deret waktu agar memiliki interval waktu yang konsisten. Kasus penggunaan utama adalah agar Anda dapat mengambil sampel ulang deret waktu yang tidak berbagi stempel waktu yang sama sehingga matematika dapat dilakukan di antara mereka. Ini dapat dilakukan dengan mengambil sampel ulang masing-masing dari dua seri, dan kemudian dalam operasi Matematika yang merujuk variabel sampel ulang.

Bidang:

  • Input - Variabel data deret waktu (ReFID (sepertiA)) untuk sampel ulang

  • Sampel ulang ke — Durasi waktu untuk melakukan resample ke, misalnya. 10s Unit bisa s untuk detik, m menit, h berjam-jam, d berhari-hari, w berminggu-minggu, dan y bertahun-tahun.

  • Downsample - Fungsi reduksi untuk digunakan ketika ada lebih dari satu titik data per sampel jendela. Lihat operasi reduksi untuk detail perilaku.

  • Upsample — Metode yang digunakan untuk mengisi sampel jendela yang tidak memiliki titik data.

    • pad diisi dengan nilai knowm terakhir

    • isi ulang dengan nilai yang diketahui berikutnya

    • fillna untuk mengisi jendela sampel kosong dengan NaNs

Tulis ekspresi

Jika sumber data Anda mendukungnya, Grafana menampilkan tombol Ekspresi dan menampilkan ekspresi yang ada dalam daftar editor kueri.

Untuk menulis ekspresi
  1. Buka panelnya.

  2. Di bawah kueri, pilih Ekspresi.

  3. Di bidang Operasi, pilih jenis ekspresi yang ingin Anda tulis.

  4. Tulis ekspresinya.

  5. Pilih Terapkan.

Kasus khusus

Ketika sumber data yang ditanyakan tidak mengembalikan seri atau angka, mesin ekspresi kembaliNoData. Misalnya, jika permintaan berisi dua kueri sumber data yang digabungkan dengan ekspresi, jika NoData dikembalikan oleh setidaknya salah satu kueri sumber data, maka hasil yang dikembalikan untuk seluruh kueri adalah. NoData Untuk informasi selengkapnya tentang cara Grafana Alerting memproses NoData hasil, lihat. Konfigurasikan aturan peringatan terkelola Grafana

Dalam kasus menggunakan ekspresi pada beberapa kueri, mesin ekspresi mengharuskan semua kueri mengembalikan stempel waktu yang identik. Misalnya, jika menggunakan matematika untuk menggabungkan hasil beberapa kueri SQL yang digunakan masing-masingSELECT NOW() AS "time", ekspresi hanya akan berfungsi jika semua kueri mengevaluasi NOW() ke stempel waktu yang identik, yang tidak selalu terjadi. Untuk mengatasi hal ini, Anda dapat mengganti NOW() dengan waktu sewenang-wenang, sepertiSELECT 1 AS "time", atau stempel waktu UNIX valid lainnya.