Repositori ini telah diarsipkan demi plugin bawaan yang tersedia dalam versi Grafana 9+: status-history dan state-timeline. Plugin ini digunakan oleh komunitas sebagai pengganti flant-statusmap, lihat edisi #302 untuk info lebih lanjut. Jika menurut Anda plugin ini sesuai dengan kebutuhan Anda dan ingin terus mengembangkannya, silakan membuat fork. Kami ingin melihat Anda melangkah lebih jauh!
Panel untuk menampilkan status terpisah dari beberapa target dari waktu ke waktu.
Jalankan
docker compose up
dan buka http://localhost:3000 di browser untuk melihat demo sederhana.
Kami sangat membutuhkan untuk memvisualisasikan serangkaian status rangkaian waktu selama periode waktu tertentu, sehingga kami dapat melihat riwayat perubahan status objek. Karena kami mengelola banyak cluster Kubernetes (dan infrastruktur terkait), kasus utama kami adalah visualisasi status kesehatan server & pod Kubernetes serta pemeriksaan kesehatan layanan HTTP. Kami telah mencoba berbagai plugin Grafana yang tersedia (tercantum dalam Ucapan Terima Kasih di bawah) namun tidak satupun yang dapat memberikan fitur dan visualisasi yang benar-benar mendekati apa yang kami cari.
NB: Anda dapat menemukan detail lebih lanjut tentang perjalanan kami membuat plugin di postingan ini.
Objek yang divisualisasikan dengan plugin ini mungkin berbeda: tidak hanya komponen TI (misalnya host server dan pod Kubernetes) tetapi apa pun yang dapat Anda bayangkan seperti pembuat kopi pada gambar di atas. Objek-objek ini harus memiliki status diskrit yang merupakan kumpulan nilai yang telah ditentukan sebelumnya, misalnya ok
= 0, off
= 1, fail
= 2, dll.
Untuk membuat grafik yang rapi, sumber data Anda harus menghasilkan data yang bagus. Plugin menyesuaikan variabel $__interval
tergantung pada lebar keranjang di opsi panel. Kueri Anda harus menggabungkan status di atas $__interval
.
Agar mode beberapa nilai berfungsi seperti yang diharapkan, Anda harus menentukan beberapa kueri: satu kueri untuk setiap kemungkinan status.
Plugin tidak mengumpulkan data tepat waktu untuk saat ini, plugin hanya merender data masukan sebagai keranjang. Oleh karena itu, data harus berisi titik untuk setiap stempel waktu dalam rentang waktu dan stempel waktu yang sama untuk setiap kemungkinan target (label sumbu y). Keterbatasan ini diatasi dengan isu #53.
Untuk bekerja dengan data dari Prometheus, Anda perlu mengatur status terpisah untuk objek Anda. Persyaratan untuk menyimpan status ini dalam metrik adalah sebagai berikut:
0
dan 1
;Setelah selesai, Anda dapat mengumpulkan semua data melalui query, misalnya:
(max_over_time(coffee_maker_status{status=""}[$__interval]) == 1) *
Jika tidak ada status seperti itu (
) selama interval kueri, Prometheus tidak akan mengembalikan apa pun. Jika tidak, nilai status akan dikembalikan.
Misalnya, jika Anda memiliki 5 jenis status dan metrik ( coffee_maker_status
) dengan 5 nilai yang diizinkan ( 0
, 1
, 2
, 3
, 4
), Anda harus mengubah metrik ini menggunakan aturan berikut:
- record: coffee_maker_status:discrete
expr: |
count_values("status", coffee_maker_status)
Begitulah cara metrik coffee_maker_status
dengan nilai 3
akan diubah menjadi metrik baru:
coffee_maker_status:discrete{status="3"} 1
Sekarang, ketika Prometheus memiliki nilai 0
dan 1
untuk setiap status, semua metrik ini dapat digabungkan, sehingga Anda akan mendapatkan semua status objek yang tersedia seiring waktu.
Pilih 'Rangkaian waktu' untuk 'Format sebagai' dan gunakan GROUP BY ($__interval)
dalam kueri. $tag_
dapat digunakan di 'Alias by' untuk menentukan label sumbu y.
Contoh kueri dengan agregasi lebih dari $__interval
adalah seperti ini (Anda memerlukan satu kueri untuk setiap kemungkinan nilai status):
SELECT
$__timeGroupAlias(date_insert,$__interval),
name AS metric,
min(statusi) AS "statusi"
FROM coffee_makers
WHERE
$__timeFilter(date_insert) AND statusi=1
GROUP BY 1,2
ORDER BY $__timeGroup(date_insert,$__interval)
kolom metric
digunakan sebagai label sumbu y.
Pertama-tama, kueri individual untuk setiap nilai status yang mungkin harus dibuat. Setiap kueri juga harus memiliki legenda serupa untuk pengelompokan:
Kemudian, pemetaan warna untuk nilai status harus ditentukan dalam mode warna Diskrit :
Penggunaan dapat menggunakan preset untuk menentukan warna lampu lalu lintas atau 8 warna dari palet solarized:
Catatan: Mode warna Spektrum dan Opasitas berfungsi sama seperti di plugin Peta Panas.
Kotak centang beberapa nilai menentukan cara menampilkannya:
Tampilan null dapat diperlakukan sebagai keranjang kosong atau ditampilkan dengan warna nilai 0
.
Lebar dan jarak minimum digunakan untuk menentukan lebar minimum bucket dan jarak antar bucket. Pembulatan dapat digunakan untuk membulatkan tepi.
Indeks nilai disetel ke angka positif untuk hanya menampilkan nilai dari rangkaian waktu tertentu.
Tampilkan kotak centang legenda untuk mengaktifkan legenda di bagian bawah panel.
Pengurutan baris dapat digunakan untuk mengurutkan label pada sumbu Y. Metrik — mengurutkan label sesuai dengan yang ditentukan pada tab Metrik. a→z dan z→a mengurutkan label menurun atau menaik dalam urutan alami.
Aktifkan penomoran halaman akan mengaktifkan kontrol penomoran halaman pada grafik.
Baris per halaman sejumlah baris untuk ditampilkan pada grafik.
Tampilkan keterangan alat mengalihkan tampilan keterangan alat saat mengarahkan mouse ke atas keranjang.
Bekukan saat klik mengaktifkan keterangan alat "membekukan" saat diklik. Tooltip beku dapat digunakan untuk membandingkan data dengan tooltip mengambang atau untuk mengikuti URL.
Tampilkan item mengaktifkan tampilan item tambahan di tooltip.
Item adalah daftar definisi untuk menampilkan URL di tooltip.
Setiap URL memiliki templat, ikon, label, dan opsi format: huruf kecil dan format tanggal untuk variabel.
Dalam beberapa skenario kasus, panel status digunakan untuk berpindah dari satu dasbor ke dasbor yang lebih spesifik, misalnya saat melakukan analisis akar/penyebab. Dalam kasus seperti ini, pengguna mungkin ingin mengurangi cakupan rentang waktu, sekaligus menjaga peristiwa yang diinginkan tetap terpusat (agar dapat menganalisis kelompok waktu sebelumnya/belakang). Nilai-nilai tersebut diperkenalkan melalui __bucket_from
dan __bucket_to
.
__bucket_from
: Ini adalah nilai bucket.from
dikurangi persentase bucket. __bucket_to
: Ini adalah nilai bucket.to
ditambah persentase bucket.
Rilis publik pertama dari plugin ini sepenuhnya dibuat oleh para insinyur Flant. Seluruh idenya datang dari Dmitry Stolyarov (@distol), versi awal ditulis oleh Sergey Gnuskov (@gsmetal) dan perubahan terakhir dibuat oleh Ivan Mikheykin (@diafour).
Plugin ini didasarkan pada panel "Peta Panas" oleh Grafana dan sebagian terinspirasi oleh ide dari plot Karpet, panel Diskrit, Panel Status, Titik Status, Status Berdasarkan Grup.