লোগ্রোটেট কাজ করছে না


18

আমি সাপ্তাহিক আমার অ্যাপাচি ফাইলগুলি ঘোরানোর জন্য আমার ভিপিএসে কাজ করার জন্য লোগ্রোটেট পাওয়ার চেষ্টা করছি। বর্তমানে অ্যাপাচি 2 কনফিগারেশন ফাইলের বিষয়বস্তু যেমন রয়েছে।

"/var/www/user/site.com/logs/*.log"   {
        weekly
        missingok
        rotate 8
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                /etc/init.d/apache2 reload > /dev/null
        endscript
}

আমি এখন এটি দুই সপ্তাহ রেখেছি এবং যতদূর আমি বলতে পারি কিছুই পরিবর্তন হয়নি। আমি যখন কমান্ড লাইন থেকে এটি অনুকরণ করি তখন আমি নিম্নলিখিত আউটপুটটি পাই।

user@geneva:/var/lib/logrotate$ /usr/sbin/logrotate -d /etc/logrotate.d/apache2
reading config file /etc/logrotate.d/apache2
reading config info for "/var/www/user/site.com/logs/*.log" 

Handling 1 logs

rotating pattern: "/var/www/user/site.com/logs/*.log"     weekly (8 rotations)
empty log files are not rotated, old logs are removed
considering log /var/www/user/site.com/logs/access.log
  log does not need rotating
considering log /var/www/user/site.com/logs/error.log
  log does not need rotating
not running postrotate script, since no logs were rotated

আইভি'কে কী ভুল কনফিগার করা হয়েছে সে সম্পর্কে কোনও ধারণা?

আমার স্ট্যাটাস ফাইলটিও ফাঁকা :(

user@geneva:~$ cat /var/lib/logrotate/status
logrotate state -- version 2

হালনাগাদ

আমি স্ট্যাটাস ফাইলটি মুছলাম এবং লোগ্রোটেটের একটি বল চালিত করলাম এবং এখন লগগুলি দেখতে এলো যে এগুলি ঘোরানো হয়েছে এবং স্থিতি ফাইলটি আরও আশাব্যঞ্জক দেখাচ্ছে!

sudo rm /var/lib/logrotate/status

sudo /usr/sbin/logrotate -f /etc/logrotate.conf

উত্তর:


17

আমার মনে হয় এর weeklyঅর্থ এই যে লোগ্রোটেট আপনার অ্যাক্সেস.লগ ফাইলটি ঘোরানোর জন্য কমপক্ষে এক সপ্তাহ পুরাতন এন্ট্রি দেখতে চায়।

সুতরাং সমস্যাটি মনে হচ্ছে আপনি ঘূর্ণনটি ট্রিগার করতে রাজ্যের প্রবেশটি সংরক্ষণ করছেন না।


লোগ্রোটেট কীভাবে কোনও লগ-ফাইলে ঘোরানোর সিদ্ধান্ত নেয়
(এগুলি ফেডোরা পাথ, উবুন্টু, সেন্টোস ইত্যাদি আলাদা হতে পারে) এর সহজ উদাহরণের একটি পদক্ষেপ এখানে দেওয়া হয়েছে )

(আমি কয়েকটি অনুরোধ করেছি http://localhostযাতে অ্যাক্সেস_লগে কিছু এন্ট্রি রয়েছে, অন্যথায় লোগ্রোটেট কখনও ঘোরে না ...)

তাই আমি অ্যাপাচে আমার লোগ্রোটেটটি সাপ্তাহিক মতো সেট করে রেখেছি;

/var/log/httpd/*log {
        weekly
...
}

এবং মূলত /var/lib/logrotate.statusফাইলটিতে কোনও প্রবেশ নেই

# grep access_log /var/lib/logrotate.status
<- nothing

সুতরাং লোগ্রোটেট access_logফাইলটি ঘোরান না ;

 #  /usr/sbin/logrotate  -d /etc/logrotate.d/httpd 
 ...
considering log /var/log/httpd/access_log
  log does not need rotating

তবে আমি যদি লোগ্রোটেটটি নিজে চালিত করি;

#  /usr/sbin/logrotate   /etc/logrotate.d/httpd 

রাষ্ট্রীয় ফাইলটিতে এখন httpd অ্যাক্সেস_লগের জন্য একটি এন্ট্রি রয়েছে;

 # grep access_log /var/lib/logrotate.status
 "/var/log/httpd/access_log" 2012-5-11

তবে অ্যাপাচি এখনও লগটি ঘোরানো যাচ্ছে না, কারণ এন্ট্রিটি কেবল 0 দিনের (2012-5-11) পুরানো;

  #  /usr/sbin/logrotate  -d /etc/logrotate.d/httpd 
 considering log /var/log/httpd/access_log
   log does not need rotating

তবে আপনি যদি vi এর সাথে স্ট্যাটাস ফাইলটি সম্পাদনা করেন vi /var/lib/logrotate.statusতবে তারিখটি এক সপ্তাহেরও বেশি সেট করার জন্য এরকম কিছু ...

 # grep access_log /var/lib/logrotate.status
 "/var/log/httpd/access_log" 2012-4-11    <---    more than a week ago..

তারপরে লোগ্রোটেট এখন রাষ্ট্রের ফাইলে তারিখের কারণে ফাইলটি সঠিকভাবে আবর্তিত করে 2012-4-11আজ থেকে এক সপ্তাহেরও বেশি আগে2012-5-11

 #  /usr/sbin/logrotate  -d /etc/logrotate.d/httpd
 considering log /var/log/httpd/access_log
 log needs rotating           <---    logrotate rotates the file.

(মনে রাখবেন যে -dকারণগুলি একটি শুকনো রান হওয়ার কারণ, এটি কেবল তদন্তের জন্য কার্যকর, আপনি -dস্থিতি প্রবেশ বা ফাইল আবর্তন না করে আপনাকে কমান্ডটি আসলে চালাতে হবে))


1
লগ ফাইলগুলির এক সপ্তাহ ধরে পুরানো প্রবেশিকা ছিল - এটি প্রদর্শিত হবে যে এটি এখন কাজ করছে, তবে আমি অনুমান করি যে এখন থেকে আমি একটি সপ্তাহ খুঁজে পাব ...
মালাচি

2
দুঃখিত, আমি উত্তরে আরও পরিষ্কার হতে পারতাম, তবে আমি মনে করি একটি সাপ্তাহিক ঘোরার জন্য ফাইলটিতে /var/lib/logrotate.statusঅন্তত এক সপ্তাহ পুরাতন তারিখের প্রবেশের দরকার পড়ে an আমি উত্তরটি উদাহরণ সহ আপডেট করেছি ...
টম এইচ

এই জাতীয় স্পষ্ট ব্যাখ্যার জন্য ধন্যবাদ - আমি বিষয়গুলির তারিখের দিকটি সম্পর্কে সম্পূর্ণ বুঝতে পেরেছি, আমি নিজে কমান্ডটি কল না করলে এগুলি কেবল ঘোরানো হয় না ... এটি যেন CRON লগ রোটাকে কল করছে না?
মালাচি

আমি লিনাক্স প্রশাসনের তুলনায় তুলনামূলকভাবে নতুন ... ... ভিতরে /etc/cron.daily/logrotate/ রয়েছে: #! / বিন / শ টেস্ট -x / usr / sbin / লোগ্রোটেট || প্রস্থান 0
মালাচি

7
log does not need rotating

এটি হতে পারে কারণ আপনার লগ ফাইলগুলি খালি।
এই পরিস্থিতিটি ঘটতে পারে কারণ অ্যাপাচি এখনও পূর্ববর্তী লগ ফাইলে লেখেন, যা অ্যাপাচি পুনরায় চালু না করে নামকরণ করা হয়েছে। সুতরাং অ্যাক্সেস.লগ অ্যাক্সেস.লগ .1 হয়ে গেল এবং এপাচে এটি লিখেছে।

অথবা লগ তৈরির সময় নিয়ে আপনার সমস্যা আছে:

ls -al --time=ctime /var/www/user/site.com/logs/

notifempty0 টি বাইট লগগুলি ঘোরান না এমন বিষয়ে ডিল করতে আপনি লাইনটি মন্তব্য করতে পারেন । তারপরে আপনি touchপ্রতিটি পরীক্ষার আগে একটি নতুন লগ ফাইল চাইবেন যাতে লোগ্রোটেটের ঘোরানোর মতো কিছু থাকে।
বান্জার

6

এই উত্তরগুলির কোনও কিছুই আমাকে সাহায্য না করে আমি একই ধরণের সমস্যার মুখোমুখি হয়েছি। আমার লগ ফাইলটি বিশাল এবং পুরানো ছিল, আমার কনফিগারেশনটি 100% ঠিক এবং বৈধ ছিল, স্থিতি ফাইলটি সরিয়ে ফেলা কোনও লাভ হয়নি।

সমস্যাটি হ'ল সদৃশ লোগ্রোটেট এন্ট্রিগুলিতে । আমি যখন আমার কনফিগারেশন ফাইলটিতে লোগ্রোটেট ম্যানুয়ালি চালিত করি তখন:

logrotate -df /etc/logrotate.d/my_service_name

এটি কোনও ত্রুটি দেখায় নি, এটি কেবল বলেছিল:

log does not need rotating

আমি এখনও জানি না কেন আসলে। তবে যখন আমি এর মতো একটি সম্পূর্ণ লোগ্রোটেট কমান্ড চালাই:

logrotate -f /etc/logrotate.conf

আমি নিম্নলিখিত লাইন পেয়েছি:

error: my_service_name:1 duplicate log entry for /var/log/nginx/my_service_name.access.log

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

# grep nginx /etc/logrotate.d/*
/etc/logrotate.d/nginx:/var/log/nginx/*.log {

সুতরাং আমার ক্ষেত্রে সমাধানটি বেশ সহজ: আমি আমার কনফিগারেশন থেকে বিরোধী এনগিনেক্স লগ রোটেশন নিয়মটি মুছে ফেলতে হয়েছিল

আমি মনে করি লোগ্রোটেট কেবলমাত্র নতুন সংস্করণগুলির মধ্যে একটি থেকে বিধি বিবাদগুলিতে প্রসেসিং ফাইলটি বাতিল করতে শুরু করেছে। আমি এই ত্রুটিটি v.3.8.7 দিয়ে পেয়েছি তবে একই বিবাদী কনফিগারেশনের সাথে v.3.7.8 এর অধীনে এটি একই ত্রুটিটি লিখেছে তবে জরিমানা ঘোরাচ্ছে। যদিও লোগ্রোটেট চেঞ্জলগে আমি এর কোনও রেকর্ড খুঁজে পাইনি।


আপনি সাম্প্রতিকতম সংস্করণগুলি সম্পর্কে সঠিক বলে মনে করছেন। আমার নকল এন্ট্রিও ছিল; কিন্তু ম্যানুয়ালি লোগ্রোটেট চলাকালীন; এটা ঠিক কাজ করে। রাতের ফেরতের মান 0; তবে এটি সঠিকভাবে চালিত হয়নি ...
ক্রিস মেইস

2

চালানোর চেষ্টা করুন sudo logrotate -f --verbose /etc/logrotate.d/apache2 কনসোলে কী লিখিত আছে তা দেখুন এবং যা ভুল তা ঠিক করুন।


0

আমার একটি ডেবিয়ান 7 মেশিন ছিল যা একটি সিস্টেম আপডেটের পরে মেল লগগুলি আর ঘোরান না। অন্য সমস্ত লগ তবে মেলগুলি সঠিকভাবে আবর্তিত হয়েছিল। আমি আবিষ্কার করেছি যে মেল লগগুলি বেশ কয়েকটি গিগাবাইট বৃদ্ধি পেয়েছিল। আমি সর্বদা ওয়েবমিনের মাধ্যমে লগ রোটেশন পরিচালনা করি। তারপরে, দৌড়ে logrotate -d /etc/logrotate.confআমি নিম্নলিখিত বার্তাটি দেখেছি:

Ignoring rsyslog.dpkg-old, because of .dpkg-old ending

এটি প্রকাশিত হয়েছিল যে আমার মেইল ​​রোটেশনের এন্ট্রি তালিকাভুক্ত ছিল /etc/logrotate.d/rsyslog.dpkg-old, যা উপেক্ষা করা হয়েছিল! ফাইলটির নাম পরিবর্তন করে লগ ফাইলের আবর্তন স্থির করা হয়েছে :-)

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