লোগ্রোটেট / var / লগ / বার্তাগুলিকে সংকুচিত করে না


11

সময়ের সাথে সাথে আমি কিছু লগ খেয়াল /var/logযেমন auth, kernএবং messagesবিশাল পেয়ে হয়েছে। আমি logrotateতাদের জন্য এন্ট্রি করেছি:

$ cat /etc/logrotate.d/auth.log 
/var/log/kern.log {
    rotate 5
    daily
}
$ cat /etc/logrotate.d/kern.log 
/var/log/kern.log {
    rotate 5
    daily
}
$ cat /etc/logrotate.d/messages 
/var/log/messages {
    rotate 5
    daily
    postrotate
        /bin/killall -HUP syslogd
    endscript
}

এছাড়াও আমি compressবিকল্পটি সক্ষম করেছি:

$ grep compress /etc/logrotate.conf 
# uncomment this if you want your log files compressed
compress

এই মহান জন্য কাজ করে auth.log, kern.logএবং অন্যদের, যার মানে হল ঐ লগ প্রতিটি gzipped এবং আবর্তিত লগ গত 5 দিন সঙ্গে বজায় রাখা হয়। /var/log/messagesতবে সংকুচিত করা হচ্ছে না , ফলে লগের 5 দিনের বেশি উপায় হয়:

$ ls /var/log/messages*
/var/log/messages           /var/log/messages-20100213
/var/log/messages-20100201  /var/log/messages-20100214
/var/log/messages-20100202  /var/log/messages-20100215
/var/log/messages-20100203  /var/log/messages-20100216
/var/log/messages-20100204  /var/log/messages-20100217
/var/log/messages-20100205  /var/log/messages-20100218
/var/log/messages-20100206  /var/log/messages-20100219
/var/log/messages-20100207  /var/log/messages-20100220
/var/log/messages-20100208  /var/log/messages-20100221
/var/log/messages-20100209  /var/log/messages-20100222
/var/log/messages-20100210  /var/log/messages-20100223
/var/log/messages-20100211  /var/log/messages-20100224
/var/log/messages-20100212

সার্ভারফল্টের অন্য একটি logrotateপ্রশ্নে যেমন ব্যাখ্যা করা হয়েছে , পুরানো লগগুলি (সম্ভবত সম্ভবত) সরানো হচ্ছে না কারণ প্রতিটি ফাইলের জন্য ফাইলের সমাপ্তি আলাদা are এটি উপস্থিত হতে পারে কারণ ফাইলগুলি জিপিপ করা হচ্ছে না।

/var/log/messagesআমার অন্যান্য সমস্ত লগ ফাইলের মতো গত 5 দিনের লগগুলি সংক্ষেপিত এবং ঘোরানোর জন্য আমি কী করতে পারি ? আমি কী মিস করছি?

সম্পাদনা 1 : প্রথম দম্পতির উত্তরে অনুরোধ হিসাবে অতিরিক্ত তথ্য।

আমি জেন্টু লিনাক্স চালাচ্ছি। আমার /etc/logrotate.confফাইল:

$ cat /etc/logrotate.conf 
# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/files/logrotate.conf,v 1.3 2008/12/24 20:49:10 dang Exp $
#
# Logrotate default configuration file for Gentoo Linux
#
# See "man logrotate" for details
# rotate log files weekly
weekly
#daily
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
compress
# packages can drop log rotation information into this directory
include /etc/logrotate.d
notifempty
nomail
noolddir
# no packages own lastlog or wtmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
    rotate 1
}
/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

/etc/logrotate.d উপরে বর্ণিত আমার কাস্টম কনফিগারেশন ফাইলগুলিতে সেই প্যাকেজগুলি দ্বারা ইনস্টল করা মাইএসকিএল, আরএসসিএন, ইত্যাদির কনফিগারেশন রয়েছে।

আমার মূল crontabশূন্য:

$ sudo crontab -l
no crontab for root

আমি সব চেক করা /etc/cron.{daily,hourly,monthly,weekly}কিছু সম্পর্কিত syslog- র জন্য, এবং সেখানে কোনো স্ক্রিপ্ট rotates এর /var/log/syslogএবং /var/log/auth.log

এর পরে, আমি একটি তৈরি /var/log/messages-only logrotateকনফিগ ফাইল হিসাবে CarpeNoctem দ্বারা প্রস্তাবিত:

$ cat logrotate-messages 
weekly
rotate 4
create
dateext
compress
notifempty
nomail
noolddir
/var/log/messages {
    rotate 5
    daily
    postrotate
        /bin/killall -HUP syslogd
    endscript
}

তারপরে আমি logrotateম্যানুয়ালি দৌড়েছি :

$ logrotate -d logrotate-messages -f
reading config file logrotate-messages
reading config info for /var/log/messages 

Handling 1 logs

rotating pattern: /var/log/messages  forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/messages
  log needs rotating
rotating log /var/log/messages, log->rotateCount is 5
dateext suffix '-20100224'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /var/log/messages to /var/log/messages-20100224
creating new /var/log/messages mode = 0644 uid = 0 gid = 0
running postrotate script
running script with arg /var/log/messages : "
        /bin/killall -HUP syslogd
"
compressing log with: /bin/gzip
$ which gzip
/bin/gzip
$ file /bin/gzip
/bin/gzip: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

উপরের লগ অনুসারে, logrotateলগটিকে / বিন / জিজিপ দিয়ে সংকুচিত করুন, তবে আমি কোনও সংকোচিত বার্তাগুলি ফাইল দেখতে পাচ্ছি না /var/log। এছাড়াও, পুরানো ঘোরানো ফাইলগুলির জন্য গ্লোববিং ব্যর্থ।

সম্পাদনা 2 : পুরানো ফাইলগুলিতে প্রত্যয় যুক্ত করার logrotateপরে রানের ডিবাগ আউটপুট যুক্ত করা।.gz/var/log/message-*

আমরা এর সাথে শুরু করি:

$ ls /var/log/messages*
/var/log/messages              /var/log/messages-20100222.gz
/var/log/messages-20100219.gz  /var/log/messages-20100223.gz
/var/log/messages-20100220.gz  /var/log/messages-20100224.gz
/var/log/messages-20100221.gz

তারপরে logrotateআমাদের কাস্টম কনফিগারেশন ফাইলটি দিয়ে চালান :

$ logrotate -d logrotate-messages -f
reading config file logrotate-messages
reading config info for /var/log/messages 

Handling 1 logs

rotating pattern: /var/log/messages  forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/messages
  log needs rotating
rotating log /var/log/messages, log->rotateCount is 5
dateext suffix '-20100224'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
removing /var/log/messages-20100219.gz
removing old log /var/log/messages-20100219.gz
destination /var/log/messages-20100224.gz already exists, skipping rotation

এবার, logrotateগ্লোব সাফল্য পেয়েছে এবং এটি সরাতে চাইছে ষষ্ঠ সংক্ষেপিত লগফিলটিকে। ফাইলটি আসলে সরানো হয়নি; আমার ধারণা এটি কারণ আমরা ডিবাগ মোডে চলছি।

আমি কৌতূহল করছি এর delaycompressবিকল্পটি সক্ষম করা /var/log/messagesসাহায্য করবে কিনা । আমি এটি সক্ষম করেছি এবং পরদিন সকালে ফলাফলগুলি পরীক্ষা করব।


আপনি কি আপনার লোগ্রোটেট.কনফ পোস্ট করতে পারেন? আপনি এতক্ষণ ভাগ করেছেন এমন কিছু অংশে সেই বার্তাগুলির ফাইলে তারিখের প্রত্যয়টি ব্যাখ্যা করা যায় না। লোগ্রোটেট ঘোরানো লগ ফাইলগুলিতে তারিখের প্রত্যয়গুলি সমর্থন করতে ব্যবহৃত হয়নি। এটি আমাকে বিশ্বাস করতে পরিচালিত করে যে অন্য কিছু সম্পূর্ণরূপে এই ফাইলগুলি তৈরি করছে। আপনার অন্য স্ক্রিপ্ট একই কাজ করতে চেষ্টা করছে কিনা তা দেখতে / ইত্যাদি / ক্রন্টব, রুটের ক্রোনটাব এবং /etc/cron.daily দেখুন।
jmtd

এটি ছাড়াও, আপনি আমাদের বলতে পারেন যে আপনি কী লিনাক্স বিতরণ করছেন? ডেবিয়ান / উবুন্টুর নিজস্ব লগ রোটেশন স্ক্রিপ্ট রয়েছে যা আপনার লোগ্রোটেট স্টাফগুলিকে মেক করতে পারে।
দ্য পকেটওয়াদে

জবাবের জন্য ধন্যবাদ. আমি জেন্টু লিনাক্স চালাচ্ছি। আমার ক্রোনট্যাবগুলি / var / লগ / বার্তাগুলির কোনও পরিচালনা করছে না। বিস্তারিত জানতে আমার প্রশ্নে নতুন তথ্য দেখুন।
মাইক মাজুর

উত্তর:


8

delaycompressসমস্যার সমাধানের জন্য কনফিগারেশন বিভাগে যুক্ত করা /var/log/messages

থেকে man logrotate:

   delaycompress
          Postpone  compression of the previous log file to the next rota‐
          tion cycle.  This only has effect when used in combination  with
          compress.   It  can  be used when some program cannot be told to
          close its logfile and thus might continue writing to the  previ‐
          ous log file for some time.

আমার ধারণা sysklogd, আমার সিসলগ ডেমনকে এটির লগফিল বন্ধ করতে বলা যায় না, এবং এটি প্রয়োজনীয়।

মজার ব্যাপার হচ্ছে, মূল কনফিগারেশন আমি ছিল (ছাড়া delaycompressডিরেক্টিভের), সরল বেরিয়ে আসেন man logrotate(-setup আমি পরিবর্তন weeklyকরতে daily):

   # sample logrotate configuration file
   compress

   /var/log/messages {
       rotate 5
       weekly
       postrotate
           /usr/bin/killall -HUP syslogd
       endscript
   }

এটি অজানা অজানা বিকল্প বলছে 'ডেলালি কমপ্রেস' # লোগ্রোটেট-ভি /etc/logrotate.d/apc_rtbinfo.conf কনফিগার ফাইল /etc/logrotate.d/apc_rtbinfo.conf /mnt/log/frengo/apc_rtbinfo.log জন্য কনফিগারেশন তথ্য পড়ার ত্রুটি: /etc/logrotate.d/apc_rtbinfo.conf:7 অজানা বিকল্প 'delalycompress' - লাইন উপেক্ষা 1 লগ হ্যান্ডলিং
আশীষ কার্পে

# বিড়াল /etc/logrotate.d/apc_rtbinfo.conf /mnt/log/frengo/apc_rtbinfo.log {দৈনিক অনুপস্থিত নোটইমপটি আকার 2000M কম্প্রেস delalycompress অংশীদারি স্ক্রিপ্টস copytruncate ঘোরান 3}
আশিষ

1
ঠিক আছে "delalycompress" টাইপ করার ত্রুটি পেয়েছে
আশীষ

তবে এখন বিষয়টি হ'ল লগ ১.২০০ এম # ডু -শ / এমএনটি / ব্লগ / ফ্রেংগো / এপসি_আর্টবিনফো.লগাঃ 0 / এমএনটি / ব্লগ / ফ্রেংগো / অ্যাপসি_আর্টবিনফো.লগ 4.7 জি / মন্ট / ব্লগ / ফ্রেংগো / অ্যাপসি_আর্টবিনফো.লগ .1 80M /mnt/log/frengo/apc_rtbinfo.log.2 0 /mnt/log/frengo/apc_rtbinfo.log-20151222 679M /mnt/log/frengo/apc_rtbinfo.log-20151225.gz 681 এম / এমএনটি / লগ / ফ্রেং । gz 80M /mnt/log/frengo/apc_rtbinfo.log.3 80M /mnt/log/frengo/apc_rtbinfo.log.4
আশীষ

5

কেবল এই তথ্যের সাথে বলা শক্ত, তবে আমি আপনাকে বলতে পারি যা আমাকে কয়েকবার বাঁচিয়েছে।

লোগ্রোটেটের একটি ডিবাগ বিকল্প রয়েছে যা স্টাডাউটের জন্য নেওয়া প্রতিটি পদক্ষেপের প্লে-বাই-প্লে মুদ্রণ করবে। সুতরাং এই ক্ষেত্রে আপনি করতে পারেন:

logrotate -d /etc/logrotate.conf

আউটপুট আপনাকে জানাবে যে ঠিক কী চলছে। এছাড়াও, আপনি যদি ডিবাগ আউটপুট সঙ্কুচিত করতে চান তবে আপনি করতে পারেন

logrotate -d /etc/logrotate.d/messages

যদিও আপনি অস্থায়ীভাবে সেই ফাইলগুলিতে প্রধান লোগ্রোটেট.কনফ বিকল্পগুলি রাখতে চান যেহেতু ফাইলটি সরাসরি নির্দিষ্ট করার অর্থ এটি কখনই মূল কনফিগারেশন অপশনগুলি পড়তে পারে না। স্বতন্ত্র ফাইল নির্দিষ্টকরণের অর্থ হ'ল -fসংঘবদ্ধ হওয়া বার্তাগুলির ফাইলের প্রকৃত ঘূর্ণনটি দেখার জন্য আপনি ডিবাগ বিকল্পের সাথে মিলিয়ে (বল) বিকল্পটি ব্যবহার করতে পারেন ।


আপনার পরামর্শ মতো আমি ম্যানুয়ালি লোগ্রোটেট চালানোর চেষ্টা করেছি এবং এটি আমাকে বলছে এটি লগগুলি সংকোচিত করছে, তবে আমি কোথাও কোনও সংকোচিত লগগুলি পাই না। বিস্তারিত জানতে আমার প্রশ্নটি দেখুন above
মাইক মাজুর

1
5 টি পুরানো বার্তাগুলির ফাইলগুলির নাম পরিবর্তন করুন যাতে তারা .gz দিয়ে শেষ হয় এবং দেখুন যে লোগ্রোটেটটি এটির মতো প্রাচীনতমটিকে সরিয়ে দেয়। যদি তা হয় তবে আমরা জানি যে জিজেপ সঠিকভাবে না চলার কারণে গ্লোববিং ব্যর্থ হচ্ছে। এটি কমপক্ষে নিশ্চিত করবে যে সংক্রমণের অভাবটি ঘোরার অভাবের জন্য দায়ী blame
কার্পনোকটম

সম্পন্ন হয়েছে, উপরের প্রশ্নটিতে বিশদ যুক্ত হয়েছে। লাইভ /var/log/messagesফাইলটি নিয়ে কোনও বিতর্ক সমস্যা আছে কিনা এবং delaycompressবিকল্পটি সহায়তা করবে কিনা তা সম্পর্কে আমি আগ্রহী ।
মাইক মাজুর

আর একটি আকর্ষণীয় বিষয় যা আমি জানতে পেরেছি। আপনি যখন -d বিকল্পটি সক্ষম করেন, লোগ্রোটেট কমান্ড লগ ফাইলগুলিতে স্পর্শ করবে না। আরও তথ্যের জন্য ম্যানুয়াল পরীক্ষা করে দেখুন। -d, --debug Turns on debug mode and implies -v. In debug mode, no changes will be made to the logs or to the logrotate state file.
সিবিআর

1

আপনার লোগ্রোটেট.কম এ এই সেটিংটি চেষ্টা করে দেখুন:

dateformat .%Y%m%d

এবং আপনার বিদ্যমান বার্তাগুলি ফাইলগুলির নাম বদলে ড্যাশের পরিবর্তে ডট ব্যবহার করুন। তারপরে আপনার লোগ্রোটেটটি আবার চেষ্টা করুন।

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

dateext suffix '-20100224'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed

আমি মনে করি না এটিই এর মূল কারণ। ড্যাশ সহ বর্তমান তারিখের ফর্ম্যাটটি অন্যান্য লগ ফাইলের জন্য ঠিক কাজ করে। এই লগ ফাইলগুলির মধ্যে পার্থক্য এবং /var/log/messagesঘোরানো /var/log/messagesফাইলগুলি সংকুচিত হয় না।
মাইক মাজুর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.