GNU/Linux >> Belajar Linux >  >> Linux

Pengaturan Centos/Linux logrotate ke ukuran file maksimum untuk semua log

Seperti yang disebutkan oleh Zeeshan, opsi logrotate size , minsize , maxsize adalah pemicu rotasi.

Untuk lebih menjelaskannya. Anda dapat menjalankan logrotate sesering yang Anda suka, tetapi kecuali ambang tercapai seperti ukuran file tercapai atau waktu yang sesuai berlalu, log tidak akan diputar.

Opsi ukuran tidak memastikan bahwa log yang diputar juga memiliki ukuran yang ditentukan. Untuk membuatnya mendekati ukuran yang ditentukan, Anda perlu cukup sering memanggil program logrotate. Ini penting.

Untuk file log yang dibangun dengan sangat cepat (misalnya dalam ratusan MB per hari), kecuali jika Anda ingin file tersebut berukuran sangat besar, Anda perlu memastikan logrotate sering dipanggil! ini penting.

Oleh karena itu, untuk menghentikan pengisian disk Anda dengan file log multi-gigabyte, Anda perlu memastikan logrotate cukup sering dipanggil, jika tidak, rotasi log tidak akan berfungsi sebaik yang Anda inginkan.

di Ubuntu, Anda dapat dengan mudah beralih ke rotasi per jam dengan memindahkan skrip /etc/cron.daily/logrotate ke /etc/cron.hourly/logrotate

Atau tambahkan

*/5 * * * * /etc/cron.daily/logrotate 

Ke file /etc/crontab Anda. Untuk menjalankannya setiap 5 menit.

size opsi mengabaikan opsi waktu harian, mingguan, bulanan. Tapi minsize &maxsize memperhitungkannya.

Halaman manual agak membingungkan di sana. Berikut penjelasan saya.

minsize berputar hanya ketika file telah mencapai ukuran yang sesuai dan periode waktu yang ditetapkan telah berlalu. misalnya minsize 50MB + harianJika file mencapai 50MB sebelum waktu harian habis, file akan terus bertambah hingga hari berikutnya.

maxsize akan berputar ketika log mencapai ukuran yang ditetapkan atau waktu yang sesuai telah berlalu. misalnya maxsize 50MB + harian. Jika file 50MB dan kami belum di hari berikutnya, log akan diputar. Jika file hanya 20MB dan kita roll ke hari berikutnya maka file akan dirotasi.

size akan berputar ketika log> ukuran. Terlepas dari apakah per jam/harian/mingguan/bulanan ditentukan. Jadi jika Anda memiliki ukuran 100M - artinya ketika file log Anda> 100M log akan diputar jika logrotate dijalankan saat kondisi ini benar. Setelah diputar, log utama akan menjadi 0, dan proses berikutnya tidak akan menghasilkan apa-apa.

Jadi dalam kasus op. Secara khusus maks 50MB saya akan menggunakan sesuatu seperti berikut:

/var/log/logpath/*.log {
    maxsize 50M
    hourly
    missingok
    rotate 8
    compress
    notifempty
    nocreate
}

Yang berarti dia akan membuat log maksimal 8 jam. Dan akan ada 8 dari mereka masing-masing tidak lebih dari 50MB. Karena dia mengatakan bahwa dia mendapatkan multi gigabyte setiap hari dan dengan asumsi mereka membangun pada tingkat yang cukup konstan, dan maxsize digunakan, dia akan berakhir dengan mendekati batas maksimum yang dicapai untuk setiap file. Jadi masing-masing kemungkinan akan mendekati 50MB. Mengingat volume yang dibuat, dia perlu memastikan bahwa logrotate dijalankan cukup sering untuk memenuhi ukuran target.

Karena saya telah menempatkan setiap jam di sana, kami membutuhkan logrotate untuk dijalankan minimal setiap jam. Tetapi karena mereka membangun untuk mengatakan 2 gigabyte per hari dan kami ingin 50MB ... dengan asumsi kecepatan konstan 83MB per jam. Jadi bisa dibayangkan jika kita menjalankan logrotate setiap jam, meskipun pengaturan maxsize ke 50 kita akan berakhir dengan log 83MB dalam kasus itu. Jadi dalam hal ini, setel lari ke setiap 30 menit atau kurang sudah cukup.

Pastikan logrotate dijalankan setiap 30 menit.

*/30 * * * * /etc/cron.daily/logrotate 

Ini menentukan ukuran file log untuk memicu rotasi. Misalnya size 50M akan memicu rotasi log setelah file berukuran 50MB atau lebih besar. Anda dapat menggunakan akhiran M untuk megabita, k untuk kilobyte, dan G untuk gigabyte. Jika tidak ada akhiran yang digunakan, itu berarti byte. Anda dapat memeriksa contoh di bagian akhir. Ada tiga arahan yang tersedia size , maxsize , dan minsize . Menurut halaman manual:

minsize size
              Log  files  are  rotated when they grow bigger than size bytes,
              but not before the additionally specified time interval (daily,
              weekly,  monthly, or yearly).  The related size option is simi-
              lar except that it is mutually exclusive with the time interval
              options,  and  it causes log files to be rotated without regard
              for the last rotation time.  When minsize  is  used,  both  the
              size and timestamp of a log file are considered.

size size
              Log files are rotated only if they grow bigger then size bytes.
              If size is followed by k, the size is assumed to  be  in  kilo-
              bytes.  If the M is used, the size is in megabytes, and if G is
              used, the size is in gigabytes. So size 100,  size  100k,  size
              100M and size 100G are all valid.
maxsize size
              Log files are rotated when they grow bigger than size bytes even before
              the additionally specified time interval (daily, weekly, monthly, 
              or yearly).  The related size option is  similar  except  that  it 
              is mutually exclusive with the time interval options, and it causes
              log files to be rotated without regard for the last rotation time.  
              When maxsize is used, both the size and timestamp of a log file are                  
              considered.

Ini contohnya:

"/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail [email protected]
           size 100k
           sharedscripts
           postrotate
               /usr/bin/killall -HUP httpd
           endscript
       }

Berikut penjelasan untuk kedua file /var/log/httpd/access.log dan /var/log/httpd/error.log . Mereka diputar setiap kali ukurannya bertambah lebih dari 100k, dan file log lama dikirimkan (tidak dikompresi) ke [email protected] setelah melalui 5 putaran, bukannya dihilangkan. sharedscripts artinya postrotate skrip hanya akan dijalankan satu kali (setelah log lama dikompresi), tidak satu kali untuk setiap log yang diputar. Perhatikan bahwa tanda kutip ganda di sekitar nama file pertama di awal bagian ini memungkinkan logrotate memutar log dengan spasi di namanya. Aturan kutipan shell normal berlaku, dengan , , dan \ karakter didukung.


Linux
  1. Transfer File Android untuk Linux – Kirim File ke Linux Tanpa Batas Ukuran

  2. Cara Membuat Rotasi File Log Kustom dengan logrotate di Linux

  3. Semua Perintah Kompres/Dekompresi Linux

  1. 10 alias Bash yang berguna untuk Linux

  2. PID maksimum di Linux

  3. redirect log layanan systemd ke file

  1. Putar dan arsipkan log dengan perintah Linux logrotate

  2. Linux – Bagaimana Cara Mengatur Izin File Default Untuk Semua Folder / File Di Direktori?

  3. Cara Mengosongkan File Log di Linux