Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Connect ke sumber data MySQL
Tambahkan sumber data MySQL untuk dapat menanyakan dan memvisualisasikan data dari database yang kompatibel dengan MySQL.
penting
Grafana versi 8.0 mengubah struktur data yang mendasari untuk frame data untuk sumber data MySQL, Postgres, dan Microsoft SQL Server. Akibatnya, hasil kueri deret waktu dikembalikan dalam format lebar. Untuk informasi selengkapnya, lihat Format lebar
Untuk membuat visualisasi Anda berfungsi seperti sebelumnya, Anda mungkin harus melakukan beberapa migrasi manual. Salah satu solusi didokumentasikan di Github di Postgres/MySQL/MSSQL: Memecahkan perubahan di v8.0 terkait dengan kueri deret waktu dan urutan kolom
Menambahkan sumber data
-
Buka menu samping dengan memilih ikon Grafana di header atas.
-
Di menu samping di bawah tautan Dasbor, Anda harus menemukan tautan bernama Sumber Data.
-
Pilih tombol + Tambahkan sumber data di header atas.
-
Pilih MySQL dari daftar dropdown Type.
Opsi sumber data
Nama | Penjelasan |
---|---|
Name
|
Nama sumber data. Ini adalah bagaimana Anda melihat sumber data di panel dan kueri. |
Default
|
Sumber data default berarti bahwa itu akan dipilih sebelumnya untuk panel baru. |
Host
|
Alamat IP/nama host dan port opsional dari instance MySQL Anda. |
Database
|
Nama database MySQL Anda. |
User
|
Database pengguna login/nama pengguna. |
Password
|
Kata sandi pengguna basis data. |
Max open
|
Jumlah maksimum koneksi terbuka ke database, default unlimited (Grafana v5.4+). |
Max idle
|
Jumlah maksimum koneksi di kolam koneksi idle, default 2 (Grafana v5.4+). |
Max lifetime
|
Jumlah maksimum waktu dalam hitungan detik koneksi dapat digunakan kembali, default 14400 /4 jam. Ini harus selalu lebih rendah dari wait_timeout |
Interval waktu min
Batas bawah untuk $_interval
$_interval_ms
variabel. Disarankan untuk diatur untuk menulis frekuensi, misalnya 1m
jika data Anda ditulis setiap menit. Opsi ini juga dapat diganti/dikonfigurasi di panel dasbor di bawah opsi sumber data. Nilai ini harus diformat sebagai angka diikuti oleh pengenal waktu yang valid; misalnya, 1m
(1 menit) atau 30s
(30 detik). Pengidentifikasi waktu berikut didukung.
Pengidentifikasi | Deskripsi |
---|---|
y
|
Tahun |
M
|
Bulan |
w
|
Minggu |
d
|
Hari |
h
|
Jam |
m
|
Menit |
s
|
Detik |
ms
|
Milidetik |
Izin pengguna basis data
penting
Pengguna database yang Anda tentukan saat Anda menambahkan sumber data harus diberikan hanya izin SELECT pada database dan tabel tertentu yang ingin Anda kueri. Grafana tidak memvalidasi bahwa kueri aman. Kueri dapat mencakup pernyataan SQL apa pun. Misalnya, pernyataan seperti USE otherdb;
dan DROP TABLE
user;
akan dijalankan. Untuk melindungi dari hal ini, kami sangat menyarankan Anda membuat pengguna MySQL tertentu dengan izin terbatas.
Contoh kode berikut menunjukkan membuat pengguna MySQL tertentu dengan izin terbatas.
CREATE USER 'grafanaReader' IDENTIFIED BY 'password'; GRANT SELECT ON mydatabase.mytable TO 'grafanaReader';
Untuk memberikan akses ke lebih banyak database dan tabel, Anda dapat menggunakan karakter wildcard (*
) sebagai pengganti database atau tabel jika Anda mau.
Editor kueri
Anda menemukan editor kueri MySQL di tab metrik dalam mode edit panel. Anda masuk ke mode edit dengan memilih judul panel, lalu Edit.
Editor kueri memiliki tautan SQL yang Dihasilkan yang muncul setelah kueri dijalankan, saat dalam mode edit panel. Pilih itu, dan itu akan memperluas dan menampilkan string SQL interpolasi mentah yang dijalankan.
Pilih tabel, kolom waktu, dan kolom metrik (DARI)
Saat Anda memasuki mode edit untuk pertama kalinya atau menambahkan kueri baru, Grafana akan mencoba mengisi ulang pembuat kueri dengan tabel pertama yang memiliki kolom stempel waktu dan kolom numerik.
Di bidang FROM, Grafana akan menyarankan tabel yang ada di database yang dikonfigurasi. Untuk memilih tabel atau tampilan di database lain yang dapat diakses oleh pengguna database Anda, Anda dapat memasukkan nama yang memenuhi syarat secara manual (database.table) seperti. otherDb.metrics
Kolom kolom Waktu mengacu pada nama kolom yang memegang nilai waktu Anda. Memilih nilai untuk bidang kolom Metrik adalah opsional. Jika nilai dipilih, bidang kolom Metrik akan digunakan sebagai nama seri.
Saran kolom metrik hanya akan berisi kolom dengan tipe data teks (teks, tinytext, mediumtext, longtext, varchar, char). Jika Anda ingin menggunakan kolom dengan tipe data yang berbeda sebagai kolom metrik, Anda dapat memasukkan nama kolom dengan pemeran:CAST(numericColumn as CHAR)
. Anda juga dapat memasukkan ekspresi SQL arbitrer di bidang kolom metrik yang mengevaluasi tipe data teks seperti. CONCAT(column1, " ",
CAST(numericColumn as CHAR))
Kolom dan fungsi agregasi (SELECT)
Di SELECT
baris, Anda dapat menentukan kolom dan fungsi apa yang ingin Anda gunakan. Di kolom kolom, Anda dapat menulis ekspresi arbitrer alih-alih nama kolom seperticolumn1 * column2 /
column3
.
Jika Anda menggunakan fungsi agregat, Anda harus mengelompokkan set hasil Anda. Editor akan secara otomatis menambahkan GROUP BY time
jika Anda menambahkan fungsi agregat.
Anda dapat menambahkan kolom nilai lebih lanjut dengan memilih tombol plus dan memilih Column
dari menu. Beberapa kolom nilai akan diplot sebagai seri terpisah di panel grafik.
Data penyaringan (WHERE)
Untuk menambahkan filter, pilih ikon plus di sebelah kanan WHERE
kondisi. Anda dapat menghapus filter dengan memilih pada filter dan memilihRemove
. Filter untuk rentang waktu yang dipilih saat ini secara otomatis ditambahkan ke kueri baru.
Kelompokkan Oleh
Untuk mengelompokkan berdasarkan waktu atau kolom lainnya, pilih ikon plus di akhir baris GROUP BY. Daftar tarik-turun saran hanya akan menampilkan kolom teks dari tabel yang Anda pilih saat ini tetapi Anda dapat memasukkan kolom apa pun secara manual. Anda dapat menghapus grup dengan memilih item dan kemudian memilihRemove
.
Jika Anda menambahkan pengelompokan apa pun, semua kolom yang dipilih harus memiliki fungsi agregat yang diterapkan. Pembuat kueri akan secara otomatis menambahkan fungsi agregat ke semua kolom tanpa fungsi agregat saat Anda menambahkan pengelompokan.
Pengisian celah
Grafana dapat mengisi nilai yang hilang saat Anda mengelompokkan berdasarkan waktu. Fungsi waktu menerima dua argumen. Argumen pertama adalah jendela waktu yang ingin Anda kelompokkan, dan argumen kedua adalah nilai yang Anda inginkan Grafana untuk mengisi item yang hilang.
Mode editor teks (mentah)
Anda dapat beralih ke mode editor kueri mentah dengan memilih ikon hamburger dan memilih mode Switch editor atau dengan memilih Edit SQL di bawah kueri.
catatan
Jika Anda menggunakan editor kueri mentah, pastikan kueri Anda setidaknya memiliki ORDER BY time
dan filter pada rentang waktu yang dikembalikan.
Makro
Untuk menyederhanakan sintaks dan memungkinkan bagian dinamis, seperti filter rentang tanggal, kueri dapat berisi makro.
Contoh makro | Deskripsi |
---|---|
$__time(dateColumn)
|
Akan diganti dengan ekspresi untuk dikonversi ke stempel waktu UNIX dan mengganti nama kolom menjaditime_sec ; misalnya, UNIX_TIMESTAMP (DateColumn) sebagai time_sec. |
$__timeEpoch(dateColumn)
|
Akan diganti dengan ekspresi untuk dikonversi ke stempel waktu UNIX dan mengganti nama kolom menjaditime_sec ; misalnya, UNIX_TIMESTAMP (DateColumn) sebagai time_sec. |
$__timeFilter(dateColumn)
|
Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan. Misalnya, DateColumn BETWEEN FROM_UNIXTIME (1494410783) DAN FROM_UNIXTIME (1494410983). |
$__timeFrom()
|
Akan diganti dengan dimulainya pemilihan waktu yang sedang aktif. Misalnya, FROM_UNIXTIME (1494410783). |
$__timeTo()
|
Akan diganti pada akhir pemilihan waktu yang sedang aktif. Misalnya, FROM_UNIXTIME (1494410983). |
$__timeGroup(dateColumn,'5m')
|
Akan diganti dengan ekspresi yang dapat digunakan dalam klausa GROUP BY. Misalnya, cast (cast (UNIX_TIMESTAMP (DateColumn)/(300) sebagai ditandatangani) 300 sebagai ditandatangani), * |
$__timeGroup(dateColumn,'5m', 0)
|
Sama seperti baris sebelumnya, tetapi dengan parameter isian sehingga titik yang hilang dalam seri itu akan ditambahkan oleh grafana dan 0 akan digunakan sebagai nilai. |
$__timeGroup(dateColumn,'5m', NULL)
|
Sama seperti di atas tetapi NULL akan digunakan sebagai nilai untuk poin yang hilang. |
$__timeGroup(dateColumn,'5m', previous)
|
Sama seperti di atas tetapi nilai sebelumnya dalam seri itu akan digunakan sebagai nilai isi jika tidak ada nilai yang terlihat namun NULL akan digunakan (hanya tersedia di Grafana 5.3+). |
$__timeGroupAlias(dateColumn,'5m')
|
Akan diganti identik dengan $__timeGroup tetapi dengan alias kolom tambahan (hanya tersedia di Grafana 5.3+). |
$__unixEpochFilter(dateColumn) |
Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan dengan waktu yang direpresentasikan sebagai stempel waktu Unix. Misalnya, dateColumn > 1494410783 AND dateColumn <
1494497183 . |
$__unixEpochFrom() |
Akan diganti dengan dimulainya pemilihan waktu yang aktif saat ini sebagai stempel waktu Unix. Misalnya, 1494410783 . |
$__unixEpochTo() |
Akan diganti dengan akhir pemilihan waktu aktif saat ini sebagai stempel waktu Unix. Misalnya, 1494497183 . |
$__unixEpochNanoFilter(dateColumn) |
Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan dengan waktu yang direpresentasikan sebagai stempel waktu nanodetik. Misalnya, dateColumn > 1494410783152415214 AND
dateColumn < 1494497183142514872 . |
$__unixEpochNanoFrom() |
Akan digantikan oleh dimulainya pemilihan waktu aktif saat ini sebagai stempel waktu nanodetik. Misalnya, 1494410783152415214 . |
$__unixEpochNanoTo() |
Akan diganti pada akhir pemilihan waktu aktif saat ini sebagai stempel waktu nanodetik. Misalnya, 1494497183142514872 . |
$__unixEpochGroup(dateColumn,"5m",
[fillmode]) |
Sama seperti $__timeGroup tetapi untuk waktu yang disimpan sebagai stempel waktu Unix (hanya tersedia di Grafana 5.3+). |
$__unixEpochGroupAlias(dateColumn,"5m",
[fillmode])` |
Sama seperti di atas tetapi juga menambahkan alias kolom (hanya tersedia di Grafana 5.3+). |
Editor kueri memiliki tautan SQL yang Dihasilkan yang muncul setelah kueri berjalan, saat dalam mode edit panel. Pilih itu, dan itu akan memperluas dan menampilkan string SQL interpolasi mentah yang dijalankan.
Kueri tabel
Jika opsi Format sebagai kueri diatur ke Tabel, pada dasarnya Anda dapat melakukan semua jenis kueri SQL. Panel tabel akan secara otomatis menampilkan hasil kolom dan baris apa pun yang dikembalikan kueri Anda.
Kode berikut menunjukkan contoh query.
SELECT title as 'Title', user.login as 'Created By' , dashboard.created as 'Created On' FROM dashboard INNER JOIN user on user.id = dashboard.created_by WHERE $__timeFilter(dashboard.created)
Anda dapat mengontrol nama kolom panel Tabel dengan menggunakan sintaks pemilihan kolom as
SQL biasa.
Pertanyaan deret waktu
Jika Anda menetapkan Format sebagai deret Waktu, untuk digunakan dalam panel grafik misalnya, kueri harus mengembalikan kolom bernama time
yang mengembalikan datetime SQL atau tipe data numerik yang mewakili epoch Unix. Setiap kolom kecuali time
dan metric
diperlakukan sebagai kolom nilai. Anda dapat mengembalikan kolom bernama metric
yang digunakan sebagai nama metrik untuk kolom nilai. Jika Anda mengembalikan beberapa kolom nilai dan kolom bernamametric
, kolom ini digunakan sebagai awalan untuk nama seri (hanya tersedia di Grafana 5.3+).
Kumpulan hasil kueri deret waktu harus diurutkan berdasarkan waktu.
Contoh kode berikut menunjukkan metric
kolom.
SELECT $__timeGroup(time_date_time,'5m'), min(value_double), 'min' as metric FROM test_data WHERE $__timeFilter(time_date_time) GROUP BY time ORDER BY time
Contoh kode berikut menunjukkan menggunakan parameter fill di $__timeGroup makro untuk mengkonversi nilai null menjadi nol sebagai gantinya.
SELECT $__timeGroup(createdAt,'5m',0), sum(value_double) as value, measurement FROM test_data WHERE $__timeFilter(createdAt) GROUP BY time, measurement ORDER BY time
Contoh kode berikut menunjukkan beberapa kolom.
SELECT $__timeGroup(time_date_time,'5m'), min(value_double) as min_value, max(value_double) as max_value FROM test_data WHERE $__timeFilter(time_date_time) GROUP BY time ORDER BY time
Tidak ada dukungan untuk grup dinamis berdasarkan waktu berdasarkan rentang waktu dan lebar panel.
Templating
Alih-alih melakukan hardcoding hal-hal seperti server, aplikasi, dan nama sensor dalam kueri metrik Anda, Anda dapat menggunakan variabel di tempatnya. Variabel ditampilkan sebagai kotak pilih dropdown di bagian atas dasbor. Anda dapat menggunakan kotak dropdown ini untuk mengubah data yang ditampilkan di dasbor Anda.
Untuk informasi selengkapnya tentang variabel template dan template, lihatTemplate.
Variabel kueri
Jika Anda menambahkan variabel template dari jenisnyaQuery
, Anda dapat menulis kueri MySQL yang dapat mengembalikan hal-hal seperti nama pengukuran, nama kunci, atau nilai kunci yang ditampilkan sebagai kotak pilih tarik-turun.
Misalnya, Anda dapat memiliki variabel yang berisi semua nilai untuk hostname
kolom dalam tabel jika Anda menentukan kueri seperti ini dalam pengaturan kueri variabel template.
SELECT hostname FROM my_host
Kueri dapat mengembalikan beberapa kolom dan Grafana akan secara otomatis membuat daftar dari mereka. Misalnya, query berikut akan mengembalikan daftar dengan nilai-nilai dari hostname
danhostname2
.
SELECT my_host.hostname, my_other_host.hostname2 FROM my_host JOIN my_other_host ON my_host.city = my_other_host.city
Untuk menggunakan makro yang bergantung pada rentang waktu seperti $__timeFilter(column)
dalam kueri Anda, mode penyegaran variabel template harus disetel ke On Time Range Change.
SELECT event_name FROM event_log WHERE $__timeFilter(time_column)
Pilihan lain adalah kueri yang dapat membuat variabel kunci/nilai. Query harus mengembalikan dua kolom yang diberi nama __text
dan__value
. Nilai __text
kolom harus unik (jika tidak unik, nilai pertama digunakan). Opsi dalam daftar dropdown akan memiliki teks dan nilai sehingga Anda dapat memiliki nama ramah sebagai teks dan ID sebagai nilainya.
Contoh kode berikut menunjukkan query dengan hostname
sebagai teks dan id
sebagai nilai.
SELECT hostname AS __text, id AS __value FROM my_host
Anda juga dapat membuat variabel bersarang. Misalnya, jika Anda memiliki variabel lain bernamaregion
. Kemudian Anda dapat meminta variabel host hanya menampilkan host dari wilayah yang dipilih saat ini dengan kueri seperti ini (jika region
adalah variabel multi-nilai maka gunakan operator IN
perbandingan daripada =
untuk mencocokkan dengan beberapa nilai).
SELECT hostname FROM my_host WHERE region IN($region)
Menggunakan __searchFilter
untuk memfilter hasil dalam Variabel Kueri
Menggunakan __searchFilter
di bidang kueri akan memfilter hasil kueri berdasarkan jenis pengguna di kotak pilih dropdown. Ketika tidak ada yang dimasukkan oleh pengguna, nilai default untuk __searchFilter
adalah%
.
catatan
Penting bahwa Anda mengelilingi __searchFilter
ekspresi dengan tanda kutip karena Grafana tidak melakukan ini untuk Anda.
Contoh berikut menunjukkan cara menggunakan __searchFilter
sebagai bagian dari bidang query untuk mengaktifkan pencarian hostname
sementara pengguna mengetik di kotak pilih dropdown.
SELECT hostname FROM my_host WHERE hostname LIKE '$__searchFilter'
Menggunakan variabel dalam kueri
Dari Grafana 4.3.0 hingga 4.6.0, variabel template selalu dikutip secara otomatis sehingga jika itu adalah nilai string jangan membungkusnya dalam tanda kutip di klausa where.
Dari Grafana 4.7.0, nilai variabel template hanya dikutip jika variabel template adalah a. multi-value
Jika variabel adalah variabel multi-nilai, gunakan operator IN
perbandingan daripada =
untuk mencocokkan dengan beberapa nilai.
Ada dua sintaks:
$<varname>
Contoh dengan variabel template bernamahostname
:
SELECT UNIX_TIMESTAMP(atimestamp) as time, aint as value, avarchar as metric FROM my_table WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp ASC
[[varname]]
Contoh dengan variabel template bernamahostname
:
SELECT UNIX_TIMESTAMP(atimestamp) as time, aint as value, avarchar as metric FROM my_table WHERE $__timeFilter(atimestamp) and hostname in([[hostname]]) ORDER BY atimestamp ASC
Mematikan kutipan untuk variabel multi-nilai
Grafana secara otomatis membuat string yang dikutip dan dipisahkan koma untuk variabel multi-nilai. Misalnya: jika server01
dan server02
dipilih maka akan diformat sebagai:'server01', 'server02'
. Untuk menonaktifkan kutipan, gunakan opsi pemformatan csv untuk variabel.
${servers:csv}
Untuk informasi selengkapnya tentang opsi pemformatan variabel, lihatOpsi format variabel lanjutan.
Anotasi
Anda dapat menggunakan anotasi untuk melapisi informasi acara yang kaya di atas grafik. Anda menambahkan kueri anotasi melalui menu Dasbor/tampilan Anotasi. Untuk informasi selengkapnya, lihat .
Contoh kode berikut menunjukkan query menggunakan kolom waktu dengan nilai-nilai epoch.
SELECT epoch_time as time, metric1 as text, CONCAT(tag1, ',', tag2) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)
Kode contoh berikut menunjukkan kueri wilayah menggunakan kolom waktu dan waktu akhir dengan nilai epoch.
catatan
Hanya tersedia di Grafana v6.6+.
SELECT epoch_time as time, epoch_timeend as timeend, metric1 as text, CONCAT(tag1, ',', tag2) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)
Kode contoh berikut menunjukkan query menggunakan kolom waktu tipe data tanggal/waktu SQL asli.
SELECT native_date_time as time, metric1 as text, CONCAT(tag1, ',', tag2) as tags FROM public.test_data WHERE $__timeFilter(native_date_time)
Nama | Penjelasan |
---|---|
time
|
Nama bidang tanggal/waktu. Bisa berupa kolom dengan tipe data tanggal/waktu SQL asli atau nilai epoch. |
timeend
|
Nama opsional bidang tanggal/waktu berakhir/waktu. Bisa berupa kolom dengan tipe data tanggal/waktu SQL asli atau nilai epoch. |
text
|
Bidang deskripsi acara. |
tags
|
Nama bidang opsional yang akan digunakan untuk tag peristiwa sebagai string yang dipisahkan koma. |
Peringatan
Kueri deret waktu harus berfungsi dalam kondisi peringatan. Kueri yang diformat tabel belum didukung dalam kondisi aturan peringatan.