0%
Prometheus ونموذج بياناته

Prometheus

السلاسل الزمنية، والعدّادات والمقاييس اللحظية، والوسوم، وانفجار الكاردينالية.

10-15 دقيقة

Prometheus ونموذج بياناته

قد يعمل خادم Prometheus بصورة ممتازة ستة أشهر، ثم يصبح عديم الفائدة في يوم واحد بسبب سطر برمجي يبدو بريئًا. يضيف أحدهم وسم user_id إلى عدّاد الطلبات «ليتمكن من التصفية حسب العميل». وفي اليوم التالي يقفز استهلاك ذاكرة الخادم من 4 إلى 38 GiB، وتنتهي مهلة استعلامات لوحة المتابعة الرئيسية، وتنتهي العملية بأن تقتلها نواة النظام. ولا يُطلق أي تنبيه، لأن نظام التنبيه يعمل على الخادم نفسه الذي توقف للتو.

هذا العطل هو الأكثر شيوعًا في المنظومة كلها، ويمكن توقعه بالكامل متى فهمنا ما تعنيه السلسلة الزمنية في Prometheus. فهي ليست مقياسًا مسمّى نصفّيه عند القراءة كما نصفّي عمودًا في جدول SQL؛ بل إن كل تركيبة مختلفة من قيم الوسوم تُنشئ سلسلة مستقلة، لها بنيتها الخاصة في الذاكرة وملفها الخاص على القرص. عشرة آلاف عميل مضروبة في خمس نقاط دخول مضروبة في أربعة رموز حالة لا تعني عشرة آلاف سطر من البيانات، بل مئتي ألف سلسلة. وفهم هذا النموذج قبل كتابة أول مقياس يوفر عليك إعادة بناء المنظومة بعد ستة أشهر.

السلسلة الزمنية بدقة

تُعرَّف السلسلة باسم مقياس ومجموعة من الوسوم (labels). وقيمتها عدد عشري، مقترن بطابع زمني بدقة الميلي ثانية.

http_requests_total{method="GET", route="/commandes", status="200"} 48213 @1755660000
http_requests_total{method="GET", route="/commandes", status="500"} 17    @1755660000

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!