واسمحوا لي أن أقدم لكم مثالا بسيطا:
لدينا لوحة تحكم بها متغير $ HOST تم تكوينه.
لدينا رسم بياني يستخدم aws. $ HOST.request.count
عند النظر إلى لوحة القيادة ، يمكننا تحديد Host1 و Host2 وما إلى ذلك ، وعرض المقاييس المناسبة.
الآن ، سيكون من الجيد تحويل هذا إلى قائمة تشغيل بحيث تعرض grafana كل دقيقة المقاييس لكل مضيف.
تصبح الأمور أكثر تعقيدًا عندما يكون لدينا مرشحان أو أكثر. هناك مجموعة من التركيبات ، بعضها قد لا يكون ذا فائدة لمراقب لوحة العدادات.
لهذا السبب ، سيكون من الجيد أن يكون لديك طريقة لتحديد قائمة مجموعات عوامل التصفية / المتغيرات التي تهم المستخدم. ستنقل قائمة التشغيل بعد ذلك عبر هذه المجموعات وتعرض لوحة المعلومات بالمقاييس المناسبة.
سيكون من الجيد أيضًا إتاحة تحديد مجموعات مختلفة للنطاق الزمني أيضًا في قائمة التشغيل (على سبيل المثال ، آخر 6 ساعات ، آخر 24 ساعة وما إلى ذلك).
costimuraru اقتراحات جيدة جدا!
: +1: سيجعل ميزة قائمة التشغيل أكثر فائدة
: +1: هذه الميزة مطلوبة لأنك لا تملك تلك الشاشة الضخمة لوضع جميع الرسوم البيانية هناك.
: +1: في الواقع ، هذه الميزة ستكون رائعة لمشاريع مثل مشروعنا حيث لدينا العديد من لوحات المعلومات التي يمكن ضغطها في شاشة واحدة.
يبدو هذا مفيدًا جدًا بالفعل ، ولكنه أيضًا معقد جدًا ويستغرق وقتًا طويلاً لفضح الإعدادات المتغيرة والوقت في عرض قائمة التشغيل (وتنفيذ المنطق للتعامل مع هذه الإعدادات ومتغيرات الإعداد وما إلى ذلك عند تحميل / دورة لوحة القيادة). لذلك ستكون بالتأكيد ميزة ذات أولوية كبيرة في المستقبل ولكنها ليست شيئًا يمكن الضغط عليه لـ v1.8
شكرا torkelo واستمر في العمل الجيد!
: +1: سيكون من الرائع أن يكون لديك هذه الميزة
أثناء وجود هذا في قائمة انتظار dev - هل هناك طريقة لتحديد متغير القالب في عنوان url؟ يمكنني على الأقل استخدام امتداد متصفح للتدوير عبر مجموعة من عناوين url في الوقت الحالي.
rishid نعم ، باستخدام ?var-<variable_name>=value
+1 ، أنا أيضًا مهتم جدًا بطلب الميزة هذا
+1
+1
+1 مع القوالب ، هذا أمر لا بد منه.
العلاقات العامة قريبا جدا ...
costimuraru لقد نفذت قائمة تشغيل لمتغير واحد ، والآن أعمل على مجموعات متعددة المتغيرات. يجب أن يكون التنفيذ سريعًا. قد يكون تحديد نطاق زمني مختلف ميزة ترقية علاوة على ذلك. بالنسبة لهذا التكرار ، أقوم فقط بعمل قائمة تشغيل مجموعات متغيرة للقالب.
هذا رائع ، utkarshcmu !
هنا PR - # 2841 وبعض لقطات الشاشة:
انتقل إلى "النماذج" والآن من المفترض أن تتمكن من رؤية علامة التبويب "قائمة التشغيل" الجديدة تمامًا:
انقر فوق علامة التبويب قائمة التشغيل وستظهر لك الشاشة التالية مع جميع المتغيرات المدرجة.
اخترت متغيرين من أصل 3 ثم نقرت على "ابدأ". (السبب في أنني اخترت 2 هو أنني أريد تشغيل جميع مجموعات هذين المتغيرين مع الحفاظ على المتغير الثالث ثابتًا. يرجى ملاحظة: ستحصل المتغيرات الثابتة على قيمها المحفوظة الافتراضية).
يمكنك الآن أن ترى أنني احتفظت بالمتغير الأول الثابت وستبدأ قائمة التشغيل بكل التركيبات الممكنة للمتغيرين الثاني والثالث.
يرجى تقديم الملاحظات والتغييرات إذا لزم الأمر.
رهيبةutkarshcmu
عمل جيد! لست متأكدًا من وجود ميزة قائمة التشغيل كعلامة تبويب في إعدادات النموذج. يوجد بالفعل عرض لقائمة التشغيل ، يجب أن يكون إنشاء قائمة تشغيل للوحة معلومات نموذجية جزءًا من هذا العرض.
بالاتفاق مع
يمكن تشغيل قائمة التشغيل التي تستند إلى متغيرات النموذج من عرض قائمة التشغيل الآن. يجب اتباع الخطوات التالية لبدء قائمة التشغيل:
انقر فوق قائمة التشغيل:
سترى عرض قائمة التشغيل التالي مع خيار إضافي لاختيار نوع قائمة التشغيل:
كل شيء يعمل بنفس الطريقة لقوائم التشغيل بناءً على لوحات المعلومات.
الآن بالنسبة لقائمة التشغيل التي تستند إلى متغيرات النموذج ، تحتاج إلى تحديد "المتغيرات" من القائمة المنسدلة:
بعد ذلك سوف تبحث عن لوحة القيادة التي تحتاج إلى تشغيل قائمة التشغيل الخاصة بها بناءً على متغيرات القالب الخاصة بها وتحديدها:
بمجرد تحديد لوحة القيادة ، سيتم تلقائيًا عرض قائمة متغيرات القالب:
الآن الخطوة التالية هي تحديد متغيرات القالب التي تريد تشغيل قائمة التشغيل بها ، والنقر فوق ابدأ:
وهنا تذهب مع قائمة التشغيل بناءً على متغيرات القالب:
اسمحوا لي أن أعرف ما هو رأيكم يا رفاق بشأن هذا التغيير في عرض قائمة التشغيل.
تبدو جيدا
+1
+1 ، هل من أخبار حول هذه الميزة utkarshcmu ؟
@ evandro-portugal لقد قمت بتطبيق ميزة قائمة التشغيل لـ grafana ولكن لم يتم دمجها سابقًا. أعتقد الآن أنه يجب علي إعادة بعض الأعمال لأن الكود قد تغير كثيرًا.
utkarshcmu صحيح ، أين يمكنني الحصول على الرموز الأخيرة الخاصة بك لهذا؟ أود إلقاء نظرة ومحاولة القيام بشيء ما من أجلي ، في حالتي ، إنها أولوية عالية وأحتاج فقط إلى جعل المتغيرات تغير الموضع في نهاية كل دورة ، ثم يمكنني فعل شيء ما حتى نحصل على فرعك مندمجة
@ ايفاندرو البرتغال
هذا هو الكود القديم:
يرجى الانتقال إلى مفترق غرافانا الخاص بي - https://github.com/justforkit/grafana
وحاول بناء Grafana من فرع "قائمة التشغيل المتغيرة"
utkarshcmu ، شكرًا ،
@ evandro-portugal بالتأكيد ، تفضل وأعد العمل إذا كنت تريد ذلك. أنا لا أخطط للعمل هنا لمدة أسبوع على الأقل. استمتع بالكرنفال. :)
torkelo هل يمكن دمج هذه الميزة في الجرافانا الأساسي؟ يبدو أن هذا تحسين مفيد للغاية لتشغيل نفس لوحة القيادة بمتغيرات قالب مختلفة.
أيضًا ، إذا وافقتbergquist / torkelo على دمج هذه الميزة ،
digrich ماذا تقصد دمج؟ هذه ليست علاقات عامة :)
كنت أحاول الإشارة إلى العلاقات العامة القديمة الخاصة بـ utkarshcmu (# 2841) ولكن كما ذكر في تعليقه الأخير ، يجب عليه إعادة العمل وتقديم
+1
مرحبًا torkelo . أثناء انتظار هذه الميزة المفيدة ، أود البحث عن أي حل بديل.
هل يمكن إنشاء شيء مثل قائمة التشغيل بناءً على لوحة معلومات مكتوبة؟
يجب أن تكون لوحة القيادة النصية هذه قادرة على تحميل لوحات معلومات نموذجية أخرى وتمرير المتغيرات بطريقة ما ، ربما من عنوان url؟
+1
هل من أخبار عن هذا منذ نصف عام؟
لا أخبار :(
يبدو أنني بحاجة إلى قضاء بعض الوقت في طلب الميزة هذا!
+1
+1
+1
+1
نظرًا لأنه يمكنك تمرير المتغيرات عبر عنوان URL ، فإن الحل المؤقت الخاص بي هو صفحة iframe carousel / rotator html البسيطة ، والتي أسميها دائري Grafana Dashboards.
تحتاج فقط إلى تحديد المصفوفة BASE_URL
و dashboards_list
، والتي تحتوي على لوحات المعلومات التي تريد عرضها.
هذا سؤال غير ذي صلة إلى حد ما ولكن هل هناك طريقة للحصول على زر مضيف "التالي" / "السابق" (أو متغير نموذجي بالفعل) على لوحة المعلومات؟
عندما أرغب في التمرير يدويًا عبر مجموعة كاملة من المضيفين باستخدام القائمة المنسدلة ، يصبح الأمر مرهقًا للغاية.
أي إجراءات هنا؟ جميع لوحات المعلومات لدينا مقولبة - لذا فإن ميزات / إمكانيات النموذج غير القابل للتمرير تكون ميزة قائمة التشغيل غير قابلة للاستخدام إلى حد كبير بالنسبة لنا.
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1، utkarshcmu هل ما زلت تعمل على هذا؟ سآخذ طعنة في ذلك إذا لم يكن الأمر كذلك ، لكنني جديد تمامًا على تطوير grafana
tolleyguy -
+1
اقتراح لأن لوحات المعلومات أطول ، هل يمكننا التمرير التلقائي أيضًا. وبخلاف ذلك تظل معظم اللوحات مخفية في قائمة التشغيل (على التلفزيون)
+1
+1
+1
أي أخبار عن هذه الميزة؟
إنه لأمر مدهش أن يذهب مثل هذا العمل إلى سلة المهملات.
لم يكن لدي الوقت للعمل على هذا. أنا أيضًا لست معتادًا على كود grafana ، لذا إذا كان شخص آخر مهتمًا ، فلا تتردد في أخذه. إذا لم يكن الأمر كذلك ، فسأخذ طعنة عندما أحصل على الوقت.
+1
+1
+1
torkelo أي فرصة للحصول على هذا في الإصدار القادم؟ سيكون من الرائع جدًا أن تدع الفرق تدور في طريقها عبر جميع التطبيقات التي تشغلها.
davidkarlsen ، لا يوجد طلب سحب لهذه الميزة ونحن في مرحلة تجريبية ، وهذا أمر مستبعد جدًا. لا يتم تنفيذ طلبات الميزات ما لم يعمل عليها شخص ما ، وليس على علم بأي شخص يعمل على ذلك.
آه - لقد كنت سريعًا بعض الشيء - يبدو أن https://github.com/grafana/grafana/pull/2841 حصلت على شوط بعيد ولكن تم التخلي عنها بعد ذلك ؛- (
+1
+1
+1
+1
+1
ماذا عن استخدام سلسلة استعلام لوحة القيادة PLUS في قائمة التشغيل؟
سيؤدي هذا "تلقائيًا" إلى إضافة جميع المتغيرات والنطاق الزمني.
في المثال الخاص بي سيكون هذا
?orgId=1&var-DATACENTER=dc1&var-FQDN=All&from=now-2d&to=now
ما حدث ... استغرق الأمر ما يقرب من 4 سنوات والميزة لا تضيف رمزًا رئيسيًا ..... هذا سخيف للغاية
هذا أمر لا بد منه!
+1
لا أفهم لماذا لم يتم إطلاق هذه الميزة حتى الآن ...
+1
+1
أي تقدم في هذه الميزة؟ هذا أمر لا بد منه. بدون هذا ، تكون قوائم التشغيل جيدة تقريبًا مثل عديمة الفائدة ، على الأقل في حالتي.
أود أيضًا أن أرى هذه الميزة - أضطر حاليًا إلى تكرار لوحات المعلومات لهذا الغرض
كما هو مذكور أعلاه ، اضطررت إلى تكرار عدة شاشات فقط لجعل قائمة التشغيل قابلة للاستخدام. هذه الميزة ستكون رائعة.
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
بالنظر إلى مدى الاهتمام الذي تتمتع به هذه الميزة ، من العار أنه لم يتم إحراز أي تقدم.
costimuraruutkarshcmu، هل تعرف حالة من هذا الطلب؟ هل يجب أن نفكر في انتظار هذه الميزة أم يجب أن نبحث عن بدائل؟
فقط ادخل ليقول إننا نرغب حقًا في دمج هذه الميزة أيضًا!
سأجربها مرة أخرى هذا الشهر!
الحل البديل إذا كنت بحاجة إلى عرض لوحات معلومات متعددة مع المعلمات هو إنشاء ملف html يعرض لوحات المعلومات في إطارات iframes وتدويرها باستخدام نص JS بسيط. هذا ما أستخدمه لتدوير لوحات معلومات grafana على جهاز الراسبي الخاص بي.
<!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>
يمكنك تعيين عنوان url محدد للوحة التحكم في سمة 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>
تم تعيين الفاصل الزمني للدوران بالمللي في const interval = 10000
.
بالطبع يمكنك إضافة المزيد من إطارات iframe أيضًا.
العمل قيد التقدم: https://github.com/utkarshcmu/grafana/tree/playlist_enhancement
5 سنوات مفتوحة ، هل سيتم إصدار هذا الرمز في أي وقت؟
كنت أتمنى أن أرى هذا في 6 ، لأكون صادقًا .. :)
+1 آخر ، أي تحديث على هذا؟
: cake: للاحتفال بالذكرى السنوية الخامسة لهذا الإصدار.
هل يمكننا الحصول على تحديث؟
مرحبًا ، إنها ميزة مهمة جدًا ، هل هناك أي تحديثات على هذا؟
أنا متأكد من أن هذا لن يحدث أبدًا
أرغب في استخدام grafana لمراقبة حوالي 30 خادمًا باستخدام نموذج لوحة dahboard واحد.
بدون ذلك ، لا بد لي من تغيير 30 نموذجًا كل مرة أريد تحديثًا للقالب الخاص بي.
سيكون هذا الخيار مفيدًا جدًا
:) في عالم الخدمات المصغرة ، سيكون من الصعب جدًا أن يكون لديك لوحة تحكم لكل خدمة .. سيكون هذا الخيار مفيدًا جدًا وسهل مراقبة خدماتنا بدلاً من وجود العشرات من لوحات التحكم فقط لتتمكن من عرضها في قائمة التشغيل.
سيكون حقا ميزة مفيدة.
+1
+1 - ستكون ميزة مفيدة
+1
+1
+1 ؛ ما هو الوضع على هذا؟
+1
+1
+1
+1
+1
+1
سيكون هذا مفيدًا جدًا حقًا .. من المحزن أن هذا الطلب قد مضى عليه 5 سنوات بالفعل
+1
+1 لهذا.
سيكون من الجيد أيضًا أن يكون لديك ربط باكتشاف خدمة Prometheus بحيث يمكن ملء مثيل $ وتوسيعه تلقائيًا في قائمة التشغيل. بهذه الطريقة عندما تكون المثيلات في وضع التشغيل / غير متصل ، ستتم إضافتها / إزالتها تلقائيًا من قائمة التشغيل.
ستكون هذه ميزة مفيدة جدًا أيضًا في وضع Kiosk.
+1
هل يمكن لأي شخص أن يخبرني إذا تمت إضافة هذه الميزة؟
التعليق الأكثر فائدة
: cake: للاحتفال بالذكرى السنوية الخامسة لهذا الإصدار.
هل يمكننا الحصول على تحديث؟