মংডব - লগগুলি ঘোরানোর উপযুক্ত উপায়


13

মঙ্গো ডক্স বলে যে আমি এটি করতে পারি:

  1. -SIGUSR1 সিগন্যাল ব্যবহার করুন এবং পুরানো লগটির নতুন নামকরণ এবং বর্তমান স্যুইচ করুন
  2. ওএস থেকে লোগ্রোটেট ব্যবহার করুন

আমি ওএসের লোগ্রোটেটের পুরানো ফাইলগুলিকে জিপ করতে এবং প্রাচীনতমটি সরিয়ে ফেলার ক্ষমতা চাই, তবে মাইনগড প্রক্রিয়াটি SIGUSR1 প্রেরণ ছাড়া অন্য বর্তমান লগটিতে স্যুইচ করার কোনও উপায় দেখি না।

তাই লিখেছি

/var/log/mongodb/*.log {
    daily
    rotate 5
    compress
    dateext
    missingok
    notifempty
    sharedscripts
    postrotate
        /usr/bin/killall -SIGUSR1 mongod
        /usr/bin/killall -SIGUSR1 mongos
    endscript
}

থেকে /etc/logrotate.d/mongo।

এবং এখন লোগ্রোটেট এবং খালি লগফিলগুলি থেকে mongodb.log.2013-09-18T23-49-44SIGUSR1 স্যুইচিংয়ের চিহ্ন হিসাবে সুপরিচিত লগফাইলগুলি পান। কীভাবে পরবর্তীতে পরিত্রাণ পাবেন?

উত্তর:


11

copytruncate লোগ্রোটেশনের জন্য বেশ ভাল কাজ করে।

এর মতো একটি কনফিগারেশন আপনার পক্ষে কাজ করা উচিত:

/var/log/mongodb/*.log {
  daily
  missingok
  rotate 5
  compress
  dateext
  delaycompress
  copytruncate
  notifempty
}

1
এটি আমার জন্য রেডহ্যাট 6.5-তে কাজ করে না। লগগুলি ঘোরানো হয়েছিল তবে মূল। লগ ফাইলটি বাউন্ড ছাড়াই বাড়তে থাকে।
থমাস ব্র্যাট

@ থমাসব্র্যাটটি সঠিক কারণ মঙ্গো প্রসেসগুলি পুনরায় চালু না করেই ফাইল হ্যান্ডলারটি খোলা থাকে। fwics এই পদ্ধতিটি এত ভালভাবে কাজ করবে না।
এমএক্সএক্স

@ThomasBratt এই উত্তর কটাক্ষপাত করা stackoverflow.com/a/8396266/949859
Mxx

1
@ এমএক্সএক্স ভালো লাগছে - দেখে মনে হচ্ছে কপিরাইট কাটা মন্টোতে লগ
টমাস ব্র্যাট

16

মোংডব্ব 3.0.০ থেকে আপনি লগরোটেট প্যারামিটারের সাহায্যে মঙ্গদ্বের আচরণ পরিবর্তন করতে পারেন, /etc/mongod.conf এ পরিবর্তন করতে পারেন

systemLog:
  logAppend: true
  logRotate: reopen

আরও দেখুন মোঙ্গো সারগ্রন্থ

তারপরে আপনি এই লোগ্রোটেট কনফিগারেশনটি ব্যবহার করতে পারেন:

/var/log/mongodb/*.log {
    daily
    rotate 30
    size 50M
    compress
    dateext
    missingok
    notifempty
    sharedscripts
    postrotate
        /bin/kill -SIGUSR1 `cat /var/lib/mongodb/mongod.lock 2> /dev/null` 2> /dev/null || true
    endscript
}

কনফিগারেশন ফাইল থেকে তৈরি একটি পিআইডি ফাইল সম্ভবত ব্যবহার করা উচিত .... processManagement.pidFilePathকনফিগে দেখুন বা সিস্টেমডি ইউনিট ফাইলের পিআইডিফায়াল সেটিংস ( /var/run/mongodb/mongod.pidআমার জন্য) দেখুন
ভ্যান ডান বার্গ

15

আপনি লোগ্রোটেটের সাহায্যে লগ-ফাইলে সরানোর পরে আপনি যদি সিঙ্গাসআর 1 পাঠান তবে সার্ভারটি আমার জন্য ক্র্যাশ হয়ে গেছে।

নিম্নলিখিত কনফিগারেশনটি আমি পরীক্ষিত সংস্করণটির জন্য নিরাপদ - উবুন্টু 12.04 এ 2.6.6 - পূর্ববর্তী উদাহরণগুলি সার্ভারটি ক্র্যাশ করেছে। এটিকে /etc/logrotate.d/mongod এ রাখুন:

/var/log/mongodb/mongodb.log {
    weekly
    missingok
    rotate 4
    compress
    notifempty
    create
    postrotate
        /usr/bin/pkill -USR1 mongod
        rm /var/log/mongodb/mongodb.log.????-??-??T??-??-??
    endscript
}

দেখুন: https://jira.mongodb.org/browse/SERVER-11087 আরও উপরের বর্ণনার জন্য এবং অক্ষয় কুমারের পরামর্শের জন্য যা আমি উপরেরটিতে ব্যবহার করেছি (লগ-ফাইলে নোক্রিট এবং সিপি / দেব / নালের পরিবর্তে তৈরি ব্যবহার করুন)।

পরবর্তী প্রকাশে লগ-রোটেট বিকল্প হিসাবে আপনি ফাইলটি পুনরায় খোলার জন্য ব্যবহার করতে পারেন - এটির পুনর্নবীকরণ নয় - যা পুনরায় নামকরণ সমস্যাটি নিয়ে কাজ করবে - তবে এটি আমার সংস্করণে কার্যকর হয়নি (এটি অসমর্থিত ছিল)।

দেখুন: https://github.com/mongodb/mongo/commit/616461d294bd9f5054ca38b302b6fc5d70fde20c

আমি এটি দিয়ে পরীক্ষা করেছি

logrotate -v -f /etc/logrotate.d/mongod

সেন্টোস 7
টিম

আমাকে mongodb.log প্রতিস্থাপন করতে হয়েছিল mongod.log এর সাথে এবং এটি কাজ করে
cWisperer

নিশ্চিত করতে পারেন যে যদি systemLog.logRotate: reopenমধ্যে mongod.conf, তারপর pkill হিসাবে উদ্দীষ্ট এবং কেউ তৈরি করা হয় নতুন নামকরণ লগ ফাইল কোন অপসারণের প্রয়োজন বোধ করা হয় কাজ করবে।
জুলিয়ান এইচ লাম 21

0

নিম্নলিখিত আমার জন্য কাজ করেছে:

/var/log/mongo/mongod.log {
    missingok
    rotate 3
    size 100M
    nodateext
    postrotate
            /usr/bin/kill -USR1 $(cat /var/run/mongod.pid)
            rm -f /var/log/mongo/mongod.log.[0-9][0-9][0-9][0-9]-*
    endscript
}

মন্তব্য:

  • রেডহ্যাট 6.5 এ পরীক্ষিত
  • আমি কার্যকর সমাধান পাওয়ার একমাত্র উপায় হ'ল মঙ্গো উত্পাদিত খালি লগ ফাইলগুলি মুছে ফেলা
  • লক ফাইলটির অবস্থান নির্ভর করে কীভাবে মংগোডিবি ইনস্টল করা হয়েছিল
  • killবাশ অন্তর্নির্মিত তবে লোগ্রোটেটের অধীনে চলে /bin/sh- যা SIGUSR1রেডহ্যাট 6.5 এ স্বীকৃতি দেয় না
  • আমি এর সাথে পরীক্ষা করিনি compressতবে এটি স্ট্রেইটওয়ার্ড সংযোজন হওয়া উচিত

-1

নোট করুন সংস্করণ 3.0.০ এবং উচ্চতর ক্ষেত্রে এটি কোনও লগ ঘোরানোর জন্য আপনার ডাটাবেস ডেমনটি মারতে হবে না। ডকুমেন্টেশন এখানে দেখুন:

https://docs.mongodb.com/manual/tutorial/rotate-log-files/


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