লিনাক্সে লোগ্রোটেট ব্যবহার করে লগ রোটেশন কীভাবে সেটআপ এবং পরিচালনা করবেন


লিনাক্স সিস্টেমে সবচেয়ে আকর্ষণীয় (এবং সম্ভবত সবচেয়ে গুরুত্বপূর্ণ অন্যতম) ডিরেক্টরি হ'ল /var/log । ফাইল সিস্টেম হায়ারার্কি স্ট্যান্ডার্ড অনুসারে, সিস্টেমে চলমান বেশিরভাগ পরিষেবাদির ক্রিয়াকলাপটি এই ডিরেক্টরিতে বা এর একটি উপ-ডিরেক্টরিতে অন্তর্ভুক্ত একটি ফাইলে লেখা থাকে।

এ জাতীয় ফাইলগুলি লগ হিসাবে পরিচিত এবং সিস্টেম কীভাবে পরিচালনা করছে (এবং এটি অতীতে কীভাবে আচরণ করেছে) তা পরীক্ষার মূল চাবিকাঠি। লগগুলি তথ্যের প্রথম উত্স যেখানে প্রশাসক এবং প্রকৌশলীরা সমস্যা সমাধানের সময় দেখেন।

আমরা যদি কোনও সেন্টোস/আরএইচএল/ফেডোরা এবং ডেবিয়ান/উবুন্টুতে (বিভিন্নতার জন্য) /var/log এর বিষয়বস্তাগুলি লক্ষ্য করি তবে আমরা নীচের লগ ফাইলগুলি এবং উপ-ডিরেক্টরিগুলি দেখতে পাব।

দয়া করে নোট করুন যে ফলাফলটি আপনার সিস্টেমে চলমান পরিষেবাগুলি ও সেগুলি চালনার সময় নির্ভর করে আপনার ক্ষেত্রে কিছুটা আলাদা হতে পারে।

# ls /var/log
# ls /var/log

উভয় ক্ষেত্রেই আমরা পর্যবেক্ষণ করতে পারি যে কিছু লগের নাম "লগ" তে প্রত্যাশিতভাবে শেষ হয়, আবার অন্যগুলি হয় একটি তারিখ ব্যবহার করে পুনরায় নামকরণ করা হয় (উদাহরণস্বরূপ, CentOS এ মাইলগ -২০8০৮২২) বা সংক্ষেপিত (বিবেচনা করুন auth.log.2.gz এবং mysql.log.1.gz উপর দেবিয়ান)।

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

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

কয়েকটি কথায়, কোনও শর্ত পূরণ হলে লোগ্রোটেট মূল লগটির নাম পরিবর্তন বা সংকোচিত করবে (এক মিনিটের মধ্যে এটি সম্পর্কে আরও) যাতে পরবর্তী ইভেন্টটি খালি ফাইলে রেকর্ড করা হয়।

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

লিনাক্সে লোগ্রোটেট ইনস্টল করা

লোগ্রোটেট ইনস্টল করতে, কেবল আপনার প্যাকেজ পরিচালক ব্যবহার করুন:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

এটি লক্ষণীয় এবং ভাল যে কনফিগারেশন ফাইল ( /etc/logrotate.conf ) নির্দেশ করতে পারে যে অন্যান্য, আরও সুনির্দিষ্ট সেটিংস পৃথক .conf ফাইলের ভিতরে স্থাপন করা যেতে পারে /etc/logrotate.d।

নিম্নলিখিত লাইনটি উপস্থিত থাকলে এবং যদি মন্তব্য না করা হয় তবেই এটি হবে:

include /etc/logrotate.d

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

লিনাক্সে লোগ্রোটেট কনফিগার করুন

খুব বহুমুখী সরঞ্জাম হওয়ায় লোগ্রোটেট লগগুলি কখন এবং কীভাবে আবর্তিত হবে এবং ঠিক কী হবে তার পরে কনফিগার করতে সহায়তা করার জন্য প্রচুর নির্দেশনা সরবরাহ করে।

আসুন /etc/logrotate.d/apache2.conf এ নিম্নলিখিত বিষয়বস্তুগুলি সন্নিবেশ করান (নোট করুন যে সম্ভবত আপনাকে সেই ফাইলটি তৈরি করতে হবে) এবং প্রতিটি লাইনটির উদ্দেশ্যটি নির্দেশ করতে পরীক্ষা করে দেখুন:

/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

প্রথম লাইনটি ইঙ্গিত করে যে ব্লকের ভিতরে থাকা নির্দেশগুলি/var/লগ/অ্যাপাচি 2 এর ভিতরে থাকা সমস্ত লগের জন্য প্রযোজ্য:

  • সাপ্তাহিক অর্থ হাতিয়ারটি সাপ্তাহিক ভিত্তিতে লগগুলি ঘোরানোর চেষ্টা করবে। অন্যান্য সম্ভাব্য মানগুলি দৈনিক এবং মাসিক
  • ঘোরানো 3 নির্দেশ করে যে কেবল 3 টি ঘোরানো লগ রাখতে হবে। সুতরাং, চতুর্থ পরবর্তী রানে সবচেয়ে পুরানো ফাইলটি সরানো হবে
  • আকার = 10M ঘূর্ণনটির জন্য 10M হতে সর্বনিম্ন আকার নির্ধারণ করে। অন্য কথায়, প্রতিটি লগ 10MB না পৌঁছানো পর্যন্ত আবর্তিত হবে না
  • কমপ্রেস এবং দেরি কমপ্রেসটি ব্যবহার করতে ব্যবহৃত হয় যে সাম্প্রতিকতম ব্যতীত সমস্ত ঘোরানো লগগুলি সংকুচিত করা উচিত

লোগ্রোটেট যদি এখন এটি সম্পাদন করা হয় তবে এটি কী করবে তা দেখতে শুকনো রান চালানো যাক। কনফিগারেশন ফাইলের পরে -d বিকল্পটি ব্যবহার করুন (আপনি এই বিকল্পটি বাদ দিয়ে লোগ্রোটেটটি চালাতে পারবেন):

# logrotate -d /etc/logrotate.d/apache2.conf

ফলাফল নিচে দেখানো হয়েছে:

লগগুলি সংকোচনের পরিবর্তে, আমরা যখন ঘোরানো হয়েছিল তখনই আমরা তাদের নাম পরিবর্তন করতে পারি। এটি করতে, আমরা তারিখ পাঠ্য নির্দেশ ব্যবহার করব। যদি আমাদের তারিখের ফর্ম্যাটটি ডিফল্ট yyyymmdd ছাড়া অন্য হয়, আমরা তারিখের ফর্ম্যাট ব্যবহার করে এটি নির্দিষ্ট করতে পারি।

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

আপনি যদি লোগ্রোটেট সম্পর্কে ইমেল পেতে চান তবে আপনি এখানে প্রদর্শিত হিসাবে পোস্টফিক্স মেল সার্ভার সেটআপ করতে পারেন: পোস্টফিক্স মেল সার্ভার ইনস্টল করুন

এবার আমরা কেবল /var/log/squid/access.log ঘোরানোর জন্য /etc/logrotate.d/squid.conf ব্যবহার করব:

/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email 
}

আমরা নীচের চিত্রটিতে দেখতে পাচ্ছি, এই লগটি ঘোরানোর দরকার ছিল না। যাইহোক, যখন আকারের শর্তটি পূরণ করা হয় (আকার = 1 এম), ঘোরানো লগটির নাম পরিবর্তন করা হবে অ্যাক্সেস.লগ-25082020 (যদি লগ 25 আগস্ট, 2020 এ আবর্তিত হত) এবং মূল লগ (অ্যাক্সেস.লগ) পুনরায়- 0644 এ অ্যাক্সেস অনুমতি সেট করে এবং মালিক এবং গোষ্ঠী মালিক হিসাবে রুট দিয়ে তৈরি করা হয়েছে।

অবশেষে, লগের সংখ্যা অবশেষে 6 এ পৌঁছে গেলে, প্রাচীনতম লগটি [ইমেল সুরক্ষিত] এ মেল করা হবে।

এখন ধরা যাক আপনি ঘোরানোর সময় একটি কাস্টম কমান্ড চালাতে চান। এটি করার জন্য, পোস্ট্রোটেট এবং এন্ডসক্রিপ্ট নির্দেশাবলীর মধ্যে এই জাতীয় কমান্ডের সাথে রেখা রাখুন।

উদাহরণস্বরূপ, ধরা যাক আমরা যখন/var/log/myservice এর ভিতরে থাকা কোনও লগটি ঘোরানো হয় তখন আমরা মূলটিতে ইমেল পাঠাতে চাই। আসুন /etc/logrotate.d/squid.conf এ রেডগুলিতে যুক্ত করুন:

/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

সর্বশেষে, তবে অন্ততপক্ষে, এটি গুরুত্বপূর্ণ যে জেনে রাখা উচিত যে /etc/logrotate.d/*.conf এ উপস্থিত বিকল্পগুলি বিরোধের ক্ষেত্রে মূল কনফিগারেশন ফাইলটিতে ওভাররাইড করে।

লোগ্রোটেট এবং ক্রোন

ডিফল্টরূপে, লোগ্রোটেটের ইনস্টলেশন /etc/cron.daily নামের লোগ্রোটেটের ভিতরে একটি ক্রন্টব ফাইল তৈরি করে। যেহেতু এই ডিরেক্টরিতে থাকা অন্যান্য ক্রন্টব ফাইলগুলির ক্ষেত্রে এটি হ'ল, অ্যানাক্রোন ইনস্টল না করা থাকলে এটি প্রতিদিন সকাল 6:25 টা থেকে শুরু করে কার্যকর করা হবে।

অন্যথায়, সকাল সাড়ে :35 টা নাগাদ ফাঁসির কাজ শুরু হবে। যাচাই করতে,/etc/crontab অথবা/etc/anacrontab- এ ক্রোন.ডেইলি যুক্ত লাইনটি দেখুন।

সারসংক্ষেপ

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

এটি নিশ্চিত করুন যে এটি ক্রোন জব হিসাবে চালিত হবে এবং লোগ্রোটেট আপনার পক্ষে জিনিসগুলি আরও সহজ করে তুলবে। আরও তথ্যের জন্য ম্যান পৃষ্ঠাটি দেখুন।

এই নিবন্ধটি সম্পর্কে আপনার কোনও প্রশ্ন বা পরামর্শ আছে? নীচে মন্তব্য ফর্মটি ব্যবহার করে আমাদের নির্দ্বিধায় জানুন।