تمت أرشفة هذا المستودع لصالح المكونات الإضافية المضمنة المتوفرة في إصدارات Grafana 9+: سجل الحالة والمخطط الزمني للحالة. يستخدم المجتمع هذه المكونات الإضافية كبدائل لخريطة الحالة المسطحة، راجع الإصدار رقم 302 لمزيد من المعلومات. إذا كنت تعتقد أن هذا البرنامج الإضافي يناسب احتياجاتك وترغب في مواصلة تطويره، فلا تتردد في إنشاء شوكة. نحن نحب أن نراكم تأخذ الأمر إلى أبعد من ذلك!
لوحة لإظهار الحالات المنفصلة لأهداف متعددة مع مرور الوقت.
قم بتشغيل
docker compose up
وافتح http://localhost:3000 في المتصفح لمشاهدة عرض توضيحي بسيط.
كانت لدينا حاجة ماسة لتصور مجموعة من حالات التسلسل الزمني على مدار فترة زمنية، حتى نتمكن من رؤية سجل التغييرات لحالة الكائنات. نظرًا لأننا نحتفظ بالكثير من مجموعات Kubernetes (والبنية التحتية ذات الصلة)، فإن حالاتنا الرئيسية لذلك هي تصور الخوادم وحالات صحة Kubernetes pods بالإضافة إلى فحوصات صحة خدمات HTTP. لقد جربنا مجموعة متنوعة من مكونات Grafana الإضافية المتاحة (وهي مدرجة في الشكر والتقدير أدناه) ولكن لم يتمكن أي منها من توفير الميزات والتصورات القريبة حقًا مما كنا نبحث عنه.
ملحوظة: يمكنك العثور على مزيد من التفاصيل حول رحلتنا لإنشاء المكون الإضافي في هذا المنشور.
قد تختلف الكائنات التي يتم تصورها باستخدام هذا البرنامج الإضافي: ليس فقط مكونات تكنولوجيا المعلومات (مثل مضيفي الخادم وكبسولات Kubernetes) ولكن أي شيء يمكنك تخيله مثل آلات صنع القهوة في الصورة أعلاه. يجب أن يكون لهذه الكائنات حالات منفصلة وهي عبارة عن مجموعات من القيم المحددة مسبقًا، على سبيل المثال، ok
= 0، off
= 1، fail
= 2، وما إلى ذلك.
لإنشاء رسوم بيانية أنيقة، يجب أن يعرض مصدر البيانات الخاص بك بيانات جيدة. يقوم البرنامج المساعد بضبط متغير $__interval
اعتمادًا على عرض المجموعة في خيارات اللوحة. يجب أن تقوم استعلاماتك بتجميع الحالات عبر $__interval
.
لجعل وضع القيم المتعددة يعمل كما هو متوقع، يجب عليك تحديد استعلامات متعددة: استعلام واحد لكل حالة محتملة.
لا يقوم البرنامج الإضافي بتجميع البيانات في الوقت المناسب في الوقت الحالي، بل يعرض فقط البيانات المدخلة كحاويات. وبسبب هذه البيانات، يجب أن تحتوي على نقاط لكل طابع زمني في النطاق الزمني وطوابع زمنية متساوية لكل هدف محتمل (تسمية المحور ص). تمت معالجة هذا القيد في الإصدار رقم 53.
للعمل مع البيانات من Prometheus، ستحتاج إلى إعداد حالات منفصلة لكائناتك. متطلبات تخزين هذه الحالات في المقاييس هي كما يلي:
0
و 1
؛عند الانتهاء من ذلك، يمكنك جمع كافة البيانات عبر الاستعلام، على سبيل المثال:
(max_over_time(coffee_maker_status{status=""}[$__interval]) == 1) *
إذا لم تكن هناك مثل هذه الحالة (
) أثناء الفاصل الزمني للاستعلام، فلن يُرجع Prometheus شيئًا. وإلا سيتم إرجاع قيمة الحالة.
على سبيل المثال، إذا كان لديك 5 أنواع من الحالات ومقياس ( coffee_maker_status
) مع 5 قيم مسموح بها ( 0
, 1
, 2
, 3
, 4
)، فيجب عليك تحويل هذا المقياس باستخدام القاعدة التالية:
- record: coffee_maker_status:discrete
expr: |
count_values("status", coffee_maker_status)
هذه هي الطريقة التي سيتم بها تحويل مقياس coffee_maker_status
ذو القيمة 3
إلى مقياس جديد:
coffee_maker_status:discrete{status="3"} 1
الآن، عندما يكون لدى Prometheus قيمتان 0
و 1
لكل حالة، يمكن تجميع كل هذه المقاييس، بحيث تحصل على جميع الحالات المتاحة لكائناتك بمرور الوقت.
اختر "سلسلة زمنية" لـ "التنسيق كـ" واستخدم GROUP BY ($__interval)
في الاستعلام. يمكن استخدام $tag_
في "الاسم المستعار بواسطة" لتحديد تسميات المحور الصادي.
مثال الاستعلام مع التجميع على $__interval
هو كالتالي (تحتاج إلى استعلام واحد لكل قيمة حالة محتملة):
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)
يتم استخدام العمود metric
كتسمية للمحور ص.
أولاً، يجب إنشاء استعلام فردي لكل قيمة حالة محتملة. يجب أن يحتوي كل استعلام أيضًا على وسيلة إيضاح مماثلة للتجميع:
بعد ذلك، يجب تحديد تعيين الألوان لقيم الحالة في وضع الألوان المنفصلة :
يمكن استخدام الإعدادات المسبقة لتحديد ألوان إشارات المرور أو 8 ألوان من اللوحة الشمسية:
ملحوظة: تعمل أوضاع ألوان الطيف والعتامة بنفس الطريقة التي تعمل بها في البرنامج الإضافي Heatmap.
تحدد خانة اختيار القيم المتعددة كيفية عرضها:
يمكن التعامل مع القيم الخالية في العرض على أنها مجموعات فارغة أو عرضها بلون القيمة 0
.
يتم استخدام الحد الأدنى للعرض والتباعد لتحديد الحد الأدنى لعرض الجرافة والتباعد بين الجرافات. يمكن استخدام التقريب لحواف مستديرة.
تم تعيين فهرس القيم على رقم موجب لعرض القيم من السلاسل الزمنية المحددة فقط.
يؤدي مربع الاختيار "إظهار وسيلة الإيضاح" إلى تبديل وسيلة الإيضاح في أسفل اللوحة.
يمكن استخدام فرز الصفوف لفرز التسميات على المحور Y. المقاييس - قم بفرز التسميات كما تم تعريفها في علامة التبويب "المقاييس". a → z و z → a فرز التسميات تنازليًا أو تصاعديًا بترتيب طبيعي.
يؤدي تمكين ترقيم الصفحات إلى تبديل عناصر التحكم في ترقيم الصفحات على الرسم البياني.
Rows per page عدد الصفوف التي سيتم عرضها على الرسم البياني.
إظهار عرض تلميحات تبديل تلميحات الأدوات على الماوس فوق المجموعات.
التجميد عند النقر يقوم بتبديل تلميح الأداة "التجميد" عند النقر. يمكن استخدام تلميح الأدوات المجمد لمقارنة البيانات باستخدام تلميح الأدوات العائم أو لمتابعة عناوين URL.
إظهار العناصر يقوم بتبديل عرض العناصر الإضافية في تلميح الأدوات.
العناصر عبارة عن قائمة تعريفات لعرض عناوين URL في تلميح الأدوات.
يحتوي كل عنوان URL على قالب وأيقونة وتسمية وخيارات تنسيق: أحرف صغيرة وتنسيق تاريخ للمتغيرات.
في بعض السيناريوهات، يتم استخدام لوحة الحالة للانتقال من لوحة معلومات واحدة إلى لوحة معلومات أكثر تحديدًا، على سبيل المثال، عند إجراء تحليل الجذر/السبب. في مثل هذه الحالات، قد يرغب المستخدم في تقليل نطاق الفترة الزمنية، مع الحفاظ على الحدث المطلوب في المركز (ليكون قادرًا على تحليل مجموعات الوقت السابقة/الخلفية). يتم تقديم هذه القيم من خلال __bucket_from
و __bucket_to
.
__bucket_from
: إنها قيمة bucket.from
ناقص المجموعة المئوية. __bucket_to
: إنها قيمة bucket.to
بالإضافة إلى المجموعة المئوية.
تم إنشاء الإصدار العام الأول لهذا البرنامج الإضافي بالكامل بواسطة مهندسي Flant. الفكرة بأكملها جاءت من ديمتري ستولياروف (@distol)، وقد كتب النسخة الأولية سيرجي غنوسكوف (@gsmetal) وتم إجراء التغييرات النهائية بواسطة إيفان ميخيكين (@diafour).
يعتمد هذا البرنامج المساعد على لوحة "Heatmap" من Grafana وهو مستوحى جزئيًا من أفكار من Carpet الارضية، واللوحة المنفصلة، ولوحة الحالة، ونقطة الحالة، والحالة حسب المجموعة.