مراقبة دوكر باستخدام بروميثيوس وكادفيزور ونود إكسبورتر وجرافانا

دوكر باستخدام بروميثيوس وكادفيزور ونود إكسبورتر وجرافانا ubuntu debian centos redhat

مقدمة

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

في هذا الدليل الشامل، سنقوم بإعداد حزمة مراقبة مفتوحة المصدر متكاملة لتصور مقاييس المضيف والحاوية في دوكر باستخدام:

  • بروميثيوس: قاعدة بيانات سلاسل زمنية مفتوحة المصدر شائعة لتخزين واستعلام المقاييس الرقمية
  • كادفيزور: مستخدم يجمع بيانات استخدام الموارد والأداء من الحاويات المتشغلة
  • نود إكسبورتر: يعرض مقاييس الأجهزة ونظام التشغيل من مضيفي وخوادم دوكر الافتراضية والمادية
  • جرافانا: لوحات معلومات ورسوم بيانية غنية بالميزات للتحليل والتصور

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

لماذا مراقبة الحاويات والمضيفين؟

أولاً، لماذا تعد المراقبة مهمة جدًا لبنية الحاويات؟

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

تقدم هذه البنية المؤقتة تحديات رؤية بما في ذلك:

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

في حين أن الحاويات توفر فوائد معمارية من خلال الاقتران الفضفاض والنقل، إلا أن البيئة أصبحت معقدة بشكل متزايد من منظور العمليات.

من خلال جمع وتخزين ورسم بياني لمقاييس السلاسل الزمنية المفصلة، نستعيد الرؤية بما في ذلك:

  • مراقبة استخدام الموارد في الوقت الفعلي مع تفصيلها حسب المضيف والحاوية ومساحة التسمية
  • تحليل الاتجاهات التاريخية للتخطيط للسعة والتحسين
  • تنبيهات قائمة على المقاييس عند تجاوز العتبات
  • ارتباط أوقات استجابة التطبيقات بالخصائص منخفضة المستوى
  • لوحات معلومات لفهم البنية التحتية بنظرة واحدة

إن فهم كيفية استهلاك التطبيقات للموارد بدقة يمكن من تشغيل أكثر كفاءة واستجابات آلية ويساعد على منع عدم الاستقرار الناجم عن الاستخدام المفرط أو تضييق الموارد.

المتطلبات الأساسية

لاتباع جميع المكونات، ستحتاج إلى:

  • خادم لينكس يعمل بدوكر مع أحدث إصدار من دوكر كومبوز
  • أذونات ديمون دوكر لكتابة المقاييس من المصدرين
  • منافذ 9090 و 9100 و 3000 متاحة من أدوات المراقبة
  • معرفة أساسية بإدارة لينكس ودوكر

لتسهيل الأمور، سنستخدم نظام أوبنتو 20.04. لكن يجب أن تعمل أي توزيعة لينكس حديثة بشكل جيد.

دعونا نستكشف الآن كيفية توصيل استيعاب مقاييس بروميثيوس ولوحات المعلومات المرئية لبيئات الحاويات!

الخطوة 1 – إنشاء شبكة دوكر معزولة للمراقبة

أولاً، أنشئ شبكة جسر محددة من المستخدم للاتصال بين خدمات المراقبة باستخدام:

$ docker network create monitoring-net

يتيح هذا تعريض الخدمات على أسماء مضيفين ثابتة بدلاً من عناوين IP الديناميكية التي يمكن أن تتغير:

prometheus
grafana
cadvisor
node-exporter

الآن، شغل كل خدمة متصلة بهذه الشبكة لتبسيط الاتصال.

الخطوة 2 – إعداد قاعدة بيانات السلسلة الزمنية بروميثيوس

بروميثيوس عبارة عن قاعدة بيانات سلسلة زمنية متخصصة محسّنة لاستيعاب واستعلام المقاييس الرقمية مثل العدادات ومقاييس الضغط حتى على نطاق واسع أو ذات بيانات ضخمة. حيث تقوم بجرد وتخزين المقاييس الرقمية على فترات منتظمة مع مرور الوقت.

يعمل بروميثيوس بشكل جيد في الحاويات ويتكامل مع بيئات دوكر باستخدام مصدرين لتوفير مقاييس حول الحاويات والصور والمجلدات والمزيد.

اسحب أحدث صورة لخادم بروميثيوس:

$ docker pull prom/prometheus:latest

ثم أنشئ دليلاً للاستمرارية عبر إعادات تشغيل الحاويات:

$ mkdir -p /prometheus-data

نحن بحاجة إلى تعريف ملف تكوين بروميثيوس لاكتشاف ما يجب مراقبته. أنشئ هذا في /prometheus-data/prometheus.yml على المضيف الخاص بك مع تعريفات الوظائف الأولية:

global:
  scrape_interval: 10s
  external_labels:
    monitor: production-01
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'cadvisor'
    scrape_interval: 5s
    static_configs:
      - targets: ['cadvisor:8080']
  - job_name: 'node'
    scrape_interval: 5s 
    static_configs:
      - targets: ['node-exporter:9100']

يضبط هذا الاتصال إلى:

  • مقاييس ذاتية بروميثيوس على المنفذ 9090
  • كادفيزور يعرض مقاييس الحاوية على 8080
  • نود إكسبورتر لمقاييس نظام تشغيل المضيف على 9100

سنحدد هذه الخدمات لاحقًا.

وأخيرًا، شغل خادم بروميثيوس في الوضع المنفصل:

$ docker run -d --name=prometheus  
    --network=monitoring-net  
    -p 9090:9090  
    -v=/prometheus-data:/prometheus-data   
    prom/prometheus:latest  
    --config.file=/prometheus-data/prometheus.yml

يقوم هذا بتشغيل بروميثيوس في حاوية متصلة بشبكة المراقبة، وتحميل ملف التكوين والمجلد المستمر.

يمكنك الوصول إلى واجهة مستخدم بروميثيوس على http://<server-ip>:9090. سندمج جرافانا قريبًا للحصول على لوحات المعلومات.

الخطوة 3 – تثبيت كادفيزور لمقاييس الحاويات

كادفيزور (مستشار الحاوية) عبارة عن مستخدم لجمع وتجميع ومعالجة وتصدير مقاييس الأداء واستخدام الموارد من الحاويات المتشغلة.

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

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

اسحب أحدث صورة كادفيزور:

$ docker pull gcr.io/cadvisor/cadvisor:latest

ثم أطلق وكيل كادفيزور المتحول إلى حاوية:

$ docker run \
  --name=cadvisor \  
  --network=monitoring-net \
  --volume=/:/rootfs:ro \ 
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \ 
  gcr.io/cadvisor/cadvisor:latest

يشغّل هذا كادفيزور في حاوية مع الوصول إلى:

  • نظام ملفات المضيف لجمع استخدام التخزين لكل حاوية في /
  • سوكيت دوكر لجمع مقاييس مفصلة حول الحاويات المتشغلة
  • معلومات المضيف مثل المعالج/الذاكرة عبر /sys

يقوم كادفيزور بجرد هذه المصادر ويعرض مقاييس مجمعة على المنفذ 8080.

سيكتشف بروميثيوس تلقائيًا مقاييس كادفيزور على شبكتنا الرصدية.

الخطوة 4 – تثبيت نود إكسبورتر على مضيفي دوكر

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

يكشف هذا عن مشاكل الأداء والتشبع التي يمكن أن تؤثر على التطبيقات مثل نظام التشغيل أو الأجهزة المادية.

باستخدام دوكر، أطلق المصدر بشكل مماثل:

$ docker run -d  
  --name=node-exporter    
  --network=monitoring-net
  -p 9100:9100    
  prom/node-exporter:latest

يعرّض هذا مقاييس المضيف على المنفذ 9100. سيكتشف بروميثيوسها لجردها في مقاييس مثل:

node_cpu_seconds_total{mode="idle"}
node_memory_MemAvailable_bytes  
node_network_transmit_bytes_total

الآن لدينا خطان أنبوبيان يرسلان مقاييس النظام والحاوية إلى بروميثيوس.

الخطوة 5 – تثبيت جرافانا للرؤية البيانية الجميلة

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

اسحب وشغل صورة جرافانا الرسمية:

$ docker run -d  
  --name=grafana  
  -p 3000:3000    
  --network=monitoring-net
  grafana/grafana:latest  

يقوم هذا بتشغيل جرافانا متصلةً بخدمات المراقبة لدينا على المنفذ 3000.

انتقل إلى http://<server-ip>:3000 وسجّل الدخول إلى جرافانا باستخدام بيانات الاعتماد الافتراضية:

  • اسم المستخدم: المشرف
  • كلمة المرور: المشرف

دعونا نعدل مصدر بيانات بروميثيوس التالي…

الخطوة 6 – تكوين مصدر بيانات بروميثيوس في جرافانا

من القائمة الجانبية لجرافانا، انقر فوق “الإعدادات” ثم “مصادر البيانات”.

هنا يمكنك إدارة الاتصالات بقواعد بيانات المراقبة مثل بروميثيوس وجرافيت وإنفلوكسدي بي وما إلى ذلك.

حدد “إضافة مصدر بيانات” واضبط الحقول التالية:

  • الاسم: بروميثيوس
  • النوع: بروميثيوس
  • عنوان URL: http://prometheus:9090
  • الوصول إلى: Proxy

ثم انقر فوق “حفظ واختبار”. لدى جرافانا الآن حق الوصول إلى جميع المقاييس المخزنة في بروميثيوس!

الخطوة 7 – استيراد قوالب لوحة المعلومات

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

مرر فأعلى الرمز “+” في القائمة اليسرى وحدد “استيراد”. ثم أدخل معرّف لوحة المعلومات 1860 الذي يتعامل مع الحاويات، أو 893 لعرض المضيف دوكر.

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

يجب الآن أن يكون لدى جرافانا لوحات معلومات تفصيلية لمراقبة:

  • مقاييس استخدام الموارد لكل حاوية
  • إحصائيات المضيف على مستوى نظام التشغيل ووحدة المعالجة المركزية والذاكرة ودوكر

يوفر بروميثيوس وجرافانا الآن خطوط أنابيب بيانات من البداية إلى النهاية وتخزين ورؤى مرئية لبيئات الحاويات.

إدارة خدمات المراقبة

الآن بعد تشغيل بروميثيوس ونود إكسبورتر وكادفيزور وجرافانا، فيما يلي أفضل الممارسات لإدارتها على المدى الطويل.

الاستمرارية في تاريخ مقاييس بروميثيوس

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

تشمل مخازن الفترات الطويلة المتوافقة مع بروميثيوس:

  • تخزين Azure Blob
  • AWS S3
  • تخزين Google Cloud
  • Thanos

الاحتفاظ بتاريخ لوحة المعلومات في جرافانا

للاحتفاظ بتاريخ لوحة المعلومات بين إعادات تشغيل جرافانا، قم بتكوين قاعدة بيانات مثل PostgreSQL أو MySQL تحت “الإعدادات – مصادر البيانات – قاعدة بيانات جرافانا”. مزامنة لوحات معلومات الرصد إلى التحكم بالإصدار المصدر لتاريخ الإصدارات.

الحد من تعدد البيانات

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

التجزئة الأفقية

لتوزيع الحمولة مع توسع البيئات، شغّل بروميثيوس متعدد الحاويات في StatefulSet مع تهيئات hashring أو اتحاد. وبالمثل، يمكن جعل جرافانا عالي التوافر من خلال وحدات تحكم النسخ.

ملخص

في هذا الدليل، قمنا ببناء حزمة مراقبة شاملة لمضيفي دوكر ومجموعات الحاويات بما في ذلك:

  • بروميثيوس: قاعدة بيانات مقاييس مركزية تجمع وتخزن إحصائيات الحاوية/المضيف
  • كادفيزور: تجميع استخدام الموارد من الحاويات المتشغلة
  • نود إكسبورتر: تجميع مقاييس نظام التشغيل والأجهزة من الخوادم
  • جرافانا: تصور المقاييس من خلال لوحات معلومات بديهية

معًا، توفر هذه الأدوات رؤى وتنبيهات شاملة للكشف عن الشواذ في بيئات الحاويات الديناميكية.

الآن بعد أن يكون لديك أساس مراقبة جاهز للعمل، تشمل الخطوات التالية المحتملة:

  • دمج بيانات السجلات في Elasticsearch لارتباط الآثار بالمقاييس
  • بناء قواعد التنبيه والويب هوكس في بروميثيوس وجرافانا
  • التحجيم الآلي الأفقي للحاويات بناءً على الاستخدام مع وحدة تداول تساوي الحمولة الآلية لبود كوبرنيتس
  • البحث عن أدوات مثل Weave Scope أو Lens لتخطيط الحاويات إلى المضيفين

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

LEAVE A COMMENT