كيفية مراقبة سجلات حاوية Docker – CloudSavvy IT
يقوم Docker تلقائيًا بتجميع الإخراج القياسي للحاوية وتدفقات الخطأ (stdout
/stderr
) إلى موجز السجل الذي يحتفظ به Docker daemon. يمكنك بسهولة مراقبة السجلات لفهم ما يحدث في الحاوية.
يحتوي السجل على المخرجات التي تراها في الجهاز عند الاتصال بالحاوية بشكل تفاعلي (-it
). السجل متاح فقط عندما تصدر العملية الأمامية في الحاوية بعض المخرجات بالفعل.يجب عليك التأكد من أن الحاوية تسجل الخطأ إلى stderr
لذلك يمكن لأوامر Docker كشفها.
يمكنك عرض سجل الحاوية في أي وقت خلال دورة حياة الحاوية. يمكنك دفق السجلات في الوقت الحقيقي أثناء تشغيل الحاوية. بالنسبة للحاويات التي تم إيقافها ، يمكنك الوصول إلى جميع السجلات التي تم التقاطها قبل الإنهاء.
عرض سجلات الحاوية
لعرض سجل الحاوية ، استخدم docker logs
أمر:
docker logs my-container
في حين أن my-container
واسم أو معرف الحاوية التي تريد التحقق منها.يمكنك استخدامها docker ps -a
احصل على معرف واسم الحاوية الخاصة بك.
هذا logs
يقوم الأمر بطباعة إخراج السجل بالكامل للحاوية إلى الجهاز الطرفي. لن يكون الإخراج مستمرًا.إذا كنت ترغب في متابعة تدفق السجلات الجديدة ، يرجى إضافة --stick to
بمناسبة الأمر.هذا يعادل استخدام tail -f
مع ملفات الدخول العادية على الكمبيوتر.
محتوى العرض المخصص
هذا docker logs
يدعم الأمر العديد من العلامات التي يمكن استخدامها لضبط مخرجاتها:
- – الطابع الزمني -عرض الطابع الزمني الكامل في بداية كل سطر سجل.
- -حتى
--because
– تتيح لك هذه العلامات تسجيل الصفوف في فترة زمنية محددة. إما أن تمرر ختم الوقت الكامل (2021-04-30T20:00:00Z
) أو وقت نسبي ودود (على سبيل المثال1h
= قبل ساعة واحدة). - -ذيل -احصل على العدد المحدد من الصفوف من السجل.
--tail 10
سيتم عرض الأسطر العشرة الأخيرة من سجل الحاوية. - -تفاصيل -هذه علامة خاصة تضيف المزيد من المعلومات إلى إخراج السجل بناءً على الخيارات التي تم تمريرها إلى برنامج تشغيل التسجيل. سنلقي نظرة على برنامج تشغيل التسجيل في القسم التالي.يتم عرض القيم النموذجية على شكل
--details
بما في ذلك ملصقات الحاويات ومتغيرات البيئة.
يمكنك دمج هذه العلامات للحصول على السجلات بالتنسيق المطلوب.هذا right until
و considering that
مع tail
إذا كنت تستخدمه ، فلن يتم تفعيل الشعار stick to
باستمرار تدفق بيانات السجل.
سائق Docker Logging
يستخدم Docker أحد برامج تشغيل التسجيل العديدة لجمع سجلات الحاوية وتخزينها. يمكنك إعداد برامج تشغيل تسجيل نشطة على أساس كل حاوية.عندما لا يتم تحديد برنامج تشغيل التسجيل ، يستخدم Docker ملفات json-file
سائق.
يخزن برنامج التشغيل سجل الحاوية في ملف JSON. هذا التنسيق سهل إلى حد ما للقراءة من قبل الأشخاص ويمكن استخدامه بسهولة بواسطة أدوات الجهات الخارجية.إذا كنت لا تريد الوصول إلى ملفات السجل مباشرة ، فانتقل إلى area
سيوفر لك برنامج التشغيل بعض مساحة التخزين. يستخدم تنسيق تخزين سجل مخصص.
تتضمن برامج تشغيل السجل المضمنة الأخرى syslog
(اكتب ل syslog
برنامج خفي يعمل على جهاز الكمبيوتر الخاص بك) ، journald
(استخدم الجري journald
مثيل) و fluentd
(استعمال fluentd
الشيطان). يمكن أيضًا استخدام برنامج التشغيل في Amazon CloudWatch و Google Cloud Platform و Home windows Occasion Tracking وغيرها من حلول مراقبة السجلات.
يدعم Docker برامج تشغيل تسجيل الطرف الثالث من خلال المكونات الإضافية. يمكنك العثور على برنامج التشغيل على Docker Hub.لتثبيت برنامج تشغيل المكون الإضافي ، قم بتشغيل docker plugin install plugin-identify
.يمكنك بعد ذلك الرجوع إليه على أنه برنامج تشغيل تسجيل باسم plugin-identify
.
حدد برنامج تشغيل التسجيل
يمكنك تحديد برنامج تشغيل التسجيل عن طريق تمرير الحاوية --log-driver
وضع علامة باسم docker run
:
docker operate --log-driver systemd my-impression:most current
يمكنك تغيير برنامج تشغيل التسجيل الافتراضي بشكل عام عن طريق تحديث تكوين Docker daemon. تحرير (أو إنشاء) /etcetera/docker/daemon.json
.اقامة log-driver
مفتاح تسجيل اسم السائق. سيستخدم Docker برنامج التشغيل هذا لجميع الحاويات التي لم يتم إنشاؤها --log-driver
لافتة.
"log-driver": "systemd"
يأتي العديد من برامج تشغيل التسجيل مع خيارات التكوين الخاصة بهم.هذه تستخدم --log-opts
شعار الحاوية ، أو log-opts
في daemon.json
.هذا مثال متعلق بالقيمة الافتراضية json-file
سائق. بمجرد أن يصبح ملف السجل أكبر من 8 ميجابايت ، فإنه سيوجه Docker لتدوير ملف السجل. يتم الاحتفاظ بخمسة ملفات فقط في أي وقت.
docker operate
docker run --log-driver json-file --log-opts max-measurement=8M --log-opts max-file=5
/and so on/docker/daemon.json
"log-driver": "json-file", "log-opts": "max-measurement": "8M", "max-file": 5
وضع نقل السائق
يمكن تسليم السجلات في وضع الحظر أو عدم الحظر. يمنع Docker عمليات التسليم افتراضيًا. سيتم إرسال السجلات من الحاوية إلى السائق على الفور. هذا يضمن شحن السجل ، ولكن قد يؤثر على الأداء. سينتظر التطبيق حتى اكتمال كتابة السجل. إذا كان برنامج تشغيل التسجيل مشغولاً ، فقد يتسبب ذلك في تأخيرات كبيرة.
في وضع عدم الحظر ، يكتب Docker السجلات إلى مخزن الذاكرة المؤقت. لا تحتاج الحاوية إلى الانتظار حتى يكمل برنامج تشغيل التسجيل كتابتها. يمكن أن يؤدي ذلك إلى تحسين الأداء بشكل كبير على أجهزة الكمبيوتر النشطة ذات سرعات التخزين البطيئة.
تتمثل المقايضة في وضع عدم الحظر في إمكانية فقد السجلات. يمكن أن يحدث هذا عندما يتم إصدار السجل بشكل أسرع من قدرة برنامج التشغيل على معالجة السجل. قد يكون المخزن المؤقت في الذاكرة ممتلئًا ، مما يؤدي إلى مسح السجلات المخزنة مؤقتًا قبل تسليمها إلى السائق.
يمكنك ضبط mode
خيارات التسجيل ، أو --log-opts
أو daemon.json
.يمكنك استخدام الأمر التالي لتعيين حجم المخزن المؤقت لسجل الذاكرة max-buffer-dimensions
خيارات. إذا كان لديك ما يكفي من ذاكرة الوصول العشوائي المتاحة ، فإن تعيينها على قيمة أعلى يمكن أن يقلل من خطر فقدان السجلات.
docker run --log-choose manner=non-blocking --log-opt max-buffer-size=8M my-image:latest
توثيق أفضل الممارسات
يجب استخدام الحاوية الخاصة بك مع نظام تسجيل Docker قدر الإمكان.إرسال السجلات إلى stdout
مع stderr
اسمح لـ Docker والأدوات الأخرى بتجميعها بطريقة موحدة.
لا يحتاج إخراج السجل إلى تضمين طابع زمني. سيقوم برنامج تشغيل تسجيل Docker بتسجيل وقت وقوع الحدث تلقائيًا.
في بعض الأحيان قد يكون لديك متطلبات تسجيل معقدة ، docker logs
لا يمكن إرضاء المرء. إذا كان الأمر كذلك ، فقد تحتاج إلى تنفيذ حل التسجيل الخاص بك في الحاوية. يمكنك استخدام وحدات تخزين Docker لتخزين السجلات مباشرة على نظام الملفات أو الاتصال بخدمات API الخارجية.
تتطلب بعض الحزم حاوية تسجيل مخصصة ليتم وضعها بجوار حاوية التطبيق. تقرأ حاوية التسجيل (تسمى غالبًا “sidecar”) ملفات السجل المؤقتة التي تم إنشاؤها بواسطة حاوية التطبيق في وحدة تخزين Docker المشتركة. يعالج الملف الجانبي تجميع هذه السجلات في تنسيق يمكن تحميله إلى خدمة مراقبة السجل.
على الرغم من صعوبة الإعداد والتوسيع ، إلا أن هذه الطريقة قد تكون مفيدة لعمليات النشر الأكثر تعقيدًا. عادةً ما يمنعك من الحصول على راحة أوامر التسجيل المضمنة في Docker على الفور.
التعميم
يحتوي Docker على مجموعة من وظائف مراقبة السجل العامة التي يوفرها برنامج تشغيل السجل. يمكن لكل حاوية استخدام برنامج تشغيل فريد للتسجيل ، مما يسمح لك بتخزين السجلات بتنسيق يناسب متطلبات كل تطبيق.
يتضمن السجل كل شيء ينبعث من تيار الإخراج القياسي للحاوية.يمكنك استخدامها echo
و print
و console.log()
أو لغة مكافئة للغة البرمجة الخاصة بك لإضافة السطر إليها docker logs
انتاج.سيتم الاحتفاظ بالسجل حتى يتم حذف الحاوية الخاصة بك docker rm
.