Cara menggunakan report-host mysql

Mulai dari Grafana v5. 1 Anda dapat menamai kolom waktu time selain time_sec yang didukung sebelumnya. Penggunaan time_sec pada akhirnya akan ditinggalkan

Grafana dikirimkan dengan plugin sumber data MySQL bawaan yang memungkinkan Anda untuk membuat kueri dan memvisualisasikan data dari database yang kompatibel dengan MySQL

Untuk instruksi tentang cara menambahkan sumber data ke Grafana, lihat dokumentasi administrasi. Hanya pengguna dengan peran administrator organisasi yang dapat menambahkan sumber data. Administrator juga dapat menggunakan sistem penyediaan Grafana

Konfigurasi sumber data

Opsi sumber data

NamaDeskripsi
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)
0Nama sumber data. Ini adalah cara Anda merujuk ke sumber data di panel dan kueri.
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)
1Sumber data default berarti akan dipilih sebelumnya untuk panel baru.
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)
2Alamat IP/nama host dan port opsional instance MySQL Anda.
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)
3Nama database MySQL Anda.
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)
4Login/nama pengguna pengguna database
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)
5Kata sandi pengguna database
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)
6Tentukan zona waktu yang digunakan dalam sesi database, seperti
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)
7 atau
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)
8. Ini diperlukan, jika zona waktu database (atau host database) disetel ke selain UTC. Tetapkan nilai yang digunakan dalam sesi dengan ________0______9. Jika Anda membiarkan bidang ini kosong, maka zona waktu tidak diperbarui. Untuk informasi lebih lanjut, lihat dokumentasi MySQL.
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
0Jumlah maksimum koneksi terbuka ke database, default
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
1 (Grafana v5. 4+).
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
2Jumlah maksimum koneksi di kumpulan koneksi menganggur, default
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
3 (Grafana v5. 4+).
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
4Jumlah waktu maksimum dalam detik koneksi dapat digunakan kembali, default
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
5/4 jam. Ini harus selalu lebih rendah dari yang dikonfigurasi di MySQL (Grafana v5. 4+)

Pengaturan Interval waktu min menentukan batas bawah untuk variabel dan

Nilai ini harus diformat sebagai angka diikuti dengan pengidentifikasi waktu yang valid

IdentifierDescription
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
8year
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
9month
+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
0week
+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
1day
+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
2hour
+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
3minute
+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
4second
+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
5millisecond

Kami merekomendasikan pengaturan nilai ini agar sesuai dengan frekuensi penulisan MySQL Anda. Misalnya, gunakan

+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
_6 jika MySQL menulis data setiap menit

Anda juga dapat mengganti setelan ini di panel dasbor di bawah opsi sumber datanya

Izin Pengguna Database (Penting. )

Pengguna database yang Anda tentukan saat menambahkan sumber data hanya boleh diberi izin PILIH pada database dan tabel tertentu yang ingin Anda kueri. Grafana tidak memvalidasi bahwa kueri tersebut aman. Kueri dapat menyertakan pernyataan SQL apa pun. Misalnya, pernyataan seperti

+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
_7 dan
+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
8 akan dieksekusi. Untuk melindungi dari ini, kami sangat menyarankan Anda membuat pengguna mysql khusus dengan izin terbatas

Contoh

 CREATE USER 'grafanaReader' IDENTIFIED BY 'password';
 GRANT SELECT ON mydatabase.mytable TO 'grafanaReader';

Anda dapat menggunakan wildcard (

+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+
_9) sebagai pengganti database atau tabel jika Anda ingin memberikan akses ke lebih banyak database dan tabel

Menyediakan sumber data

Anda dapat menentukan dan mengonfigurasi sumber data dalam file YAML sebagai bagian dari sistem penyediaan Grafana. Untuk informasi selengkapnya tentang penyediaan, dan opsi konfigurasi yang tersedia, lihat

Contoh penyediaan

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}

Pembuat kueri

Pembuat kueri MySQL tersedia saat mengedit panel menggunakan sumber data MySQL

Topik ini menjelaskan kueri khusus untuk sumber data MySQL. Untuk dokumentasi umum tentang kueri sumber data di Grafana, lihat Kueri dan transformasi data

Anda dapat menjalankan kueri yang dibuat dengan menekan tombol

SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
0 di pojok kanan atas editor

Format

Respons dari MySQL dapat diformat sebagai tabel atau deret waktu. Untuk menggunakan format deret waktu, salah satu kolom harus diberi nama

SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
1

Pemilihan Dataset dan Tabel

Di dropdown dataset, pilih database MySQL untuk kueri. Dropdown diisi dengan database yang dapat diakses oleh pengguna. Saat dataset dipilih, dropdown tabel diisi dengan tabel yang tersedia

Fungsi Kolom dan Agregasi (PILIH)

Menggunakan dropdown, pilih kolom untuk disertakan dalam data. Anda juga dapat menentukan fungsi agregasi opsional

Tambahkan kolom nilai lebih lanjut dengan mengklik tombol tambah dan dropdown kolom lainnya muncul

Filter data (DI MANA)

Untuk menambahkan filter, geser tombol di bagian atas editor. Menggunakan tarik-turun pertama, pilih apakah semua filter harus cocok (DAN) atau jika hanya salah satu filter yang harus cocok (ATAU)

Untuk menambahkan lebih banyak kolom untuk difilter, gunakan tombol tambah

Kelompokkan Menurut

Untuk mengelompokkan hasil berdasarkan kolom, balik tombol grup di bagian atas editor. Anda kemudian dapat memilih kolom mana untuk mengelompokkan hasil. Kelompokkan dengan klausa dapat dihapus dengan menekan tombol X

Pratinjau

Dengan membalik tombol pratinjau di bagian atas editor, Anda bisa mendapatkan pratinjau kueri SQL yang dihasilkan oleh pembuat kueri

Editor kode

Untuk membuat kueri lanjutan, alihkan ke editor kode dengan mengeklik

SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
2 di pojok kanan atas editor. Editor kode mendukung pelengkapan otomatis tabel, kolom, kata kunci SQL, fungsi sql standar, variabel templat Grafana, dan makro Grafana. Kolom tidak dapat diisi sebelum tabel ditentukan

Anda dapat memperluas editor kode dengan menekan

SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
3 mengarah ke bawah di pojok kanan bawah editor kode

SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
4 berfungsi sebagai pintasan keyboard untuk menjalankan kueri

Makro

Untuk menyederhanakan sintaks dan mengizinkan bagian dinamis, seperti filter rentang tanggal, kueri bisa berisi makro

Contoh makroDeskripsi
SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
5Akan diganti dengan ekspresi untuk dikonversi menjadi stempel waktu UNIX dan ganti nama kolom menjadi
SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
6. Misalnya, UNIX_TIMESTAMP(dateColumn) sebagai time_sec
SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
7Akan diganti dengan ekspresi untuk mengonversi menjadi stempel waktu UNIX dan mengganti nama kolom menjadi
SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
6. Misalnya, UNIX_TIMESTAMP(dateColumn) sebagai time_sec
SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
9Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan. Misalnya, dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)
+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+
0Akan diganti dengan awal pemilihan waktu aktif saat ini. Misalnya, FROM_UNIXTIME(1494410783)
+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+
1Akan diganti dengan akhir pemilihan waktu aktif saat ini. Misalnya, FROM_UNIXTIME(1494410983)
+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+
2Akan diganti dengan ekspresi yang dapat digunakan dalam klausa GROUP BY. Misalnya, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),*
+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+
3Sama seperti di atas tetapi dengan parameter isian sehingga poin yang hilang dalam rangkaian tersebut akan ditambahkan oleh grafana dan 0 akan digunakan sebagai nilai. ________40______4Sama seperti di atas tetapi NULL akan digunakan sebagai nilai untuk poin yang hilang.
+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+
5Sama seperti di atas tetapi nilai sebelumnya pada seri tersebut akan digunakan sebagai nilai isian jika belum ada nilai yang terlihat NULL akan digunakan (hanya tersedia di Grafana 5. 3+).
+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+
6Akan diganti identik dengan $__timeGroup tetapi dengan alias kolom tambahan (hanya tersedia di Grafana 5. 3+).
+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+
7Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan dengan waktu yang direpresentasikan sebagai stempel waktu Unix. Misalnya, dateColumn > 1494410783 AND dateColumn < 1494497183
+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+
8Akan diganti dengan awal pemilihan waktu aktif saat ini sebagai cap waktu Unix. Misalnya, 1494410783
+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+
9Akan diganti dengan akhir pemilihan waktu aktif saat ini sebagai stempel waktu Unix. Misalnya, 1494497183
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
0Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan dengan waktu yang direpresentasikan sebagai stempel waktu nanodetik. Misalnya, dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872
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
1Akan diganti dengan awal pemilihan waktu aktif saat ini sebagai stempel waktu nanodetik. Misalnya, 1494410783152415214
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
2Akan diganti dengan akhir pemilihan waktu aktif saat ini sebagai stempel waktu nanodetik. Misalnya, 1494497183142514872
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
3Sama dengan $__timeGroup tetapi untuk waktu disimpan sebagai cap waktu Unix (hanya tersedia di Grafana 5. 3+).
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
4Sama seperti di atas tetapi juga menambahkan alias kolom (hanya tersedia di Grafana 5. 3+)

Kami berencana untuk menambahkan lebih banyak makro. Jika Anda memiliki saran untuk makro apa yang ingin Anda lihat, buka masalah di repo GitHub kami

Editor kueri memiliki tautan bernama

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
5 yang muncul setelah kueri dijalankan, saat dalam mode edit panel. Klik di atasnya dan itu akan meluas dan menampilkan string SQL interpolasi mentah yang telah dieksekusi

Kueri tabel

Jika opsi kueri

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
6 disetel ke
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
7 maka 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

Editor kueri dengan contoh kueri

Kueri

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

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
8 SQL biasa

Panel tabel yang dihasilkan

Jika Anda menyetel Format sebagai rangkaian Waktu, maka kueri harus memiliki kolom bernama waktu yang mengembalikan tanggal waktu SQL atau tipe data numerik apa pun yang mewakili zaman Unix dalam hitungan detik. Selain itu, rangkaian hasil kueri deret waktu harus diurutkan berdasarkan waktu agar panel dapat memvisualisasikan hasilnya dengan benar

Hasil kueri deret waktu dikembalikan dalam a. Setiap kolom kecuali waktu atau tipe string diubah menjadi bidang nilai dalam hasil kueri bingkai data. Setiap kolom string diubah menjadi label bidang dalam hasil kueri bingkai data

Untuk kompatibilitas mundur, ada pengecualian pada aturan di atas untuk kueri yang mengembalikan tiga kolom termasuk kolom string bernama metrik. Alih-alih mengubah kolom metrik menjadi label bidang, itu menjadi nama bidang, dan kemudian nama seri diformat sebagai nilai kolom metrik. Lihat contoh dengan kolom metrik di bawah ini

Untuk secara opsional menyesuaikan pemformatan nama seri default, lihat

Contoh dengan 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
_9

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

Hasil bingkai data

+---------------------+-----------------+
| Name: time          | Name: min       |
| Labels:             | Labels:         |
| Type: []time.Time   | Type: []float64 |
+---------------------+-----------------+
| 2020-01-02 03:05:00 | 3               |
| 2020-01-02 03:10:00 | 6               |
+---------------------+-----------------+

Contoh menggunakan parameter isian di makro $__timeGroup untuk mengubah nilai null menjadi nol

SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time

Mengingat hasil bingkai data dalam contoh berikut dan menggunakan panel grafik, Anda akan mendapatkan dua seri bernama nilai 10. 0. 1. 1 dan nilai 10. 0. 1. 2. Untuk merender seri dengan nama 10. 0. 1. 1 dan 10. 0. 1. 2 , gunakan [nilai tampilan

+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
0

Hasil bingkai data

+---------------------+---------------------------+---------------------------+
| Name: time          | Name: value               | Name: value               |
| Labels:             | Labels: hostname=10.0.1.1 | Labels: hostname=10.0.1.2 |
| Type: []time.Time   | Type: []float64           | Type: []float64           |
+---------------------+---------------------------+---------------------------+
| 2020-01-02 03:05:00 | 3                         | 4                         |
| 2020-01-02 03:10:00 | 6                         | 7                         |
+---------------------+---------------------------+---------------------------+

Contoh dengan 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

Hasil bingkai data

+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+

Saat ini, tidak ada dukungan untuk grup dinamis menurut waktu berdasarkan rentang waktu dan lebar panel. Ini adalah sesuatu yang kami rencanakan untuk ditambahkan

Templat

Fitur ini saat ini tersedia di nightly build dan akan disertakan di 5. 0. 0 rilis

Alih-alih mengkodekan hal-hal seperti server, aplikasi, dan nama sensor dalam kueri metrik Anda, Anda dapat menggunakan variabel sebagai gantinya. Variabel ditampilkan sebagai kotak pilih dropdown di bagian atas dasbor. Dropdown ini memudahkan untuk mengubah data yang ditampilkan di dasbor Anda

Lihat dokumentasi Templating untuk pengenalan fitur templating dan berbagai jenis variabel templat

Variabel Kueri

Jika Anda menambahkan variabel template dari tipe

+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
1, Anda dapat menulis kueri MySQL yang dapat mengembalikan hal-hal seperti nama pengukuran, nama kunci, atau nilai kunci yang ditampilkan sebagai kotak pilih dropdown

Misalnya, Anda dapat memiliki variabel yang berisi semua nilai untuk kolom

+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
2 dalam tabel jika Anda menentukan kueri seperti ini di pengaturan kueri variabel templating

SELECT hostname FROM my_host

Kueri dapat mengembalikan banyak kolom dan Grafana akan secara otomatis membuat daftar darinya. Misalnya, kueri di bawah ini akan mengembalikan daftar dengan nilai dari

+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
2 dan
+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
4

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
0

Untuk menggunakan makro yang bergantung pada rentang waktu seperti

+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
5 dalam kueri Anda, mode penyegaran variabel templat harus disetel ke On Time Range Change

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
1

Opsi lainnya adalah kueri yang dapat membuat variabel kunci/nilai. Kueri harus mengembalikan dua kolom yang diberi nama

+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
6 dan
+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
7. Nilai kolom
+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
_6 harus unik (jika tidak unik maka nilai pertama yang digunakan). Opsi di dropdown akan memiliki teks dan nilai yang memungkinkan Anda memiliki nama yang bersahabat sebagai teks dan id sebagai nilainya. Contoh kueri dengan
+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
_2 sebagai teks dan
SELECT hostname FROM my_host
0 sebagai nilainya

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
2

Anda juga dapat membuat variabel bersarang. Misalnya jika Anda memiliki variabel lain bernama

SELECT hostname FROM my_host
1. Kemudian Anda dapat membuat variabel host hanya menampilkan host dari wilayah yang saat ini dipilih dengan kueri seperti ini (jika
SELECT hostname FROM my_host
1 adalah variabel multi-nilai maka gunakan operator perbandingan
SELECT hostname FROM my_host
3 daripada
SELECT hostname FROM my_host
4 untuk mencocokkan dengan beberapa nilai)

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
3

Menggunakan
SELECT hostname FROM my_host
_5 untuk memfilter hasil dalam Variabel Kueri

Tersedia dari Grafana 6. 5 dan lebih tinggi

Menggunakan

SELECT hostname FROM my_host
_5 di bidang kueri akan memfilter hasil kueri berdasarkan apa yang diketik pengguna di kotak pilih dropdown. Ketika tidak ada yang dimasukkan oleh pengguna, nilai default untuk
SELECT hostname FROM my_host
5 adalah
SELECT hostname FROM my_host
8

Penting bagi Anda untuk mengapit ekspresi

SELECT hostname FROM my_host
_5 dengan tanda kutip karena Grafana tidak melakukannya untuk Anda

Contoh di bawah menunjukkan cara menggunakan

SELECT hostname FROM my_host
5 sebagai bagian dari bidang kueri untuk mengaktifkan pencarian
+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
2 saat pengguna mengetik di kotak pilih dropdown

Pertanyaan

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
4

Menggunakan Variabel dalam Query

Dari Grafana 4. 3. 0 sampai 4. 6. 0, variabel templat selalu dikutip secara otomatis jadi jika itu adalah nilai string jangan membungkusnya dengan tanda kutip di mana klausa

Dari Grafana 4. 7. 0, nilai variabel template hanya dikutip ketika variabel template adalah

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
02

Jika variabel adalah variabel multi-nilai maka gunakan

SELECT hostname FROM my_host
3 operator perbandingan daripada
SELECT hostname FROM my_host
4 untuk mencocokkan dengan beberapa nilai

Ada dua sintaks

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
05 Contoh dengan variabel template bernama
+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
2

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
5

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
07 Contoh dengan variabel template bernama
+---------------------+-----------------+-----------------+
| Name: time          | Name: min_value | Name: max_value |
| Labels:             | Labels:         | Labels:         |
| Type: []time.Time   | Type: []float64 | Type: []float64 |
+---------------------+-----------------+-----------------+
| 2020-01-02 03:04:00 | 3               | 4               |
| 2020-01-02 03:05:00 | 6               | 7               |
+---------------------+-----------------+-----------------+
2

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
6

Menonaktifkan Mengutip untuk Variabel Multi-Nilai

Grafana secara otomatis membuat string yang dikutip dan dipisahkan koma untuk variabel multi-nilai. Sebagai contoh. jika

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
09 dan
apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
10 dipilih maka akan diformat sebagai.
apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
_11. Nonaktifkan kutipan, gunakan opsi pemformatan csv untuk variabel

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
_12

Baca lebih lanjut tentang opsi pemformatan variabel dalam dokumentasi

Anotasi

Anotasi memungkinkan Anda menghamparkan informasi acara yang kaya di atas grafik. Anda menambahkan kueri anotasi melalui menu Dasbor/tampilan Anotasi

Contoh kueri menggunakan kolom waktu dengan nilai zaman

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
7

Contoh kueri wilayah menggunakan kolom waktu dan akhir waktu dengan nilai zaman

Hanya tersedia di Grafana v6. 6+

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
8

Contoh kueri menggunakan kolom waktu dari tipe data tanggal/waktu SQL asli

apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
9NamaDeskripsi
SELECT
  $__timeGroup(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM test_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time
1Nama bidang tanggal/waktu. Bisa berupa kolom dengan tipe data tanggal/waktu SQL asli atau nilai zaman.
apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
14 Nama opsional bidang tanggal/waktu akhir. Bisa berupa kolom dengan tipe data tanggal/waktu SQL asli atau nilai zaman. (Grafana v6. 6+)
apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
15Bidang deskripsi acara.
apiVersion: 1

datasources:
  - name: MySQL
    type: mysql
    url: localhost:3306
    database: grafana
    user: grafana
    jsonData:
      maxOpenConns: 0 # Grafana v5.4+
      maxIdleConns: 2 # Grafana v5.4+
      connMaxLifetime: 14400 # Grafana v5.4+
    secureJsonData:
      password: ${GRAFANA_MYSQL_PASSWORD}
16 Nama bidang opsional yang digunakan untuk tag peristiwa sebagai string yang dipisahkan koma

Memperingatkan

Kueri deret waktu harus berfungsi dalam kondisi peringatan. Kueri berformat tabel belum didukung dalam kondisi aturan peringatan