يقوم Docker تلقائيًا بتجميع الإخراج القياسي للحاوية وتدفقات الخطأ ( stdoutstderr) في خلاصات السجل التي يحتفظ بها Docker daemon. يمكنك بسهولة مراقبة السجلات لفهم ما يحدث في حاوياتك.

تحتوي السجلات على المخرجات التي تراها في جهازك الطرفي عند إرفاقها بحاوية في الوضع التفاعلي ( -it). لن تكون السجلات متاحة إلا إذا كانت العملية الأمامية في الحاوية الخاصة بك تصدر بالفعل بعض المخرجات. يجب عليك التأكد من تسجيل أخطاء الحاويات الخاصة بك stderrحتى تتمكن أوامر Docker من كشفها.

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

عرض سجلات الحاوية

لعرض سجلات الحاوية ، استخدم docker logsالأمر:

docker logs my-container

استبدل my-containerباسم أو معرف الحاوية التي تريد فحصها. يمكنك استخدامها docker ps -aللحصول على معرّفات وأسماء حاوياتك.

يقوم logsالأمر بطباعة إخراج السجل بالكامل للحاوية إلى الجهاز الطرفي. لن يكون الإخراج مستمرًا. إذا كنت ترغب في الاستمرار في تدفق السجلات الجديدة ، فأضف --followالعلم إلى الأمر. هذا يعادل الاستخدام tail -fمع ملفات السجل العادية على جهازك.

تخصيص ما يتم عرضه

و docker logsيدعم قيادة عدة الأعلام التي تمكنك من ضبط انتاجها:

  • -timestamps – عرض الطوابع كاملة في بداية كل سطر السجل.
  • – حتى و--since – تتيح لك هذه العلامات جلب الأسطر التي تم تسجيلها خلال فترة زمنية معينة. إما أن تمرر طابعًا 2021-04-30T20:00:00Zزمنيًا كاملاً ( ) أو وقتًا نسبيًا ودودًا (على سبيل المثال  1h= قبل ساعة واحدة).
  • –tail – جلب عددًا معينًا من الأسطر من السجل. --tail 10سيعرض آخر عشرة أسطر تم تسجيلها بواسطة الحاوية.
  • –details – هذه علامة خاصة تضيف معلومات إضافية إلى إخراج السجل ، بناءً على الخيارات التي تم تمريرها إلى برنامج تشغيل التسجيل. سننظر في تسجيل السائقين في القسم التالي. القيم النموذجية المعروضة --detailsتتضمن تسميات الحاويات ومتغيرات البيئة.
اقرأ أيضاً :  3 طرق يمكن للتكنولوجيا أن تحسن بشكل كبير من الاتصال في مكان العمل

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

برامج تشغيل Docker Logging

يجمع Docker سجلات الحاويات ويخزنها باستخدام أحد برامج تشغيل التسجيل العديدة . يمكنك تعيين برنامج تشغيل التسجيل النشط على أساس كل حاوية. عندما لا يتم تحديد برنامج تشغيل التسجيل ، يستخدم Docker json-fileبرنامج التشغيل.

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

تتضمن برامج تشغيل السجل المضمنة الأخرى syslog(الكتابة إلى البرنامج syslogالخفي الذي يعمل على جهازك) ، journald(استخدام journaldمثيل قيد التشغيل ) و fluentd(لاستخدام برنامج fluentdخفي). تتوفر برامج التشغيل أيضًا لـ Amazon CloudWatch و Google Cloud Platform و Event Tracing for Windows وغيرها من حلول مراقبة السجلات.

يدعم Docker برامج تشغيل تسجيل الطرف الثالث عبر المكونات الإضافية. يمكنك العثور على برامج تشغيل على Docker Hub. لتثبيت برنامج تشغيل البرنامج المساعد ، قم بتشغيل docker plugin install plugin-name. ستتمكن بعد ذلك من الإشارة إليه على أنه برنامج تشغيل تسجيل باسم plugin-name.

تحديد برنامج تشغيل التسجيل

يمكنك تحديد برنامج تشغيل التسجيل للحاوية عن طريق تمرير --log-driverالعلم إلى docker run:

docker run --log-driver systemd my-image:latest

يمكنك تغيير برنامج تشغيل التسجيل الافتراضي بشكل عام عن طريق تحديث تكوين Docker daemon الخاص بك. تحرير (أو إنشاء) /etc/docker/daemon.json. اضبط log-driverالمفتاح على اسم برنامج تشغيل التسجيل. سيستخدم Docker برنامج التشغيل هذا لجميع الحاويات التي تم إنشاؤها بدون --log-driverعلامة.

{
    "log-driver": "systemd"
}

تأتي العديد من برامج تشغيل التسجيل مع خيارات التكوين الخاصة بها. يتم تعيين هذه باستخدام --log-optsعلم الحاوية ، أو log-optsفي daemon.json. فيما يلي مثال متعلق بالمشغل الافتراضي json-file. يوجه Docker إلى تدوير ملفات السجل بمجرد أن يزيد حجمها عن 8 ميغا بايت. سيتم الاحتفاظ بخمسة ملفات فقط في أي وقت.

اقرأ أيضاً :  تسريع أداء جهاز الكمبيوتر الخاص بك

docker run

docker run --log-driver json-file --log-opts max-size=8M --log-opts max-file=5

/etc/docker/daemon.json

{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "8M",
        "max-file": 5
    }
}

أوضاع توصيل السائق

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

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

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

يمكنك تمكين التسليم بدون حظر عن طريق تعيين modeخيار التسجيل ، إما باستخدام --log-optsأو daemon.json. يمكنك تعيين حجم المخزن المؤقت لسجل الذاكرة الداخلية باستخدام max-buffer-sizeالخيار. يؤدي تعيين هذا المستوى المرتفع إلى تقليل مخاطر فقدان السجلات ، بشرط توفر ذاكرة وصول عشوائي كافية.

docker run --log-opt mode=non-blocking --log-opt max-buffer-size=8M my-image:latest

أفضل ممارسات التسجيل

يجب أن تعمل حاوياتك مع نظام تسجيل Docker حيثما أمكن ذلك. ينبعث منها السجلات إلى stdoutو stderrيسمح عامل الميناء وغيرها من الأدوات تجميعها بطريقة موحدة.

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

اقرأ أيضاً :  يتم إعادة تشغيل هاتفي من تلقاء نفسه: كيفية حل هذه المشكلة

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

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

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

error: Content is protected !!