Grafana: Grafik: Batas skala otomatis Y (min maks)

Dibuat pada 24 Okt 2014  ·  46Komentar  ·  Sumber: grafana/grafana

Saya mendapatkan grafik yang menampilkan tingkat kesalahan, dan saya telah menetapkan sumbu maks ke auto . Masalahnya adalah bahwa pada hari-hari tenang, dengan tingkat kesalahan yang rendah, porosnya menyusut ke bawah untuk menampilkan titik-titik kecil seperti pegunungan besar. Saya bisa menyetel maks ke nilai tertentu. Tapi, saya tidak ingin membidik rendah dan mengalami grafik yang keluar dari grafik. Dan, saya tidak ingin menyetel maks terlalu tinggi agar tidak mendapatkan grafik "sedang" yang dapat dibaca. (Saya tidak ingin menggunakan ambang batas, karena saya memiliki grafik di sumbu lain, dan saya tidak ingin membuat bingung dengan rentang tersebut.)

Solusi yang ideal adalah dengan memiliki pengaturan "min-max". Saya bisa menyetel min-max ke 100, dan sumbu tidak akan pernah lebih kecil dari itu. Tapi, itu akan tumbuh jika perlu.

arepanegraph help wanted prioritnice-to-have typfeature-request

Komentar yang paling membantu

Dari hampir 2 tahun yang lalu:

mengembalikan fitur tersebut sambil menunggu waktu untuk mencari tahu UI

Harap kembalikan > dan < sementara UI yang lebih baik dipertimbangkan.

Semua 46 komentar

Terima kasih, ide yang menarik. Tampaknya kasus tepi kecil. Tapi saya setuju, sewaktu-waktu bisa bermanfaat.

Ya, saya hanya ingin menuangkan pikiran saya di atas kertas. :Bir:

Saya tidak berpikir ini adalah kasus tepi.
Setel AutoScale. Tetapkan 0-100 sebagai rasio minimum tetapi biarkan grafik berskala sebesar yang diinginkan. Hal ini telah menyebabkan kepanikan beberapa kali di antara Direktur dan Wakil Presiden sampai saya meminta mereka melihat skalanya.

+1 Banyak data deret waktu yang saya visualisasikan dalam grafana berada pada nol + derau, dan ini membuat grafik terlihat berantakan dan tidak jelas.

+1 dari pengguna Grafana.net.

Skala minimum akan membantu untuk hal-hal seperti antarmuka jaringan, di mana beberapa tautan privat / vpn kami tidak aktif (~ 20kb / dtk) tetapi saat digunakan adalah 50-100Mb / dtk. Jika saya mengatur skala ke 100Mb / s dan selesai, saya tidak tahu dan jika saya mengaturnya ke 200Mb / s maka saya tidak dapat melihat data dengan jelas ketika hanya 5-10Mb / s.

Saya memahami bahwa fungsi ini mungkin hanya berguna untuk sedikit orang. Tapi saya telah meretas ini sedikit. Dan saya telah menemukan sesuatu yang berhasil untuk saya. Komit di garpu saya menambahkan kotak Y-Span ke tab Sumbu.

Dimana X adalah integer atau float:

~X Span X around average
=X Span X around current value
>X Span is atleast X
<X Span is clamped to X

https://github.com/thoj/grafana/commit/7dcdccbd42e9f63b7388e439f7194fe7ead8039a

Contoh mengapa saya membutuhkannya:
y-span

Tertarik dengan PR?

@thoj Itu akan menjadi tambahan yang bagus. Kami menggunakan ambang untuk beberapa grafik dan ingin selalu menampilkannya, namun tetap menskalakan grafik untuk menunjukkan titik yang jauh lebih tinggi daripada ambang. "> X" akan bekerja dengan baik di sini (dan

@lpal Ya! Saya akan menambahkan permintaan tarik untuk mencoba memulai diskusi,

Apakah ini dalam rangkaian rilis 4.0.x? Saya mencoba menggunakan "<" dan ">" dalam pengaturan sumbu Y tetapi tidak berhasil.

tidak perlu mengembalikannya, kami menginginkan input / UI yang lebih ramah pengguna daripada hanya fitur tersembunyi yang bidang inputnya mendukung ekspresi seperti > dan < sehingga mengembalikan fitur tersebut dalam menunggu waktu untuk mencari tahu UI

Bisakah kita memiliki ini di dropbox selain Y-min dan Y-max?

Hai,

Saya membuat fitur ini untuk proyek grafit beberapa waktu lalu dan sampai pada kesimpulan berikut bahwa saya tidak akan pernah ingin menggunakan yMax , karena saya selalu ingin mengetahui nilai grafik, yang tidak akan saya lakukan dengan
Adakah orang yang berpikir bahwa yMax adalah fungsi yang berguna atau haruskah yMax hanya didesain ulang untuk berfungsi sebagai minYMax ?

Maksud saya, jika saya menetapkan yMax ke x dan penghitungnya melebihi x, apakah ada yang tidak ingin melihat seberapa banyak itu melebihi batas?

Saya menggunakan yMax ketika saya memiliki persentase untuk memastikan bahwa 100% selalu tepat di atas grafik (bahkan jika ada gangguan kecil)

Saya juga membutuhkan yMax. Hal ini disebabkan oleh beberapa sinyal berisik yang memiliki lonjakan sangat tinggi yang mengubah grafik.

@iksaif ya, tapi itu seharusnya tidak mengharuskan yMax diperbaiki. Karena grafik Anda tidak akan pernah melebihi 100% dan dinamika yMax Anda akan menjadi 100% grafik Anda akan terlihat persis sama dengan implementasi yMax saat ini ?

@thoj yang tidak terdengar seperti metrik yang dapat diandalkan? Bukankah Anda ingin lonjakan tersebut dikecualikan dari grafik atau jika Anda peduli tentang mereka benar-benar mengetahui nilainya?

@Kvistian mereka akan, itu terjadi, karena alasan, yang menampilkan 100,02%, dan saya suka fakta bahwa saya dapat menutupinya.

Juga ada kalanya saya hanya ingin melihat ketika saya ingin "memperbesar" dan saya dapat menggunakan yMax untuk melakukannya.

Oke, tetapi Anda setuju bahwa sebagian besar kasus memerlukan yMax dinamis? Dalam hal ini, apakah masuk akal untuk membuat yMax dinamis dan fungsi baru seperti staticYMax atau fixedYMax untuk kasus edge tersebut? Jadi, memiliki yMax dinamis sebagai default karena itu kasus penggunaan umum.

Kedengarannya seperti mengatur batas bawah dari atas grafik dapat berguna tetapi saya tidak akan mengubah semantik dari yMax yang ada (yang, sebenarnya adalah maksimum y yang dapat ditampilkan).

Akan menarik untuk menemukan bagaimana hal ini dinamai di perangkat lunak serupa lainnya

@Kvistian Tidak semua orang ingin menggunakan grafana hanya untuk menampilkan metrik bersih yang bagus dari server. Saya ingin menampilkan metrik dari proses fisik yang berisik dan terkadang dapat mengembalikan data aneh. Lihat contoh dan penjelasan saya di sini: https://github.com/grafana/grafana/pull/5720

@thoj Saya tidak menyarankan untuk menghapusnya jika itu fitur yang berguna, saya hanya mempertanyakan apakah itu. Tapi sepertinya ada beberapa kasus penggunaan untuk itu, jadi dalam kasus itu tidak boleh dihapus. Tapi secara pribadi saya merasa seharusnya ada lebih banyak kasus di mana Anda menginginkan yMax dinamis. Ketika saya menemukan masalah dengan grafit, saya benar-benar berasumsi bahwa yMax akan menyelesaikan masalah saya (karena saya tidak dapat melihat kasus yang berguna untuk yMax statis yang sebenarnya). Pada akhirnya itu hanya masalah penamaan pada saat ini.

Saya tidak terlalu peduli apakah itu disebut yMax atau minYMax , hanya berpikir bahwa yMax terasa lebih seperti fungsi default yang seharusnya menyelesaikan kasus penggunaan yang paling umum.

Saya menampilkan nilai status pengisian daya baterai (SOC) dan akan sangat menyukai fitur yang dapat menetapkan batas atas dan bawah sambil mempertahankan penskalaan otomatis dalam batas ini.

Berikut adalah beberapa gambar dari masalah yang saya hadapi dengan menyetel atau tidak menyetel nilai Y-Max.

Jika saya _tidak_ menyetel nilai Y-Max maka grafik menunjukkan nilai SOC pada skala Y> 100% yang tidak akan pernah terjadi. Dengan kata lain, dalam kasus status pengisian baterai:

0% <= y_scale_values <= 100%

screen shot 2017-02-07 at 21 31 01

Jika saya _do_ menetapkan nilai Y-Max, maka ketika saya memiliki nilai SOC rendah untuk waktu yang lama grafik tidak melakukan skala otomatis, seperti yang ditunjukkan pada gambar di bawah ini.
screen shot 2017-02-07 at 21 29 35

Yang saya inginkan adalah dapat menetapkan batas atas (100%) dan bawah (0%) tetapi masih memiliki skala otomatis plot dalam batas ini seperti yang terjadi pada saat batas Y tidak ditetapkan.

Hanya menambahkan kasus penggunaan kami. Kami memantau situs web dan memiliki tingkat dasar lalu lintas pemeriksaan kesehatan untuk contoh 'yang berfungsi', yang ingin saya tampilkan sebagai garis grafik 'rendah' ​​secara grafis (misalnya 0,1 permintaan / detik tetapi sumbu akan minimal 1, sementara masih memungkinkan sumbu grafik untuk meningkatkan skala saat lalu lintas 'nyata' tiba.

Ada peretasan untuk memiliki nilai sumbu Y maksimum minimal.

Buat metrik Baseline untuk skala minimal yang Anda inginkan. Di sini saya memilih 1s untuk waktu CPU:

image

Tambahkan penggantian untuk metrik dasar agar hilang dari grafik:

image

Itu dia.

Satu-satunya kelemahan adalah Anda dapat melihat garis dasar Anda mengarahkannya:

image

Saya juga membutuhkan ini untuk tampilan IO.

misalnya kecepatan baca bisa 50kb / mnt atau 500MB / mnt, menyetel beberapa skala minimum - misalnya 100MB / mnt sebagai default akan membuat grafik saya lebih konsisten.

+1
Silahkan?

@dstensnes Harap jangan tinggalkan komentar dalam bentuk ini pada masalah GitHub. Anda dapat menambahkan reaksi ke posting awal untuk menunjukkan bahwa Anda menyukai fitur ini. Saat Anda mengomentari +1, semua orang yang mengikuti masalah ini mendapatkan email pemberitahuan tanpa info yang relevan. Itu bentuk yang buruk.

Oke, saya bisa hidup dengan itu :) Apakah ada yang pernah melihat reaksinya? Saya perhatikan sekarang bahwa Anda dapat mengurutkan jumlah reaksi, jadi itu setidaknya sesuatu. Terima kasih

Saya rasa sebagian besar kasus penggunaan orang akan tercakup dengan menambahkan kotak centang "batas lunak" di sebelah bidang Y-Min dan Y-Max. Jika Anda memindahkan Y-Max ke baris berikutnya, seharusnya ada cukup ruang untuk kotak centang dan label, dan fungsinya sudah cukup jelas :)

Saya tidak yakin bagaimana hal ini dapat dianggap sebagai kasus tepi, aplikasi utama yang kami miliki adalah lalu lintas jaringan tetapi pada sebagian besar grafik Anda tidak ingin melihat nilai kecil yang ditampilkan sebagai "pegunungan".

apakah saat ini ada solusi untuk melakukan itu?

Ada pembaruan untuk ini? Ini membuat pengaturan dasbor yang baik menjadi sangat sulit.

Salah satu ide UI adalah memiliki:

  • YMax (lunak) - Bagian atas grafik selalu meluas setidaknya di sini
  • YMax (hard) - Grafik teratas tidak pernah melampaui sini
  • YMin (lunak) - Bagian bawah grafik selalu meluas hingga setidaknya di sini
  • YMin (hard) - Bagian bawah grafik tidak pernah melampaui sini

Pengambilan lain yang satu ini bisa menjadi rentang minimum untuk sumbu Y yang menentukan bahwa rentang dari Y-rendah ke Y-tinggi saat ini tidak boleh kurang dari nilai yang diberikan. Dengan cara itu render bebas untuk mengatur di mana sumbu y harus dimulai dan diakhiri - dan pada saat yang sama menghindari perubahan kecil pada nilai yang akan dirender sebagai pegunungan.

Saya juga menemukan bahwa ini adalah masalah yang sangat umum dengan data yang berisik dan sebagian besar data berisik.

Saya pikir masalah sebenarnya adalah bahwa nilai-nilai pencilan memiringkan skala sumbu Y membuat segalanya menghilang. Cara saya melihat solusi yang tepat adalah dengan memungkinkan rentang sumbu Y menjadi dinamis berdasarkan data yang ditampilkan sambil memangkas nilai pencilan yang ekstrim. Cara terbaik untuk melakukannya adalah dengan mendasarkan kisaran pada deviasi standar dari rata-rata data yang ditampilkan. Misalnya, jika menetapkan 1 deviasi standar daripada apa pun yang lebih dari 1 deviasi standar di atas rata-rata akan dipangkas pada grafik. Keduanya mudah dikonfigurasi, dapat dihitung dengan mudah di sisi klien, sehingga tidak bergantung pada sumber data dan cukup mudah dipahami orang.

Dari hampir 2 tahun yang lalu:

mengembalikan fitur tersebut sambil menunggu waktu untuk mencari tahu UI

Harap kembalikan > dan < sementara UI yang lebih baik dipertimbangkan.

Saya sangat menunggu fitur seperti yang telah dihapus 2 tahun yang lalu!

Bagan dengan kerangka genap yang memantau metrik yang sama pada sistem yang berbeda, secara berdampingan memberikan visual yang tidak akurat karena skala disesuaikan secara otomatis secara independen hanya berdasarkan data saat ini pada bagan.

Ada peretasan untuk memiliki nilai sumbu Y maksimum minimal.

Buat metrik Baseline untuk skala minimal yang Anda inginkan. Di sini saya memilih 1s untuk waktu CPU:

image

Tambahkan penggantian untuk metrik dasar agar hilang dari grafik:

image

Itu dia.

Satu-satunya kelemahan adalah Anda dapat melihat garis dasar Anda mengarahkannya:

image

Bagi mereka yang membaca cara kerja @bobrik yang bermanfaat, akhir-akhir ini Anda juga dapat menyembunyikan item baseline dari tooltips di timpa juga.
image

@bobrik @ sb3tcs Hai, Saya ingin menggunakan solusi Anda, tetapi Grafana berakhir dengan kesalahan sintaks kueri jika semua yang saya masukkan ke dalam kueri hanya 20 atau angka lain. Bagaimana cara membuat metrik dasar? Atau Grafana 5.1 saya terlalu tua untuk mendukung jenis kueri ini?

Saya menggunakan beberapa fungsi yang dirantai pada kueri kedua untuk mencegah grafik diperbesar terlalu banyak pada sumbu y.
Dalam contoh ini saya grafik pengguna login dari beberapa server dalam satu grafik.

Saya menambahkan kueri tambahan dengan poin data yang sama:
offset (-20) aggregateBy (1m, min) removeBelowValue (0) setAlias ​​(hidden_min)

Ini mengubah zoom dinamis dari
min hingga maks
untuk
min-20 (sementara tidak akan negatif) hingga maks

Untuk menyembunyikan grafik palsu:
visualisasi menimpa dengan regex "/hidden_.*/"
Garis: salah
Legenda: salah
Sembunyikan di tooltip: true

Anda bahkan mungkin dapat menyinkronkan sumbu y antara beberapa grafik. Seperti panel per server dan kumpulkan min / maks dari titik data semua server di setiap panel.

Saya menemukan solusi lain. Saya baru saja menambahkan rangkaian waktu min dan maks dengan tag min dan maks. Garisnya seperti ini
weather,sensorID=min temperature=0
weather,sensorID=max temperature=20
Mereka ditambahkan ke grafik dan disembunyikan seperti yang disebutkan di atas. Satu-satunya masalah adalah Anda perlu menyuntikkannya secara teratur.
Begini tampilannya, mungkin perlu mengatur suhu maksimal ke 19 sehingga otomatis menyesuaikan sumbu menjadi 20.

Unbenannt

Edit: masukkan maks 19 dan berhasil.

Saya menemukan utas ini mencari solusi untuk mengatur y-max fleksibel di Grafana. Untuk kasus penggunaan saya, saya membuat grafik latensi permintaan dan volume untuk API. Saya ingin menyetel y-max fleksibel menjadi sekitar 500 ms (.5 detik), sehingga saya dapat lebih melihat nuansa panggilan latensi rendah dengan mengecualikan pencilan runcing dan otomatis menyesuaikan y-max ketika latensi maksimum di bawah ambang itu.

Saya mencoba menyetel: y-min ke 0 dan y-max ke <.5, tapi kemudian sumbu y saya menghilang seluruhnya atau mengabaikan y-min. Masalah ini terjadi terlepas dari grafik latensi dan kueri volume permintaan secara bersamaan / terpisah. Apakah ada kemajuan baru dalam masalah ini? Ini akan sangat bermanfaat bagi tim saya.

Saya menyertakan beberapa tangkapan layar grafik saya dengan y-max dikonfigurasi secara berbeda (setiap kasus diberi label oleh judul grafik)
Screen Shot 2020-05-27 at 2 44 03 PM
Screen Shot 2020-05-27 at 2 42 56 PM
Screen Shot 2020-05-27 at 2 42 19 PM
Screen Shot 2020-05-27 at 2 41 39 PM

jika Anda tidak ingin membuat grafik nilai di atas 500 md, Anda dapat mencoba menggunakan removeAboveValue (0,5)
kemudian beri tahu grafik bagaimana nilai nol harus ditangani

tidak ada petunjuk apakah ada cara untuk menggunakan parameter terhitung untuk fungsi ini

Solusi dasar yang sedikit lebih mutakhir adalah sebagai berikut:

image

Ini menghentikan kueri garis dasar yang muncul di grafik, legenda, dan tooltip hover, dan juga mencegahnya menyebabkan masalah dengan penumpukan.

Ini bukanlah kasus tepi, melainkan kasus yang sangat umum. Saya benar-benar berpikir sangat sering bahwa seseorang menginginkan sumbu y dengan nilai min / max "lunak". Alasan utama untuk menyetel skala sumbu y adalah karena seseorang ingin menyelaraskannya dengan rentang data yang diharapkan, dan juga memiliki beberapa grafik dengan sumbu y yang disejajarkan sehingga seseorang dapat dengan mudah membandingkan nilai.

Akan menarik untuk menemukan bagaimana hal ini dinamai di perangkat lunak serupa lainnya

Highchartjs menyebutnya softMin / softMax.
https://api.highcharts.com/highcharts/yAxis

AnyChart menyebutnya soft min / max.
https://docs.anychart.com/Axes_and_Grids/Scales#soft

Chartjs memiliki opsi "SuggestMin / Max" untuk menangani kasus penggunaan ini.
https://www.chartjs.org/docs/latest/axes/cartesian/linear.html#axis -range-settings

amCharts menyebut mereka min / max dan strictMin / Max.
https://www.amcharts.com/docs/v4/reference/valueaxis/#strictMinMax_property

RRDtool misalnya memiliki batas "lunak" secara default ketika seseorang menggunakan skala otomatis, tetapi memiliki opsi yang disebut rigid yang memaksa batas "keras" pada skala.

[-u | --nilai batas atas] [-l | --nilai batas bawah] [-r | --rigid] [--allow-shrink]

Secara default, grafik akan melakukan penskalaan otomatis sehingga akan menyesuaikan sumbu y dengan rentang data. Anda dapat mengubah perilaku ini dengan menetapkan batasan secara eksplisit. Sumbu y yang ditampilkan kemudian akan berkisar setidaknya dari batas bawah ke batas atas. Penskalaan otomatis akan tetap mengizinkan batas-batas tersebut dilebarkan kecuali jika opsi kaku disetel. allow-shrink mengubah perilaku kaku dengan mengizinkan penurunan skala otomatis, grafik tidak akan melebihi batas yang ditentukan pengguna.
https://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.html

Tableau memiliki fitur untuk memungkinkan rentang sumbu seragam untuk semua baris atau kolom, dan Anda dapat memilih untuk hanya melakukannya untuk sumbu y, misalnya. Ini memecahkan masalah dengan cara yang sedikit berbeda, tetapi ini masih kasus penggunaan yang sama di mana seseorang ingin beberapa bagan memiliki rentang / skala sumbu yang sama.

Meskipun banyak pembahasan seputar hal ini berfokus pada penerapan nilai min kecil dan maks yang terpisah untuk penskalaan, saya rasa ada banyak nilai dalam menerapkan fitur "rentang sumbu y minimum" sebagai bagian dari ini, berbeda dari "lunak "min / maks, seperti yang disarankan poster asli. Soft minimum dan maximum akan digunakan untuk menentukan posisi tetap pada sumbu y yang harus selalu terlihat selama penskalaan otomatis. Ini dapat digunakan jika Anda memiliki rentang nilai sumbu y yang diketahui yang selalu ingin Anda lihat, yang berguna untuk mencegah varians kecil muncul sebagai puncak dan palung yang berlebihan karena efek zoom dari skala otomatis. Namun, ini hanya berfungsi jika Anda mengetahui nilai sumbu y pada waktu desain, yang tidak selalu terjadi, terutama untuk orang yang membuat template untuk digunakan oleh pengguna akhir yang mungkin memiliki perangkat keras dan pola pemuatan yang berbeda.

Opsi rentang sumbu y minimum untuk penskalaan otomatis akan menghapus persyaratan ini. Saat digunakan pada sekumpulan nilai di mana kisaran data (yaitu abs(max(Y)-min(Y)) ) tidak melebihi kisaran sumbu y minimum yang dikonfigurasi, nilai minimum dan maksimum pada sumbu y akan diatur sedemikian rupa sehingga datanya dipusatkan secara vertikal. Ini untuk menghindari masalah varians kecil yang berlebihan, tanpa desainer grafik perlu mengetahui nilai sumbu y yang tepat sebelumnya.

Sedikit pseudocode untuk mendemonstrasikan penghitungan:

minRange = 25
dataRange = abs(max(Y)-min(Y))
if dataRange < minRange:
    yAxisExtension = (minRange - dataRange) / 2
    yAxisMin = min(Y) - yAxisExtension
    yAxisMax = max(Y) + yAxisExtension

Pendekatan ini tidak akan mendorong pencilan keluar dari skala, seperti memusatkan pada mean.

Sebagai contoh kasus penggunaan, bayangkan Anda mendesain dasbor untuk memantau data dari NUT / upsd, dan Anda sedang menyusun grafik penggunaan daya. Sementara UPS saya mungkin rata-rata 400W, orang lain mungkin rata-rata 100W atau 1000W, tergantung pada seperti apa pengaturan perangkat keras mereka. Tidak mungkin mengetahui hal ini sebelumnya. Jumlah daya yang ditarik biasanya cukup konstan dalam skala waktu yang singkat, yang berarti bahwa daya cenderung berlebihan pada sumbu y saat penskalaan otomatis dilakukan. Ini adalah kasus penggunaan yang sempurna untuk rentang sumbu y minimum, di mana Anda dapat membuat asumsi yang masuk akal tentang skala varians selama periode waktu tertentu, tetapi bukan besaran nilai absolutnya.

Jika sebuah sensor memiliki resolusi terbatas, yang Anda lihat hanyalah derau kuantisasi ketika jumlahnya sangat sedikit berbeda dalam rentang waktu yang dipilih. Saya ingin melihat rentang-y minimum misalnya untuk tidak memperkuat noise kuantisasi ini terlalu banyak dalam grafik.
Dalam kasus rentang nilai y kecil di kedua sumbu y kiri dan kanan, alangkah baiknya untuk 'mendorong' bagian tengah sumbu y ke bagian atas dan bagian tengah sumbu y lainnya ke arah bawah setengah. Ini akan menekan persimpangan nilai-Y kiri / kanan yang tidak perlu. Tentu saja jika kedua sumbu Y menunjukkan kuantitas yang sama, sumbu tidak boleh didorong seperti itu, tetapi sudah ada opsi 'sinkronkan sumbu y'.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat