লোগ্রোটেট সহ আরএসএসলগ: পুনরায় লোড করুন


16

আমি উবুন্টু 14 এ ডিফল্ট আরএসল্লগ এবং লোগ্রোটেট ইউটিলিটি সহ কাজ করছি।

ডিফল্ট rsyslog লোগ্রোটেট /etc/logrotate.d/rsyslogকনফিগারেশনে আমি নিম্নলিখিতগুলি দেখতে পাচ্ছি:

/var/log/syslog
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                reload rsyslog >/dev/null 2>&1 || true
        endscript
}

আমি যা বুঝতে পেরেছি সেগুলি থেকে সমস্ত লোগ্রোটেটের পরিস্থিতিতে কপিরআরঙ্কেট ব্যবহার করার পরামর্শ দেওয়া হয়, কারণ এটি বর্তমান লগটিকে সরিয়ে দেয় না, বরং লগটি ছাঁটাই করে দেয় যাতে কোনও মুক্ত ফাইল হ্যান্ডলারের সাহায্যে কোনও প্রক্রিয়া এতে লেখা লিখতে সক্ষম হয়।

সুতরাং পরিবর্তে আরএসস্লগ পুনরায় লোড বৈশিষ্ট্যটি ব্যবহার করে কীভাবে ডিফল্ট কনফিগারেশন আসে?

উত্তর:


28

আপনার প্রশ্নের উত্তর দেওয়ার জন্য, আপনাকে প্রথমে পুনরায় লোড এবং কপিরাইটরঙ্ক্টের আলাদা ট্রেড অফ বুঝতে হবে:

  • পুনরায় লোড করুন : পুরাতন লগ ফাইলটির নাম পরিবর্তন করা হয়েছে এবং লগটিতে পুনরায় তৈরি করতে সেই লগটিতে প্রক্রিয়া লেখার বিষয়টি অবহিত করা হয়েছে (ইউনিক্স সিগন্যালের মাধ্যমে)। এটি দ্রুত / নিম্ন ওভারহেড পদ্ধতি: পুনর্নামকরণ / সরানো ক্রিয়াকলাপগুলি খুব দ্রুত এবং একটি ধ্রুবক প্রয়োগের সময় থাকে। তদুপরি, এটি একটি প্রায় পরমাণু অপারেশন: এর অর্থ হল যে সরানো / পুনরায় লোডের সময় (প্রায়) কোনও লগ এন্ট্রি হারাবে না। অন্যদিকে, আপনার লগ ফাইলটি পুনরায় লোড এবং পুনরায় খোলার জন্য সক্ষম একটি প্রক্রিয়া দরকার । Rsyslog যেমন একটি প্রক্রিয়া, তাই ডিফল্ট লোগ্রোটেট কনফিগারেশন পুনরায় লোড পদ্ধতিটি ব্যবহার করে। আরএসস্লগ সহ এই মোডটি ব্যবহার করার পক্ষে আরএসএসলগ আপস্ট্রিম দ্বারা জোরালোভাবে সুপারিশ করা হয়।
  • copytruncate : পুরানো লগ ফাইলটি একটি সংরক্ষণাগার ফাইলে অনুলিপি করা হয় এবং তারপরে এটি পুরানো লগ লাইনগুলিকে "মোছার" জন্য কাটা হয়। যখন কাটা কাটা অপারেশনটি খুব দ্রুত, অনুলিপিটি দীর্ঘ দীর্ঘ হতে পারে (আপনার লগফিলটি কতটা বড় তার উপর নির্ভর করে)। তদতিরিক্ত, কপিরাইট অপারেশনের সময় কিছু লগ এন্ট্রি হারিয়ে যেতে পারে (মনে রাখবেন, এটি ধীর হতে পারে) এবং কাটা কাটা হতে পারে। এই কারণে, লগ ফাইলগুলি পুনরায় লোড এবং পুনরায় তৈরি করতে সক্ষম পরিষেবাদিগুলির জন্য কপিরআরঙ্কেট ডিফল্টরূপে ব্যবহৃত হয় না। অন্যদিকে, কোনও সার্ভার যদি লগ ফাইলগুলি পুনরায় লোড / পুনরায় তৈরি করতে সক্ষম না হয় তবে কপিরাইটআরঙ্কেটটি আপনার নিরাপদ বাজি। অন্য কথায়, এটির জন্য কোনও পরিষেবা-স্তরের সমর্থন প্রয়োজন নেই। আরএসস্লগ আপস্ট্রিম প্রকল্পটি এই মোডটি ব্যবহার করার বিরুদ্ধে দৃ strongly়ভাবে পরামর্শ দেয়।

আমি আমার লগ ফাইলগুলি প্রতিটি 500 এম-তে সীমাবদ্ধ করছি, সুতরাং সেগুলি অনুলিপি করা কোনও সমস্যা হবে না (বেশিরভাগ সেকেন্ডে)। ধন্যবাদ!
মাতান

15

আরএসস্লগ লেখক হিসাবে কথা বলতে গিয়ে, কপিরাইটআরঙ্কেটটি আসলে খুব, খুব, খুব খারাপ পছন্দ। এটি সহজাতভাবে বুদ্ধিমান এবং এটি ব্যবহার করা প্রায় একটি গ্যারান্টি যে আপনি লগের ডেটা হারাবেন। ফাইলটি যত ঘন ঘন লিখিত হয়, ততই আপনি হারাবেন। এবং এটি কেবল শেষ লাইনের অংশ নয়, ঘূর্ণনটি ঘটে যাওয়ার সময় সিস্টেমের সঠিক সময় এবং অবস্থার উপর নির্ভর করে কয়েকশো হতে পারে।

যখন ফাইলটি সরানো হয় এবং একটি নতুন ইনোড (ফাইল) তৈরি হয়, তখন আরএসল্লগ পূর্ববর্তী ফাইল এবং সম্পূর্ণ প্রক্রিয়াজাতকরণের উপর নজর রাখে। এক্ষেত্রে আপনার কোনও ক্ষতি হয় না। গ্যারান্টিযুক্ত (আপনি যদি ফাইল সিস্টেম আনমাউন্ট না করেন তবে ...)।

"রিপেনঅনট্রুনকেট"-তে: আমি ব্যক্তিগতভাবে আবারও খুলতে দেখেছি অন্য ক্ষেত্রেও বিশেষত এনএফএস এবং এর মতো অন্যান্য বিষয়গুলির প্রতিবাদী হতে op কিছু সময় আগে আমি সম্পূর্ণরূপে সেই কার্যকারিতাটি সরিয়ে দিয়েছিলাম তবে পরে আবার একইরকম কার্যকারিতাটি একীভূত করার জন্য প্ররোচিত হয়েছি It এটি সম্ভবত "চিকিত্সা" থাকবে চিরকাল, কারণ আমি সত্যিই জানি যে লোকে খুব ভারী বোঝা সিস্টেমগুলিতে সমস্যায় পড়ে। "copytruncate" লগ ফাইলগুলির সাথে কাজ করার জন্য কেবল কোনও শালীন মোড নয়।

আমি বর্তমানে ইমফাইল রিফ্যাক্টর (ETA 8.34 বা 8.35) এ কাজ করি। রিফ্যাক্টরড সংস্করণ সম্ভবত এপিআই রেসের কারণে দুর্ঘটনাজনিত পুনঃ-প্রেরণ রোধ করতে সক্ষম হবে, তবে ডেটা ক্ষতি থেকে রক্ষাও করতে পারে না - কারণ এটি ধারণাটি অসম্ভব।


1

প্রক্রিয়া লগগুলি কীভাবে লিখছে তার উপর এটি সম্পূর্ণ নির্ভর করে।
copytruncateলগ বার্তাগুলি যদি ফাইলে সংযুক্ত থাকে তবে কেবলমাত্র কাজ করে (উদা whatever >> logfile
এবং যখন এটি আউটপুটটিকে পুনঃনির্দেশ করা হয় না (যেমন whatever > logfile)।


1

সংস্করণ 8.16 যেহেতু আরএসস্লাইগের অনিচ্ছাকৃত বিকল্প রয়েছে reopenOnTruncateযা কপিরন্টঙ্ক্ট ইস্যু পরিচালনা করে।


0

বিশেষত আরএসস্লগের জন্য, জিনিসগুলি যেমন রয়েছে তেমন রেখে দেওয়ার সম্ভবত এটি আরও বোধগম্য।

মূল কারণটি হ'ল আরএসস্লগের অভ্যন্তরীণ সারি রয়েছে যেখানে এটির ক্ষেত্রে আউটপুট হ্যান্ডেল অনুপলব্ধ হয়ে যায়।

পুনরায় লোড করা হবে ক) আরএসস্লগকে নিজস্ব লগ ফাইলটি পুনরায় তৈরি করতে, এবং খ) কোনও সারিবদ্ধ ইভেন্ট তৈরির সময় ফাইলটিতে ফ্লাশ করার কারণ ঘটবে।

এটি হতে পারে কপিরাইটঙ্কট কোনও ক্ষতি করে না (যদিও আমি আংশিক লিখিত লাইনগুলি কেটে ফেলা নিয়ে উদ্বিগ্ন হব) তবে আমি মনে করব যে অনুলিপি দৃষ্টিকোণ থেকে অনুলিপি / মুছুন / পুনরায় লোডটি 'নিরাপদ'।

@ ফ্যাকার দ্বারা উল্লিখিত হিসাবে , যেহেতু আরএসস্লগ পরিস্থিতি পরিচালনা করতে পারে যেখানে এর ফাইলটি অনুপলব্ধ হয়ে যায়, তাই কপিরাইটকাউন্ট ব্যবহার করার বাধ্যতামূলক কারণ নেই।

এবং হিসাবে দ্বারা @ mentionned SelivanovPavel , নিম্নলিখিত rsyslog আসলে সঠিকভাবে কপি আরোপ সঙ্গে মোকাবিলা করার জন্য নির্দিষ্ট কনফিগ প্রয়োজন।

সুতরাং যদি কেবলমাত্র যদি reloadপদ্ধতির ব্যবহারের জন্য ডিফল্ট কনফিগারেশন থেকে কম বিচ্যুতি প্রয়োজন হয় তবে আমি এটি রাখব।

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