Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anda dapat menggunakan sumber data PostgreSQL untuk menanyakan dan memvisualisasikan data dari database Amazon Aurora PostgreSQL Anda.
penting
Grafana versi 8 mengubah struktur data yang mendasari frame data untuk sumber data Postgres, MySQL, dan Microsoft SQL Server. Akibatnya, hasil kueri deret waktu dikembalikan dalam format lebar. Untuk informasi selengkapnya, lihat Format lebar
Di Grafana versi 9, sumber data PostgreSQL menyiapkan sertifikat root untuk menghubungkan ke database Anda secara berbeda dari versi sebelumnya. Jika Anda memperbarui ruang kerja Anda dari versi 8 ke 9, Anda mungkin perlu mengubah cara Anda terhubung. Untuk informasi selengkapnya, lihat Memecahkan masalah dengan ruang kerja yang diperbarui.
Menambahkan sumber data
-
Buka menu samping dengan memilih ikon Grafana di header atas.
-
Di menu samping di bawah ikon Konfigurasi, Anda harus menemukan tautan Sumber Data.
-
Pilih tombol + Tambahkan sumber data di header atas.
-
Pilih PostgreSQL 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 PostgreSQL Anda. Jangan sertakan nama database. String koneksi untuk menghubungkan ke Postgres tidak akan benar dan akan menyebabkan kesalahan. |
Database
|
Nama database PostgreSQL Anda. |
User
|
Login/nama pengguna database pengguna. |
Password
|
Kata sandi pengguna basis data |
SSL Mode
|
Opsi ini menentukan apakah atau dengan prioritas apa koneksi SSL TCP/IP aman akan dinegosiasikan dengan server. |
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 (Grafana v5.4+). |
Version
|
Opsi ini menentukan fungsi mana yang tersedia di pembuat kueri (hanya tersedia di Grafana 5.3+). |
TimescaleDB
|
TimescaleDB adalah database deret waktu yang dibangun sebagai ekstensi PostgreSQL. Jika diaktifkan, Grafana akan digunakan time_bucket di $__timeGroup makro dan menampilkan fungsi agregat spesifik TimescaleDB di pembuat kueri (hanya tersedia di Grafana 5.3+). |
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 seharusnya hanya diberikan 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 DELETE FROM user;
dan DROP TABLE user;
akan dijalankan. Untuk melindungi dari hal ini, kami sangat menyarankan Anda membuat pengguna PostgreSQL tertentu dengan izin terbatas.
Kode contoh berikut menunjukkan pembuatan pengguna PostgreSQL specifice dengan izin terbatas.
CREATE USER grafanareader WITH PASSWORD 'password';
GRANT USAGE ON SCHEMA schema TO grafanareader;
GRANT SELECT ON schema.table TO grafanareader;
Pastikan bahwa pengguna tidak mendapatkan izin yang tidak diinginkan dari peran publik.
Editor kueri
Anda menemukan editor kueri PostgreSQL di tab metrik di Graph atau mode edit panel Singlestat. 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 search_path
pengguna database. Untuk memilih tabel atau tampilan yang tidak ada di Anda, search_path
Anda dapat memasukkan nama yang sepenuhnya memenuhi syarat (schema.table) secara manual seperti. public.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 (char, varchar, text). Untuk menggunakan kolom dengan tipe data yang berbeda sebagai kolom metrik, Anda dapat memasukkan nama kolom dengan pemeran:ip::text
. Anda juga dapat memasukkan ekspresi SQL arbitrer di bidang kolom metrik yang mengevaluasi tipe data teks seperti. hostname || ' ' || container_name
Kolom, jendela, 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
.
Fungsi yang tersedia di editor kueri bergantung pada versi PostgreSQL yang Anda pilih saat mengonfigurasi sumber data. Jika Anda menggunakan fungsi agregat, Anda harus mengelompokkan set hasil Anda. Jika Anda menambahkan fungsi agregat, editor akan secara otomatis menambahkan file. GROUP BY time
Editor mencoba menyederhanakan dan menyatukan bagian kueri ini.
Anda dapat menambahkan kolom nilai lebih lanjut dengan memilih tombol plus dan memilih Kolom 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 filter dan memilih Hapus. Filter untuk rentang waktu yang dipilih saat ini secara otomatis ditambahkan ke kueri baru.
Grup 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 memilih Hapus.
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 yang Dikelola Amazon 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 (RAW)
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
Makro dapat digunakan dalam kueri untuk menyederhanakan sintaks dan memungkinkan bagian dinamis.
Contoh makro | Deskripsi |
---|---|
$__time(dateColumn)
|
Akan diganti dengan ekspresi untuk mengkonversi ke stempel waktu UNIX dan mengganti nama kolom menjadi. time_sec Misalnya, UNIX_TIMESTAMP (DateColumn) sebagai time_sec. |
$__timeEpoch(dateColumn)
|
Akan diganti dengan ekspresi untuk mengkonversi ke stempel waktu UNIX dan mengganti nama kolom menjadi. time_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 preivious, tetapi dengan parameter fill 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 |
$__unixEpochFilter(dateColumn) |
Akan diganti dengan filter rentang waktu menggunakan nama kolom yang ditentukan dengan waktu yang direpresentasikan sebagai stempel waktu Unix. Misalnya, *DateColumn > 1494410783 DAN DateColumn < 1494497183* |
$__unixEpochFrom() ` |
| Akan diganti dengan dimulainya pemilihan waktu yang sedang aktif 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 DAN 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. |
Kueri tabel
Jika opsi kueri diatur ke Format sebagai 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.
Anda dapat mengontrol nama kolom panel Tabel dengan menggunakan sintaks pemilihan kolom as
SQL biasa.
Pertanyaan deret waktu
Jika Anda menetapkan FormatTime series
, untuk digunakan dalam panel grafik misalnya, kueri harus mengembalikan kolom bernama time
yang mengembalikan datetime SQL atau tipe data numerik yang mewakili Unix epoch. 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.
Kumpulan hasil kueri deret waktu harus diurutkan berdasarkan waktu.
Kode contoh 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 folowing menunjukkan menggunakan parameter fill di makro $__TimeGroup untuk mengonversi nilai null menjadi nol sebagai gantinya.
SELECT
$__timeGroup("createdAt",'5m',0),
sum(value) as value,
measurement
FROM test_data
WHERE
$__timeFilter("createdAt")
GROUP BY time, measurement
ORDER BY time
Kode contoh 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
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 PostgreSQL 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 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 host.hostname, other_host.hostname2 FROM host JOIN other_host ON host.city = 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 yang memungkinkan Anda memiliki nama ramah sebagai teks dan id sebagai nilainya. Contoh query dengan hostname
sebagai teks dan id
sebagai nilai:
SELECT hostname AS __text, id AS __value FROM host
Anda juga dapat membuat variabel bersarang. Menggunakan variabel bernamaregion
, Anda bisa memiliki variabel host hanya menampilkan host dari wilayah yang dipilih saat ini. Contoh kode berikut menunjukkan kueri seperti ini (jika region
adalah variabel multi-nilai, gunakan operator IN
perbandingan daripada =
untuk mencocokkan dengan beberapa nilai).
SELECT hostname FROM host WHERE region IN($region)
Menggunakan __searchFilter
untuk memfilter hasil dalam Variabel Kueri
Menggunakan __searchFilter
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 __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
Nilai variabel template hanya dikutip ketika variabel template adalahmulti-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
atimestamp as time,
aint as value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in($hostname)
ORDER BY atimestamp ASC
[[varname]]
Contoh dengan variabel template bernamahostname
:
SELECT
atimestamp as time,
aint as value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in([[hostname]])
ORDER BY atimestamp ASC
Mematikan kutipan untuk variabel multi-nilai
Grafana yang Dikelola Amazon 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, lihatTemplate dan variabel.
Anotasi
Gunakan anotasi untuk melapisi informasi peristiwa yang kaya di atas grafik. Anda menambahkan kueri anotasi melalui menu Dasbor/tampilan Anotasi. Untuk informasi selengkapnya, lihat Anotasi.
Contoh kode berikut menunjukkan query menggunakan kolom waktu dengan nilai-nilai epoch.
SELECT
epoch_time as time,
metric1 as text,
concat_ws(', ', metric1::text, metric2::text) 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
Ini hanya tersedia di Grafana v6.6+.
SELECT
epoch_time as time,
epoch_time_end as timeend,
metric1 as text,
concat_ws(', ', metric1::text, metric2::text) 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_ws(', ', metric1::text, metric2::text) as tags
FROM
public.test_data
WHERE
$__timeFilter(native_date_time)
Nama | Penjelasan |
---|---|
time
|
Nama tipe date/time field. Could be a column with a native SQL date/time data atau nilai epoch. |
timeend
|
Nama opsional dari tipe date/time field. Could be a column with a native SQL date/time data akhir atau nilai epoch (Grafana v6.6+). |
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.