Grafana: Dukungan untuk daftar putar dengan variabel templating

Dibuat pada 8 Sep 2014  ·  132Komentar  ·  Sumber: grafana/grafana

Biarkan saya memberi Anda contoh sederhana:
Kami memiliki dasbor yang memiliki variabel $HOST yang dikonfigurasi.
Kami memiliki grafik yang menggunakan aws.$HOST.request.count
Saat melihat dasbor, kita dapat memilih Host1, Host2 dll, menampilkan metrik yang sesuai.
Sekarang, alangkah baiknya untuk mengubah ini menjadi daftar putar sehingga setiap menit, grafana menampilkan metrik untuk setiap host.

Hal-hal menjadi sedikit lebih rumit ketika kita memiliki dua atau lebih filter. Ada banyak kombinasi, beberapa di antaranya mungkin tidak menarik bagi pengamat dasbor.
Untuk alasan ini, alangkah baiknya jika ada cara untuk memilih daftar kombinasi filter/variabel yang menarik bagi pengguna. Daftar putar kemudian akan menggilir kombinasi ini dan menampilkan dasbor dengan metrik yang sesuai.
Sebaiknya juga memungkinkan untuk memilih kombinasi yang berbeda untuk rentang waktu juga dalam daftar putar (mis. 6 jam terakhir, 24 jam terakhir, dan seterusnya).

aredashboard prioritnice-to-have typfeature-request

Komentar yang paling membantu

:cake: untuk peringatan 5 tahun terbitan ini.

Bisakah kita mendapatkan pembaruan?

Semua 132 komentar

@costimuraru saran yang sangat bagus!

:+1: akan membuat fitur daftar putar jauh lebih berguna

:+1: Fitur ini diperlukan karena Anda tidak memiliki layar sebesar itu untuk meletakkan semua grafik Anda di sana.

:+1: Memang, fitur ini akan sangat bagus untuk proyek seperti milik kami di mana kami memiliki banyak dasbor yang dapat dipadatkan dalam satu layar.

Ini memang terdengar sangat berguna, tetapi juga cukup rumit dan memakan waktu untuk mengekspos pengaturan variabel dan waktu dalam tampilan daftar putar awal (dan menerapkan logika untuk menangani pengaturan tersebut dan variabel pengaturan dll pada beban/siklus dasbor). Jadi itu pasti akan menjadi fitur yang terlalu diprioritaskan di masa depan tetapi bukan sesuatu yang bisa diperas untuk v1.8

Terima kasih @torkelo dan teruslah bekerja dengan baik!

:+1: Akan sangat bagus untuk memiliki fitur ini

Saat ini dalam antrian dev -- apakah ada cara untuk menentukan variabel template di url? Saya setidaknya bisa menggunakan ekstensi browser untuk memutar melalui banyak url untuk saat ini.

@rishid ya, menggunakan ?var-<variable_name>=value

+1, saya juga sangat tertarik dengan permintaan fitur ini

+1

+1

+1 Dengan templating, ini adalah suatu keharusan.

PR segera datang...

@costimuraru Saya telah menerapkan daftar putar untuk satu variabel, sekarang mengerjakan kombinasi multi variabel. Pelaksanaannya harus cepat. Memilih rentang waktu yang berbeda mungkin merupakan fitur peningkatan di atas ini. Untuk iterasi ini, saya hanya melakukan playlist kombinasi variabel template.

Itu luar biasa, @utkarshcmu !

Ini PR - #2841 dan beberapa tangkapan layar:

Buka "Templat" dan sekarang Anda seharusnya dapat melihat tab "Daftar Putar" yang baru:
screen shot 2015-09-29 at 3 14 13 am

Klik pada tab Daftar Putar dan Anda akan melihat layar berikut dengan semua variabel yang terdaftar.
screen shot 2015-09-29 at 3 14 16 am

Saya memilih 2 variabel dari 3 dan mengklik "Mulai". (Alasan saya memilih 2 adalah karena saya ingin memainkan semua kombinasi dari 2 variabel ini dengan mempertahankan variabel ke-3. Harap Dicatat: Variabel tetap akan mendapatkan nilai simpanan defaultnya).
screen shot 2015-09-29 at 3 14 22 am

Sekarang Anda dapat melihat bahwa saya menjaga variabel pertama tetap konstan dan daftar putar akan dimulai dengan semua kemungkinan kombinasi variabel ke-2 dan ke-3.
screen shot 2015-09-29 at 3 14 36 am

Harap berikan umpan balik dan perubahan jika diperlukan.

Luar biasa @utkarshcmu

Kerja bagus! tidak yakin tentang memiliki fitur daftar putar sebagai tab dalam pengaturan templating. Sudah ada tampilan daftar putar, Membuat daftar putar untuk dasbor bertemplat harus menjadi bagian dari tampilan itu.

Setuju dengan @torkelo , saya akan menjadikan ini bagian dari tampilan daftar putar. Itu lebih masuk akal. :)

Daftar putar berdasarkan variabel template dapat dipicu dari tampilan daftar putar sekarang. Langkah-langkah berikut harus diikuti untuk memulai daftar putar:

Klik Daftar Putar:
screen shot 2015-09-30 at 10 59 44 am

Anda akan melihat tampilan Daftar Putar berikut dengan opsi tambahan untuk memilih jenis daftar putar:
screen shot 2015-09-30 at 10 59 50 am
Semuanya berfungsi sama untuk daftar putar berdasarkan dasbor.

Sekarang untuk daftar putar berdasarkan variabel templat, Anda harus memilih "variabel" dari menu tarik-turun:
screen shot 2015-09-30 at 11 07 37 am

Kemudian Anda akan mencari dasbor yang Anda perlukan untuk menjalankan daftar putar berdasarkan variabel templatnya dan memilihnya:
screen shot 2015-09-30 at 11 00 13 am

Setelah Anda memilih dasbor, secara otomatis daftar variabel template akan ditampilkan:
screen shot 2015-09-30 at 11 00 16 am

Sekarang langkah selanjutnya adalah memilih variabel templat yang ingin Anda gunakan untuk menjalankan daftar putar, dan klik Mulai:
screen shot 2015-09-30 at 11 00 44 am

Dan ini dia daftar putar berdasarkan variabel template:
screen shot 2015-09-30 at 11 00 51 am
screen shot 2015-09-30 at 11 00 58 am

Beri tahu saya pendapat Anda tentang perubahan tampilan daftar putar ini.

kelihatan bagus

+1

+1, ada berita tentang fitur ini @utkarshcmu ?

@evandro-portugal Saya menerapkan fitur daftar putar untuk grafana tetapi tidak digabung sebelumnya. Saya pikir sekarang saya harus mengulang beberapa pekerjaan karena kodenya telah banyak berubah.

@utkarshcmu benar, di mana saya bisa mendapatkan kode terakhir Anda untuk ini? Saya ingin melihat dan mencoba melakukan sesuatu untuk saya, dalam kasus saya ini adalah prioritas tinggi dan saya hanya perlu membuat variabel mengubah posisi di akhir setiap siklus, maka saya bisa melakukan sesuatu sampai kami mendapatkan cabang Anda digabung

@evandro-portugal
Ini kode lama:
Silakan buka cabang Grafana saya - https://github.com/justforkit/grafana
Dan coba buat Grafana dari cabang "variable-playlist"

@utkarshcmu , terima kasih, saya akan melihat kodenya, apakah Anda berencana untuk mengerjakan ulang kodenya? Selain itu, saya dapat membagikan pekerjaan saya jika saya memperbaikinya untuk cabang master grafana yang sebenarnya, yang saya gunakan sekarang. Saya akan memiliki beberapa liburan sekarang (karnaval di sini) dan berencana untuk bermain dengannya

@evandro-portugal Tentu, lanjutkan dan kerjakan ulang jika Anda mau. Saya tidak berencana untuk mengerjakannya setidaknya selama seminggu di sini. Nikmati Karnaval. :)

@torkelo Bisakah fitur ini digabungkan menjadi core grafana? Ini tampaknya merupakan peningkatan yang sangat berguna untuk memainkan dasbor yang sama dengan variabel template yang berbeda.

Juga, jika @bergquist / @torkelo setuju untuk menggabungkan fitur ini, saya dapat mengerjakan ulang kode PR saya sebelumnya agar kompatibel dengan kode Grafana terbaru.

@digrich apa maksudmu digabungkan? Ini bukan PR :)

Saya mencoba merujuk PR lama @utkarshcmu (#2841) tetapi seperti yang dia sebutkan di komentar terakhirnya, dia harus mengerjakan ulang dan mengirimkan PR baru.

+1

Hai @torkelo . Sambil menunggu fitur yang berguna ini, saya ingin mencari solusi apa pun.

Mungkinkah membangun sesuatu seperti daftar putar berdasarkan dasbor skrip?

Dasbor skrip ini harus dapat memuat dasbor templat lain dan meneruskan variabel dalam beberapa cara, dari url mungkin?

+1

Apakah ada berita tentang ini mengingat sudah setengah tahun?

Tidak ada berita :(

Sepertinya saya perlu meluangkan waktu untuk permintaan fitur ini!

+1

+1

+1

+1

Karena Anda dapat meneruskan variabel melalui URL, solusi sementara saya adalah iframe carousel/rotator html page sederhana ini , yang saya sebut sebagai carousel Dasbor Grafana.

Anda hanya perlu menentukan array BASE_URL dan dashboards_list , yang berisi dasbor yang ingin Anda tampilkan.

Ini adalah pertanyaan yang sedikit tidak terkait tetapi apakah ada cara untuk hanya memiliki tombol Host "berikutnya"/"sebelumnya" (atau benar-benar variabel templat) di dasbor?
Ketika saya ingin menggulir secara manual seluruh rangkaian host menggunakan dropdown menjadi sangat rumit.

Ada tindakan di sini? Semua dasbor kami memiliki templat - jadi tanpa fitur templat / kemungkinan untuk melewati berbagai fitur daftar putar sebagian besar tidak dapat digunakan oleh kami.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1, @utkarshcmu Apakah Anda masih mengerjakan ini? Saya akan mencoba jika tidak, tetapi saya cukup baru dalam pengembangan grafana

@thattolleyguy - Silakan sobat, saya tidak mengerjakan ini lagi untuk sekarang.

+1
Saran karena dashboard lebih panjang, bisa auto-scroll juga. Jika tidak, sebagian besar panel tetap tersembunyi di daftar putar (di TV)

+1

+1

+1

Ada kabar tentang fitur ini?

Ini sangat menakjubkan bahwa pekerjaan seperti itu dibuang ke tempat sampah.

Saya belum sempat mengerjakan ini. Saya juga tidak terlalu akrab dengan kode grafana jadi jika orang lain tertarik, silakan ambil. Jika tidak, saya akan menusuknya ketika saya punya waktu.

+1

+1

+1

@torkelo Adakah peluang untuk memasukkan ini ke dalam rilis mendatang? Akan sangat menyenangkan untuk dapat membiarkan tim melakukan rotasi melalui semua aplikasi yang mereka operasikan.

@davidkarlsen tidak ada permintaan tarik untuk fitur ini dan kami dalam versi beta sehingga sangat tidak mungkin. Permintaan fitur tidak diimplementasikan kecuali seseorang mengerjakannya, dan tidak mengetahui ada orang yang mengerjakannya.

Ah - saya agak cepat - sepertinya https://github.com/grafana/grafana/pull/2841 sempat jauh tapi kemudian ditinggalkan ;-(

+1

+1

+1

+1

+1

bagaimana dengan menggunakan string kueri dasbor PLUS di daftar putar?
Ini akan "secara otomatis" menambahkan semua vars DAN rentang waktu.

Dalam contoh saya ini akan menjadi
?orgId=1&var-DATACENTER=dc1&var-FQDN=All&from=now-2d&to=now

apa yang terjadi ... butuh hampir 4 tahun dan fitur tidak menambahkan kode master ..... itu sangat konyol

Itu WAJIB PUNYA!

+1

Saya tidak mengerti mengapa fitur seperti itu masih belum dirilis ....

+1

+1

Ada kemajuan pada fitur ini? Ini harus dimiliki. Tanpa ini, daftar putar hampir sama tidak bergunanya, setidaknya dalam kasus saya.

Saya juga ingin melihat fitur ini - saat ini saya harus menduplikasi dasbor untuk ini

Sama seperti di atas, saya harus menduplikasi beberapa Layar hanya untuk membuat daftar putar dapat digunakan. Fitur ini akan sangat bagus.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

Melihat betapa menariknya fitur ini, sayang sekali tidak ada kemajuan.
@costimuraru @utkarshcmu , Apakah Anda tahu status permintaan ini? Haruskah kita mempertimbangkan untuk menunggu fitur ini, atau haruskah kita mencari alternatif?

Hanya menimpali untuk mengatakan bahwa kami benar-benar ingin fitur ini digabungkan juga!

Saya akan mencobanya lagi bulan ini!

Solusi jika Anda perlu menampilkan beberapa dasbor dengan params adalah dengan membuat file html yang menampilkan dasbor di iframe dan memutarnya dengan skrip JS sederhana. Inilah yang saya gunakan untuk memutar dasbor grafana di raspi saya.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Grafana dashboard rotator</title>

    <style>
        #title {
            position: fixed;
            right: 20px;
            top: 10px;
            color: rgba(255, 0, 0, 0.5);
            background-color: rgba(0, 0, 0, 0.7);
            padding: 10px;
            font-weight: bold;
            font-size: 6em;
            font-family: sans-serif;
            margin: 0;
        }

        body,
        html {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            position: relative;
        }

        iframe {
            width: 100%;
            height: 100%;
            border: 0;
        }

        #timer {
            position: fixed;
            bottom: 10px;
            right: 20px;
            color: rgba(255, 0, 0, 0.5);
            background-color: rgba(0, 0, 0, 0.7);
            padding: 10px;
            font-weight: bold;
            font-size: 2em;
            font-family: sans-serif;
            margin: 0;
        }
    </style>
</head>

<body>

    <h1 id="title"></h1>
    <iframe x-name="SLA PROD EU" src="https://mygrafana.example.com/services-availability?orgId=1&var-ds=Graphite-EU&var-env=prod-eu&var-package=cds-red-bull-high-touch&var-service=All&refresh=30s&from=now-1h&to=now"></iframe>
    <iframe x-name="SLA PROD US" src="https://mygrafana.example.com/services-availability?services-availability?from=now-1h&orgId=1&refresh=30s&to=now&var-ds=Graphite&var-env=prod&var-package=cds-cds&var-service=All"></iframe>
    <iframe x-name="REQUESTS EU" src="https://mygrafana.example.com/services-details?orgId=1&from=now-24h&to=now&var-ds=Graphite-EU&var-env=prod-eu&var-service=All&refresh=30s"></iframe>

    <small id="timer"></small>
    <!-- ROUND ROBIN SCRIPT -->
    <script>

        ; (function (globals) {

            //UMD
            if (typeof define !== 'undefined' && define.amd) { //require.js / AMD
                define([], function () {
                    return rr
                })
            } else if (typeof module !== 'undefined' && module.exports) { //CommonJS
                module.exports = rr
            } else { //script / browser
                globals.rr = rr
            }

            function rr(arr, lastIndex) {
                if (!Array.isArray(arr)) throw new Error("Input is not an array.")
                if (arr.length === 0) return null

                if (arr._rr == null) {
                    arr._rr = 0
                    return arr[0]
                }

                if (arr.length === 1)
                    return arr[0]

                if (typeof lastIndex == 'number')
                    arr._rr = lastIndex

                //is outside of range?
                if (arr._rr >= arr.length - 1 || arr._rr < 0) {
                    arr._rr = 0
                    return arr[0]
                } else {
                    arr._rr += 1
                    return arr[arr._rr]
                }
            }

            rr.splice = function (arr, idx, len) {
                if (!Array.isArray(arr)) throw new Error("Input is not an array.")
                if (arr.length === 0) return

                arr.splice(idx, len);

                if (arr._rr == null) {
                    arr._rr = 0
                    return;
                }

                if (arr._rr >= idx)
                    arr._rr -= 1
            }

            rr.spliceCurrent = function (arr, len) {
                rr.splice(arr, arr._rr, len)
            }

        })(this);
    </script>


    <!-- ROTATOR -->
    <script>
        const interval = 10000; //dashboard switch interval
        const initializingTime = 60000; //initializing time
        const iframes = document.getElementsByTagName('iframe')
        const arr = [...iframes];
        let last = null;

        let count = initializingTime / 1000;
        document.getElementById('title').innerText = `Initializing... (${count}s)`

        const initializingTimer = setInterval(() => {
            count = count > 0 ? count -= 1 : 0;
            document.getElementById('title').innerText = `Initializing... (${count}s)`
        }, 1000)


        let switcherTimer;
        const switcher = () => {
            if (switcherTimer) {
                clearInterval(switcherTimer);
            }

            let count = interval / 1000;
            switcherTimer = setInterval(() => {
                count = count > 0 ? count -= 1 : 0;
                document.getElementById('timer').innerText = `(${count}s)`
            }, 1000)

            const curr = rr(arr)
            curr.scrollIntoView();
            document.getElementById('title').innerText = `${curr.attributes['x-name'].value} (${arr._rr + 1}/${arr.length})`
        }

        setTimeout(() => {
            clearInterval(initializingTimer);

            document.getElementById('title').innerText = `${arr[0].attributes['x-name'].value} (1/${arr.length}) `

            switcher();
            setInterval(switcher, interval)

        }, initializingTime /*give dashboards some time to load*/)

    </script>


    <script>
        //Interval to refresh whole page once per 2 hours. To prevent memory leaks.
        setInterval(() => {
            window.location.reload()
        }, 7200000)
    </script>

</body>

</html>

Anda dapat mengatur url dasbor tertentu di atribut src iframe.

    <iframe x-name="SLA PROD EU" src="https://mygrafana.example.com/services-availability?orgId=1&var-ds=Graphite-EU&var-env=prod-eu&var-package=cds-red-bull-high-touch&var-service=All&refresh=30s&from=now-1h&to=now"></iframe>

Interval rotasi diatur dalam milis di const interval = 10000 .
Tentu saja Anda juga dapat menambahkan lebih banyak iframe.

5 tahun terbuka, apakah kode ini akan dirilis?

Berharap untuk melihat ini di 6, jujur ​​.. :)

+1 lain, ada pembaruan tentang ini?

:cake: untuk peringatan 5 tahun terbitan ini.

Bisakah kita mendapatkan pembaruan?

Hai, ini fitur yang sangat penting, apakah ada pembaruan tentang ini?

Saya cukup yakin ini tidak akan pernah terjadi

Saya ingin menggunakan grafana untuk memantau sekitar 30 server menggunakan satu template dahboard.
Tanpa ini saya harus mengubah 30 template setiap kali saya ingin memperbarui template saya.

Opsi ini akan sangat berguna

:) Di dunia microservice, akan sangat sulit untuk memiliki dasbor per layanan .. opsi ini akan sangat berguna dan mudah untuk memantau layanan kami daripada memiliki puluhan dasbor hanya untuk dapat menampilkannya di daftar putar.

Akan menjadi fitur yang sangat berguna.

+1

+1 - Akan menjadi fitur yang berguna

+1

+1

+1; ini statusnya apa?

+1

+1

+1

+1

+1

+1
Ini akan sangat berguna memang .. sedih permintaan ini sudah 5 tahun

+1

+1 untuk ini.

Juga akan lebih baik jika Anda dapat memiliki kaitan ke penemuan layanan Prometheus sehingga $instance dapat diisi dan diperluas secara otomatis dalam daftar putar. Dengan begitu, saat instance aktif / offline, instance tersebut akan otomatis ditambahkan / dihapus dari daftar putar.

Ini akan menjadi fitur yang sangat berguna juga untuk mode Kios.

+1

Adakah yang bisa memberi tahu saya jika fitur ini telah ditambahkan?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat