অ্যাঙ্কে ইন ডকার: আমি কীভাবে "অ্যাক্সেস.লগ" করব?


17

আমি সবেমাত্র ডকারের সাথে শুরু করছি এবং সমৃদ্ধ এখন আমি কীভাবে আমার প্রথম ডকারাইজড অ্যাপাচি 2 / পিএইচপি এনভায়রনমেন্ট সেট আপ করব তা নির্ধারণ করার চেষ্টা করছি। এখন অবধি আমি পূর্ণ লিনাক্স ভিএম ব্যবহার করছি, যেখানে আমি লগ-ফাইলগুলি / var / লগ / অ্যাপাচি 2 তে লেখা হচ্ছে ব্যবহার করেছি, তারপরে প্রতিদিন একটি নতুন ফাইল হ্যাপ করার জন্য "লোগ্রোটেট" ব্যবহার করুন।

লগফিলগুলি প্রধানত তাত্ক্ষণিক ত্রুটি সনাক্তকরণের জন্য ব্যবহৃত হয় (যেমন সার্ভারে লগ ইন করুন এবং বর্তমান অ্যাক্সেস.লগ এবং ত্রুটি.লগ ফাইলগুলি খুলতে কম ব্যবহার করুন) এবং ফায়ারব্যাবনে।

যদি আমি সঠিক হয় যা ডকার পরিবেশে অনুশীলনযোগ্য নয় - মূলত আপনি লগগুলিতে নজর রাখতে পাত্রে লগ ইন করতে পারবেন না। এছাড়াও ধারকটি সরানো থাকলে লগগুলি হারিয়ে যাবে।

সুতরাং: সেই পরিস্থিতিতে অ্যাক্সেস.লগ / ত্রুটি.লগের সাথে / অনুকরণ / প্রতিস্থাপনের সাথে কাজ করার সবচেয়ে সাধারণ পদ্ধতি কোনটি? উত্পাদন এবং উন্নয়নের উভয় পরিবেশের জন্য সাধারণ সমাধানগুলি কী কী?

আমার ধারণাগুলি এ পর্যন্ত একটি এনএফএস শেয়ার (ধীরে ধীরে এবং সাবধান না হলে ফাইলের নাম সংঘর্ষের কারণ হতে পারে) এবং লগস্ট্যাশ অন্তর্ভুক্ত অন্তর্ভুক্ত (ছোট সাইট বা এমনকি দেব পরিবেশের জন্য এটি চেষ্টা এবং মূল্যবান কিনা তা নিশ্চিত নন?) তবে আমি নিশ্চিত স্মার্ট লোকেরা আরও ভাল সমাধান নিয়ে এসেছেন?

এটি কোনও পার্থক্য করে কিনা তা নিশ্চিত নন তবে বর্তমানে আমি আমার ডকার চিত্রটি পিএইচপি: 5.6-অ্যাপাচি তে বেস করছি ।

উত্তর:


13

আপনি এখনও docker exec -it <your container name> /bin/bashআপনার ধারকটিতে প্রবেশ করতে এবং আপনার নিয়মিত কাজ করতে কমান্ডটি ব্যবহার করতে পারেন । অথবা এটি কার্যকর করতে আপনি /bin/bashআপনার আদেশ বা আপনার কমান্ডের স্ক্রিপ্টে পরিবর্তন করতে পারেন .sh

আপনার ফাইলটি ধারক ব্যবহারের বাইরে নিতে docker cp <container name:/path/to/file> </your local machine/path/>

এবং আপনার প্রতিদিনের কাজের জন্য আপনি cronসেই আদেশগুলি ক্রোনজব ব্যবহার করতে পারেন । আমি আপনাকে আপনার ঘন ঘন ডকার কমান্ডের উপাধি দেওয়ার জন্য সুপারিশ করছি। যাতে আমি কয়েকটি কী দিয়ে সুখে ডকার ব্যবহার করতে পারি।

docker logs <container name/id>কমান্ড Docker ইমেজ সঞ্চালনের থেকে লগ দেখার জন্য। এটি স্টডআউটে পুনর্নির্দেশ আউটপুট দেখায়।


এছাড়াও, docker attach <container name>আপনার ধারক থেকে স্টাডআউট দেখার ভাল উপায়। তবে দয়া করে সাবধান হন যে আপনি যদি সিটিআর + ডি বা সিটিআরএল + সি করেন তবে এটি আপনার চলমান কাজটি স্থির করবে (সিগকিল)। সুতরাং আপনাকে এস্কেপ কী ব্যবহার করে এটি সঠিকভাবে বিচ্ছিন্ন করতে হবে ctrl+p+q। আপনি যদি কেবল নিজের পাত্রে শেল করতে চান তবে আমি execউপরের কমান্ডটি পছন্দ করি ।
ফনি লিউ

6

Stderr এবং stdout এ প্রবেশাধিকার এবং ত্রুটি লগ লেখার বিষয়ে কীভাবে?

https://mail-archives.apache.org/mod_mbox/httpd-users/201508.mbox/%3CCABx2=D-wdd8FYLkHMqiNOKmOaNYb-tAOB-AsSEf2p=ctd6sMdg@mail.gmail.com%3E

https://gist.github.com/afolarin/a2ac14231d9079920864

RUN ln -sf / dev / stdout /var/log/nginx/access.log

RUN ln -sf / dev / stderr /var/log/nginx/error.log

সঙ্গে কেন্দ্রীভূত লগিং ELK আরো প্ররোচক পর্যবেক্ষণ যদিও জন্য সম্ভব হবে। তবে আপনি সে সম্পর্কে ইতিমধ্যে ভেবেছিলেন।


1

এখন পর্যন্ত আমি " ডকার লগগুলি " বেশ কয়েকবার উল্লেখ করা দেখেছি ।

আমি একজন পরম ডকার নতুন, যাতে এটি আমার সমস্যার সমাধান পেতে পারে - তবে এখনও পর্যন্ত আমি এই আদেশটির পিছনে ধারণাটি পুরোপুরি বুঝতে পারি নি।

ডকার মনে হয় যে JSON ফাইলের সমস্ত স্টডআউট আউটপুটটি / var / lib / ডকার / পাত্রে / র মধ্যে রাখবে এবং লগস কমান্ডের মাধ্যমে সেগুলিকে অ্যাক্সেস করার সুযোগ দেয়।

এখনও অবধি আমি আউটপুটটি কীভাবে ব্যবহার করব তা নিশ্চিত নই।


1

প্রশ্নটি জিজ্ঞাসা করা হলে এই বৈশিষ্ট্যটি উপস্থিত ছিল না, তবে রান-ভি যুক্তি দিয়ে আপনি হোস্টের একটি ডিরেক্টরিটি ধারকটির একটি ডিরেক্টরিতে মাউন্ট করতে পারেন।

docker run -v [host_dir]:[container_dir]

কনটেইনারটি মোছার পরে এইভাবে লগ (বা অন্যান্য) ফাইলগুলি বেঁচে থাকবে এবং আপনি ফাইলগুলি অ্যাক্সেস করতে পারেন যেন কোনও পাত্রে না হয়ে হোস্টে অ্যাপাচি ইনস্টল করা থাকে।

বিকল্পভাবে, আপনি কোনওভাবে কোনও কেন্দ্রীয় অবস্থানে পরিবর্তিত লগ ফাইলগুলিকে ঠেলাতে পারেন। কিবানা স্ট্যাক এটি অর্জনের জন্য ফাইলবিট ব্যবহার করে তবে বাকী স্ট্যাকের যত্ন না নিলে স্বাধীনভাবে ফাইলবিট চালানো সম্ভব হবে।


1
তিন বছর আগে ডকারের মাউন্ট ভলিউম বাঁধা ছিল।
কৃপণ

0
root@my_docker:~ # ls -l /var/log/apache2/
total 0
lrwxrwxrwx 1 root root 11 Jul 17 04:55 access.log -> /dev/stdout
lrwxrwxrwx 1 root root 11 Jul 17 04:55 error.log -> /dev/stderr
lrwxrwxrwx 1 root root 11 Jul 17 04:55 other_vhosts_access.log -> /dev/stdout
root@my_docker:~ #

ডকার চিত্রটি আমি সমস্ত * .লগ ফাইলকে / dev / stdout এবং / dev / stderr এর সাথে স্রেফ লিঙ্ক করেছি, তাই আমি সেগুলি পড়তে পারি নি।

ফাইলগুলি মুছে ফেলা এবং অ্যাপাচি পুনরায় চালু করার পরে আমি ডকরে / var / লগ / থেকে লগগুলি পেতে পারি।

docker-compose exec apache bash -c "tail -f /var/log/apache2/*.log"

0

অ্যাপাচি কনফিগারেশন ফাইলটিতে আপনি যুক্ত করতে পারেন:
CustomLog, / dev / stdout- এ
ErrorLog, / dev / দ্বারা stderr

এবং লগ নিচে কমান্ড ব্যবহার দেখতে:
Docker লগ container_id

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.