الدليل الكامل لبروميثيوس في عام 2019


ربما سمع مهندسو DevOps و SRE عن بروميثيوس أكثر من مرة.


تم إنشاء Prometheus في SoundCloud في عام 2012 ومنذ ذلك الحين أصبح المعيار لأنظمة المراقبة . يحتوي على شفرة مفتوحة المصدر بالكامل ، ويوفر العشرات من المصدرين المختلفين ، حيث يمكنك إعداد مراقبة البنية التحتية بأكملها في غضون دقائق .


بروميثيوس لها قيمة واضحة ويستخدمها بالفعل مبدعو الصناعة مثل DigitalOcean أو Docker كجزء من نظام مراقبة كامل.


ما هو بروميثيوس؟
لماذا هو مطلوب؟
كيف يختلف عن الأنظمة الأخرى؟


إذا كنت لا تعرف أي شيء عن Prometheus على الإطلاق أو تريد أن تفهمه بشكل أفضل ونظامه الإيكولوجي وجميع التفاعلات ، فإن هذه المقالة مخصصة لك فقط .


قسمنا هذا الدليل إلى 3 أجزاء ، كما فعلنا مع InfluxDB .


  • أولاً ، تأتي نظرة عامة كاملة على بروميثيوس ونظامه الإيكولوجي والجوانب الرئيسية للتكنولوجيا السريعة.
  • ثم ، يتم توفير توضيحات للمصطلحات الفنية لـ Prometheus . إذا كنت لا تعرف المقاييس أو التصنيفات أو الحالات أو المصدرين ، فأنت هنا.
  • أخيرًا ، نصف العديد من سيناريوهات العالم الحقيقي لاستخدام بروميثيوس . هنا سوف تكون مستوحاة من أمثلة الشركات الناجحة.

الجزء الأول. ما هو بروميثيوس؟


بروميثيوس هي قاعدة بيانات سلسلة زمنية. إذا لم تكن على دراية بقاعدة بيانات السلاسل الزمنية ، فاقرأ الجزء الأول من دليل InfluxDB .


لكن بروميثيوس ليست مجرد قاعدة بيانات سلسلة زمنية.


يمكنك إرفاق نظام بيئي كامل من الأدوات به لتوسيع الوظيفة.


تقوم بروميثيوس بمراقبة مجموعة واسعة من الأنظمة : الخوادم وقواعد البيانات والأجهزة الظاهرية الفردية وأي شيء تقريبًا.


للقيام بذلك ، تقوم بروميثيوس بإلغاء أهدافها بشكل دوري .


ما هو تجريف؟


يسترجع بروميثيوس المقاييس من خلال مكالمات HTTP إلى نقاط نهاية محددة في تكوين بروميثيوس.



خذ على سبيل المثال تطبيق الويب الموجود على الموقع http: // localhost: 3000 . ينقل التطبيق المقاييس في تنسيق النص إلى بعض URL. دعنا نقول http: // localhost: 3000 / metrics .


في هذا العنوان ، يسترجع بروميثيوس البيانات من الهدف على فترات زمنية محددة.


1. كيف يعمل بروميثيوس؟


كما قلنا ، يتكون بروميثيوس من مجموعة واسعة من المكونات.


أولاً ، تحتاجها لاستخراج المقاييس من أنظمتك. هناك طرق مختلفة:


  • أجهزة التطبيق ، أي أن التطبيق الخاص بك سوف يوفر مقاييس متوافقة مع بروميثيوس على عنوان URL المحدد. سوف يقوم بروميثيوس بتعريفه على أنه الهدف وسيقضي عليه في الفاصل الزمني المحدد.
  • استخدام المصدرين الجاهزة . بروميثيوس لديها مجموعة من المصدرين للتقنيات الحالية. على سبيل المثال ، المصدرون الجاهزون لمراقبة أجهزة Linux ( Node Exporter ) ، وقواعد البيانات الشائعة ( SQL Exporter أو MongoDB Exporter ) ، وحتى لموازنات تحميل HTTP (على سبيل المثال ، HAProxy Exporter ).
  • باستخدام Pushgateway . في بعض الأحيان لا توفر التطبيقات أو المهام المقاييس مباشرةً. قد لا تكون مصممة لهذا الغرض (على سبيل المثال ، وظائف الدُفعات) أو قررت أنت بنفسك عدم تقديم مقاييس مباشرة من خلال التطبيق.

كما فهمت بالفعل ، تقوم بروميثيوس بجمع البيانات نفسها (باستثناء الحالات النادرة عندما نستخدم Pushgateway).



ماذا يعني هذا؟
لماذا هذا مطلوب؟


2. جمع مقابل إرسال


يوجد لدى بروميثيوس اختلاف ملحوظ عن قواعد بيانات السلاسل الزمنية الأخرى: فهو يقوم بمسح الأهداف بنشاط للحصول على مقاييس منها .


على سبيل المثال ، يعمل InfluxDB بشكل مختلف: فأنت ترسل البيانات مباشرةً إليها بنفسك.



كلا النهجين لهما إيجابيات وسلبيات. استنادًا إلى الوثائق المتاحة ، قمنا بتجميع قائمة بالأسباب التي جعلت منشئي بروميثيوس قد اختاروا هذه البنية:


  • السيطرة المركزية . إذا أرسل Prometheus طلبات إلى الأهداف ، فنحن نقوم بجميع التهيئة على جانب Prometheus ، وليس الأنظمة الفردية.

بروميثيوس يقرر أين ومتى تتخلص.


إذا كانت الكائنات نفسها ترسل البيانات ، فهناك خطر في وجود الكثير من هذه البيانات وتعطل الخادم. عندما يقوم النظام بجمع البيانات ، يمكنك التحكم في وتيرة التجميع وإنشاء عدة تكوينات تجريف لتحديد تردد مختلف لكائنات مختلفة .


  • تقوم بروميثيوس بتخزين المقاييس المجمعة .

هذه إضافة إلى الجزء الأول حيث ناقشنا دور بروميثيوس.


لا يعتمد Prometheus على الأحداث ويختلف تمامًا عن قواعد بيانات السلاسل الزمنية الأخرى. لا يعترض الأحداث الفردية مع الإشارة إلى الوقت (على سبيل المثال ، انقطاع الخدمة) ، ولكنه يجمع مقاييس مجمعة مسبقًا حول خدماتك .


على وجه التحديد ، لا ترسل خدمة الويب رسالة خطأ 404 ورسالة مع سبب الخطأ. يتم إرسال رسالة تفيد بأن الخدمة قد تلقت رسالة خطأ 404 في الدقائق الخمس الأخيرة.


هذا هو الفرق الرئيسي بين قواعد بيانات السلاسل الزمنية التي تجمع المقاييس المجمعة وتلك التي تجمع المقاييس الأولية.


3. تطوير النظام البيئي بروميثيوس


أساسا ، بروميثيوس هو قاعدة بيانات سلسلة زمنية.


ولكن عند التعامل مع قواعد البيانات هذه ، فأنت تحتاج غالبًا إلى تصور البيانات وتحليلها وتكوين التنبيهات لها.


يدعم Prometheus الأدوات التالية التي تعمل على توسيع وظائفها:


  • Alertmanager . يرسل Prometheus تنبيهات إلى Alertmanager بناءً على القواعد المخصصة المحددة في ملفات التكوين. من هناك ، يمكن تصديرها إلى نقاط نهاية مختلفة (على سبيل المثال ، Pagerduty أو Slack).
  • التصور البيانات . مثل Grafana ، يمكنك تصور السلاسل الزمنية مباشرة في واجهة مستخدم ويب Prometheus. يمكنك تصفية البيانات وإنشاء مراجعات محددة لما يحدث في أهداف مختلفة.
  • اكتشاف الخدمة . يقوم بروميثيوس باكتشاف الأهداف بشكل ديناميكي ويلغي الأهداف الجديدة تلقائيًا عند الطلب. يكون هذا مناسبًا بشكل خاص إذا كنت تعمل مع حاويات تقوم بتغيير العناوين بشكل ديناميكي بناءً على الطلب.



الجزء الثاني مفاهيم بروميثيوس


كما هو الحال في دليل InfluxDB ، سنشرح بالتفصيل المصطلحات الفنية المتعلقة بروميثيوس.


1. نموذج بيانات القيمة الرئيسية


قبل الانتقال إلى أدوات Prometheus ، من المهم أن نفهم تمامًا نموذج البيانات هذا.


يعمل بروميثيوس مع أزواج القيمة الرئيسية . يصف المفتاح ما نقيسه ، وتقوم القيمة بتخزين القيمة الفعلية كرقم.


تذكر: Prometheus غير مصمم لتخزين المعلومات الأولية ، مثل النص العادي. يقوم بتخزين المقاييس المجمعة على مدار فترة زمنية.

المفتاح في هذه الحالة يسمى المتري . هذا ، على سبيل المثال ، سرعة المعالج أو استخدام الذاكرة.


ولكن ماذا لو كنت بحاجة إلى مزيد من التفاصيل حول المقياس؟
على سبيل المثال ، يحتوي المعالج على 4 مراكز ، ونحن بحاجة إلى 4 مقاييس منفصلة؟


وهنا اختصارات تأتي لانقاذ. توفر الاختصارات مزيدًا من المعلومات حول المقاييس عن طريق إضافة حقول إضافية. على سبيل المثال ، لا تصف سرعة المعالج فحسب ، بل تصف سرعة قلب واحد عبر عنوان IP محدد.



يمكنك بعد ذلك تصفية المقاييس حسب التصنيفات وعرض المعلومات التي تحتاجها فقط.


2. أنواع المقاييس


عند المراقبة باستخدام Prometheus ، يمكن وصف المقاييس بأربع طرق. من الأفضل قراءتها حتى النهاية ، نظرًا لوجود عيوب هنا.


عداد


ربما هذا هو أبسط نوع من المتري. العداد ، كما يوحي الاسم ، يحسب العناصر لفترة من الزمن .


إذا كنت تريد الاعتماد ، على سبيل المثال ، أخطاء HTTP على الخوادم أو زيارة موقع ويب ، فاستخدم عدادًا .


ومن المنطقي ، بالطبع ، لا يمكن للعداد أن يزيد أو يساوي العدد فقط ، وبالتالي فهو غير مناسب للقيم التي يمكن أن تنقص أو للقيم السالبة.


من خلال مساعدتها ، من المريح بشكل خاص مراعاة عدد مرات حدوث حدث معين على مدار فترة زمنية ، أي معدل تغيير المقياس بمرور الوقت.


وإذا كنت بحاجة إلى قياس الذاكرة المستخدمة لفترة معينة ، على سبيل المثال؟
هذه القيمة قد تنخفض. كيف نحسبها مع بروميثيوس؟


متر


تلبية متر!


تتعامل أجهزة القياس مع القيم التي قد تنخفض بمرور الوقت . يمكن مقارنتها مع موازين الحرارة - إذا نظرت إلى مقياس الحرارة ، فسنرى درجة الحرارة الحالية.


ولكن إذا كان يمكن زيادة العدادات والنقصان واتخاذ القيم الإيجابية والسلبية ، ثم اتضح أنها أفضل من العدادات؟
لذلك عدادات لا طائل منه؟


في البداية ، اعتقدت ذلك. نظرًا لأنهم يمكنهم فعل كل شيء ، فلنستخدمها في كل مكان. هل هو منطقي؟


لكن لا.


تعد أجهزة القياس مثالية لقياس القيمة المترية الحالية ، والتي قد تنخفض بمرور الوقت.


هذا هو المكان الذي تكمن فيه المزالق ذاتها: لا يُظهر المقياس تطور المقياس على مدى فترة زمنية. باستخدام عدادات ، يمكنك تفويت تغييرات القياس غير المنتظمة بمرور الوقت .


لماذا؟ هذا ما يقوله / u / justinDavidow :


"يُظهر العداد متوسط ​​قيمة دلتا العداد للوحدة خلال فترة زمنية.

يأخذ العداد في الاعتبار كل وحدة مستخدمة (إذا كان معالجًا ، ثم عمليات ، أو دورات ، أو علامات تحديد) ، وبعد ذلك يمكنك اختيار المؤشرات التي تحدد الفترة الزمنية التي تحتاج إليها.

إذا كنت تستخدم عداد ، يجب أن يكون معدل أخذ العينات دقيقًا. إذا كان التردد يختلف ببضعة ميكروثانية على الأقل ، فستكون القيمة غير موثوق بها. "هذا أكثر وضوحًا في ظل الحمل الثقيل ، حيث يزيد الوقت الفاصل بين القياسات بشكل كبير ، لأن مخطط النظام ليس لديه الوقت الكافي للانتباه إلى تطبيق المراقبة."

إذا كان النظام يرسل مقاييس كل 5 ثوان وكان بروميثيوس يلغ الهدف كل 15 ، فقد تضيع بعض المقاييس في هذه العملية. إذا أجريت حسابات إضافية باستخدام هذه المقاييس ، فستكون دقة النتائج أقل.


في العداد ، يتم تجميع كل قيمة. عندما يجمعها بروميثيوس ، يدرك أن القيمة قد تم إرسالها في فترة زمنية معينة.


الآن لا ترتبك.


شريط الرسم البياني


الرسم البياني هو نوع أكثر تعقيدًا من القياس. ويوفر معلومات إضافية. على سبيل المثال ، مجموع القياسات وعددهم.


يتم جمع القيم في منطقة ذات حد علوي مخصص. لذلك ، يمكن أن الرسم البياني:


  • احسب متوسط ​​القيم ، أي مجموع القيم مقسومًا على عدد القيم.
  • احسب القياسات النسبية للقيم ، وهذا مناسب جدًا إذا كنت بحاجة إلى معرفة عدد القيم في منطقة معينة التي تتوافق مع المعايير المحددة. هذا مفيد بشكل خاص إذا كنت بحاجة إلى تتبع النسب أو تعيين مؤشرات الجودة.

في العالم الحقيقي ، أرغب في تلقي تنبيه إذا كان لدى 20٪ من الخوادم استجابة لأكثر من 300 مللي ثانية أو استجابة للخادم تزيد عن 300 مللي ثانية وأكثر من 20٪ من الوقت.


إذا كنت تتعامل مع النسب ، فأنت بحاجة إلى رسم بياني .


ملخصات


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


تقسم الكميات ، إن وجدت ، كثافة الاحتمالات إلى شرائح متساوية الاحتمال.


لذلك: شريط الرسوم البيانية أو ملخصات؟


كل هذا يتوقف على النية .


تجمع الرسوم البيانية بين القيم على مدار فترة زمنية ، مما يوفر المبلغ والكمية التي يمكنك من خلالها تتبع تطور مقياس معين.


من ناحية أخرى ، تظهر الملخصات كميات على مدار فترة متحركة (أي التطوير المستمر بمرور الوقت).


يعد هذا مناسبًا بشكل خاص إذا كنت تريد معرفة قيمة تمثل 95٪ من القيم المسجلة خلال فترة ما.


3. المهام والحالات


نظرًا للتطورات الحديثة في البنى الموزعة وشعبية الحلول المستندة إلى مجموعة النظراء ، فمن غير المحتمل أن تستخدم خادمًا منفردًا يعمل من تلقاء نفسه.


يتم نسخ الخوادم وتوزيعها في جميع أنحاء العالم.


لتوضيح ذلك ، دعونا نلقي نظرة على البنية الكلاسيكية لخادمي HAProxy اللذين يعيدان توزيع الحمل عبر تسعة خوادم ويب خلفية ( لا ، لا ، لا حزم تخزين Stackoverflow. )


في هذا المثال الواقعي ، سنتعقب عدد أخطاء HTTP التي أرجعتها خوادم الويب .


في بروميثيوس ، يطلق على خادم الويب مثيل . ستكون المهمة حقيقة قيامك بقياس عدد أخطاء HTTP في جميع الحالات.



الجمال هو أن المهام والحالات عبارة عن حقول في التصنيفات ، ويمكنك تصفية النتائج حسب مثيل أو مهمة محددة.


هل هي مريحة؟


4. PromQL


إذا كنت تستخدم قواعد البيانات استنادًا إلى InfluxDB ، فربما تكون معتادًا على InfluxQL بالفعل. أو استخدم SQL في TimescaleDB .


لدى Prometheus أيضًا لغتها الخاصة للاستعلام عن البيانات واستردادها من الخوادم: PromQL .


كما نعلم بالفعل ، يتم تقديم البيانات في شكل أزواج قيمة المفتاح. يستخدم PromQL بناء الجملة نفسه وإرجاع النتائج مثل المتجهات.


أي نوع من ناقلات؟


يوجد نوعان من المتجهات في Prometheus و PromQL:


  • المتجهات الفورية التي تمثل جميع المقاييس حسب الطابع الزمني الأخير.
  • المتجهات ذات النطاق الزمني : إذا كنت بحاجة إلى النظر في تطوير المقياس بمرور الوقت ، فيمكنك تحديد نطاق زمني في طلب إلى Prometheus. نتيجة لذلك ، سوف تحصل على متجه يجمع بين جميع القيم المسجلة للفترة المحددة.


يوفر PromQL API مجموعة من الوظائف للعمليات مع البيانات في الاستعلامات.


يمكنك فرز القيم ، وتطبيق الدوال الرياضية عليها (على سبيل المثال ، حساب المشتقات أو الأس) ، وحتى إجراء تنبؤات (على سبيل المثال ، باستخدام نموذج Holt-Winters).


5. الأجهزة


الأجهزة هي جزء مهم آخر من بروميثيوس. يمكنك صك التطبيقات قبل استخراج البيانات منها.


في Prometheus ، تعني الأجهزة إضافة مكتبات العميل إلى التطبيق لتوفير مقاييس Prometheus.


تتوفر الأدوات لمعظم لغات البرمجة الشائعة: على سبيل المثال Python و Java و Ruby و Go و Node أو C # .


في الجوهر ، تقوم بإنشاء كائنات ذاكرة (على سبيل المثال ، عدادات أو عدادات) تؤدي إلى زيادة أو تقليل القيمة بشكل حيوي.


ثم اخترت مكان توفير المقاييس. سوف Prometheus التقاطهم من هناك وحفظهم في قاعدة بيانات سلسلة زمنية.



6. المصدرين


في التطبيقات التي كتبتها ، من المريح للغاية تخصيص المقاييس المتوفرة وتغييرها بمرور الوقت باستخدام الأجهزة.


بالنسبة للتطبيقات والخوادم وقواعد البيانات المعروفة ، يقدم Prometheus للمصدرين الذين يمكنك مراقبة الأهداف معهم .


عادةً ما يتم تمثيل هؤلاء المصدرين كصور Docker وسهل التخصيص. إنها توفر مجموعة من المقاييس جاهزة وغالبًا لوحات معلومات جاهزة يمكنك من خلالها تكوين المراقبة في دقائق.


أمثلة للمصدرين:


  • مصدرو قواعد البيانات : لقواعد بيانات MongoDB وخوادم SQL و MySQL.
  • مصدرو HTTP : لخوادم HAProxy أو Apache أو NGINX.
  • مصدرين يونكس : يمكن مراقبة أداء النظام باستخدام مصدري العقدة المدمجة ، والتي توفر جميع مقاييس النظام دون تكوين إضافي.


بضع كلمات عن التوافق المتبادل


تدعم معظم قواعد بيانات السلاسل الزمنية التشغيل المتداخل لأنظمتها.


بروميثيوس ليس هو نظام المراقبة الوحيد مع متطلباته المترية. على سبيل المثال ، InfluxDB (عبر Telegraf) و CollectD و StatsD و Nagios لها أيضًا معاييرها الخاصة.


لذلك ، لتفاعل النظم المختلفة ، يتم إنشاء المصدرين. حتى إذا لم يرسل Telegraf المقاييس بالتنسيق الذي يقبله Prometheus ، فيمكن لـ Telegraf إرسال هذه المقاييس إلى مصدر InfluxDB ، ومنه سيقوم Prometheus بعد ذلك باستلامها.


7. تنبيهات


عند العمل باستخدام قواعد بيانات السلاسل الزمنية ، فإنك تحتاج إلى تعليقات من البيانات ، ويكون مديرو التنبيه مسؤولين عن ذلك.


في Grafana ، تكون التنبيهات شائعة ، ولكنها متوفرة أيضًا في Prometheus من خلال مدير التنبيه.


تنبيه مدير هو أداة منفصلة التي تربط بروميثيوس وتطلق صفارات الإنذار المخصصة .


يتم تعريف التنبيهات في ملف التكوين وتحديد مجموعة من القواعد للمقاييس. في حالة حدوث الامتثال للقاعدة في السلسلة الزمنية ، يتم تشغيل التنبيه وإرساله إلى المستلمين المحددين.


كما هو الحال في Grafana ، يمكنك تحديد عنوان البريد الإلكتروني ، و Webhook Slack ، و PagerDuty ، وكائنات HTTP المخصصة كمستلم.



الجزء الثالث. أمثلة بروميثيوس



وبالطبع ، يجب أن يكون لكل دليل أمثلة عملية . كما أود أن أقول ، التكنولوجيا ليست غاية في حد ذاتها ويجب أن تفي بمهمة محددة.


سنتحدث عن هذا.


1. DevOps


مع وجود كل هؤلاء المصدرين للأنظمة المختلفة وقواعد البيانات والخوادم ، فمن الواضح أن Prometheus مخصص بشكل رئيسي لصناعة DevOps .


نحن نعلم أن هناك العديد من الموردين المتنافسين والحلول الشخصية في هذا المجال.


بروميثيوس مثالي لـ DevOps.


لا يتطلب الأمر أي جهد تقريبًا لإعداد المثيلات وتشغيلها ، ويمكنك بسهولة تنشيط وتكوين أي أداة مساعدة.


من خلال اكتشاف الأهداف - على سبيل المثال ، من خلال مصدر الملف - يعد هذا حلاً رائعًا للمكدس حيث يتم استخدام الحاويات والبنى الموزعة على نطاق واسع.


في بيئة يتم فيها إنشاء المثيلات وحذفها باستمرار ، لا يمكن تكديس DevOps واحد دون اكتشاف الخدمة .


2. الصحة


اليوم ، هناك حاجة إلى حلول المراقبة ليس فقط في مجال تكنولوجيا المعلومات. كما أنها تستخدم في الصناعات الكبيرة التي توفر هياكل الرعاية الصحية مرنة وقابلة للتطوير.


يتزايد الطلب ، ويجب أن تمتثل أبنية تكنولوجيا المعلومات له. إذا لم يكن لديك أداة موثوقة لمراقبة البنية التحتية بالكامل ، فإنك تواجه خطر حدوث انقطاع خطير في الخدمة . بالفعل في قطاع الصحة ، يجب بالتأكيد تقليل هذا الخطر.


تمت مناقشة هذا المثال على opensource.com في المقالة التالية .


3. الخدمات المالية


تم تقديم المثال الأخير في مؤتمر InfoQ ، الذي ناقش استخدام Prometheus في المؤسسات المالية.


يوضح جيمي كريستيان وألان ستردر كيف يستخدمان بروميثيوس لمراقبة بنيتهم ​​التحتية في نورثرن ترست. مفيدة للغاية ، أنصحك أن تنظر.



الجزء العاشر. ماذا بعد؟



حان الوقت للانتقال من النظرية إلى الممارسة .


تعرفت اليوم على أساسيات Prometheus ، وتعلمت ما هي الوظائف التي تؤديها ، والأدوات والأنظمة التي تعمل بها والمصطلحات التي تستخدمها.


الآن لديك كل ما تحتاجه لإنشاء حل المراقبة الخاص بك .


لتبدأ بروميثيوس ، ادرس جميع المصدرين المتاحين .


ثم تثبيت الأدوات اللازمة ، وإنشاء أول لوحة القيادة الخاصة بك - وانتقل!


إذا كنت بحاجة إلى الإلهام ، فاقرأ مقالي حول كيفية مراقبة جهاز Linux باستخدام Prometheus و Grafana . هناك تعليمات لإعداد الأدوات ولوحة المعلومات الأولى.


أتمنى أن تكون قد تعلمت شيئًا جديدًا.


إذا كان لديك موضوع لمقالتي القادمة ، شاركه.


لحسن الحظ البقاء!

Source: https://habr.com/ru/post/ar455290/


All Articles