GNU/Linux >> Belajar Linux >  >> Linux

Memahami utilitas logrotate

Log berguna saat Anda ingin melacak penggunaan atau memecahkan masalah aplikasi. Namun, karena lebih banyak informasi yang dicatat, file log menggunakan lebih banyak ruang disk. Lembur file log dapat tumbuh menjadi ukuran berat. Kehabisan ruang disk karena file log yang besar merupakan masalah, tetapi file log yang besar juga dapat memperlambat proses pengubahan ukuran atau pencadangan server virtual Anda. Selain itu, sulit untuk mencari peristiwa tertentu jika Anda memiliki sejuta entri log untuk ditelusuri. Jadi, ada baiknya untuk menyimpan file log ke ukuran yang dapat dikelola, dan memangkasnya saat sudah terlalu tua untuk tidak banyak digunakan.

Untungnya, utilitas logrotate membuat rotasi log menjadi mudah. “Rotasi log” mengacu pada praktik pengarsipan log aplikasi saat ini, memulai log baru, dan menghapus log lama. Sistem biasanya menjalankan logrotate sekali sehari, dan ketika dijalankan, sistem akan memeriksa aturan yang dapat disesuaikan berdasarkan per-direktori atau per-log.

Cara kerja logrotate

Sistem menjalankan logrotate sesuai jadwal, biasanya setiap hari. Pada sebagian besar distribusi, skrip yang menjalankan logrotate setiap hari terletak di/etc/cron.daily/logrotate .

Beberapa distribusi menggunakan variasi. Sebagai contoh, di Gentoo, skrip logrotate terletak di /etc/cron.daily/logrotate.cron .

Jika Anda ingin logrotate berjalan lebih sering (untuk rotasi log per jam, misalnya), Anda perlu menggunakan cron untuk menjalankan logrotate melalui skrip di/etc/cron.hourly .

Saat logrotate berjalan, ia membaca file konfigurasinya untuk menentukan di mana menemukan file log yang perlu dirotasi, seberapa sering file harus diputar ulang, dan berapa banyak log yang diarsipkan untuk disimpan.

logrotate.conf

File konfigurasi logrotate utama terletak di /etc/logrotate.conf .

File berisi parameter default yang digunakan logrotate saat memutar log. File dikomentari, sehingga Anda dapat membaca sekilas untuk melihat bagaimana konfigurasi diatur. Beberapa perintah khusus dalam file tersebut akan dijelaskan nanti dalam artikel ini.

Perhatikan bahwa satu baris dalam file berbunyi:

include /etc/logrotate.d

Direktori itu berisi sebagian besar file konfigurasi khusus aplikasi.

logrotate.d

Gunakan perintah berikut untuk membuat daftar isi direktori yang menyimpan pengaturan log khusus aplikasi:

ls /etc/logrotate.d

Tergantung pada seberapa banyak yang diinstal pada server Anda, direktori ini mungkin tidak berisi file atau beberapa. Secara umum, aplikasi yang diinstal melalui yourpackage manager juga akan membuat file konfigurasi di /etc/logrotate.d .

Biasanya direktori berisi file konfigurasi untuk layanan syslog Anda, yang dibaca logrotate ketika memutar log sistem. File ini berisi entri untuk berbagai log sistem, bersama dengan beberapa perintah yang mirip dengan yang ada di logrotate.conf .

CATATAN: Pada versi sistem operasi Ubuntu sebelum Karmic Koala (9.10) tidak ada entri untuk layanan syslog. Sebelum rilis itu, log sistem diputar oleh savelog perintah dijalankan dari /etc/cron.daily/sysklogd naskah.

Di dalam file aplikasi

Sebagai contoh, perhatikan konten file konfigurasi logrotate yang mungkin ada saat Anda menginstal Apache pada sistem Fedora:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
    /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
  }

Saat logrotate berjalan, ia memeriksa file apa pun di /var/log/httpd yang diakhiri denganlog dan memutarnya, jika tidak kosong. Jika memeriksa direktori httpd dan tidak menemukan file log apa pun, itu tidak menghasilkan kesalahan. Kemudian menjalankan perintah di postrotate/endscript block (dalam hal ini, perintah yang memberitahu Apache untuk memulai ulang), tetapi hanya setelah ia memproses semua log yang ditentukan.

File contoh ini tidak berisi beberapa pengaturan yang termasuk dalam logrotate.conf mengajukan. Perintah di logrotate.conf bertindak sebagai default untuk rotasi log. Anda dapat menentukan pengaturan yang berbeda untuk aplikasi apa pun saat Anda ingin mengganti default. Misalnya, jika Anda menggunakan server web yang sibuk, Anda mungkin ingin menyertakan daily perintah di blok konfigurasi Apache sehingga log Apache akan dirotasi setiap hari, bukan rotasi mingguan default.

Bagian selanjutnya menjelaskan beberapa perintah yang lebih umum digunakan yang sebenarnya dilakukan dalam file konfigurasi logrotate.

Perintah konfigurasi

Anda bisa mendapatkan daftar lengkap perintah yang digunakan dalam file konfigurasi logrotate dengan memeriksa halaman manual:

man logrotate

Bagian ini menjelaskan perintah yang lebih umum digunakan.

Ingat, file konfigurasi untuk aplikasi di /etc/logrotate.d mewarisi default mereka dari /etc/logrotate.conf utama berkas.

Log file

File log dan perilaku rotasinya ditentukan dengan mendaftar file log (atau file) diikuti oleh serangkaian perintah yang diapit dalam tanda kurung kurawal. Sebagian besar file konfigurasi aplikasi hanya akan berisi satu blok ini, tetapi dimungkinkan untuk menempatkan lebih dari satu dalam satu file, atau menambahkan blok file log ke logrotate.conf utama berkas.

Anda dapat membuat daftar lebih dari satu file log untuk satu blok dengan menggunakan wildcard dalam nama atau dengan memisahkan file log dalam daftar dengan spasi. Misalnya, untuk menentukan semua file di direktori /var/foo yang diakhiri dengan .log , dan file/var/bar/log.txt , Anda akan mengatur blok sebagai berikut:

 /var/foo/*.log /var/bar/log.txt {
        rotate 14
        daily
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/sbin/apachectl graceful > /dev/null
        Endscript
}

Memutar hitungan

rotate perintah menentukan berapa banyak log yang diarsipkan dikembalikan sebelum logrotate mulai menghapus yang lama. Misalnya:

rotate 4

Perintah ini memberi tahu logrotate untuk menyimpan empat log yang diarsipkan sekaligus. Jika ada empat log yang diarsipkan saat log diputar lagi, yang terlama akan dihapus untuk memberi ruang bagi arsip baru.

Interval rotasi

Anda dapat menentukan perintah yang memberi tahu logrotate seberapa sering memutar log tertentu. Perintah yang mungkin termasuk:

daily
weekly
monthly
yearly

Jika interval rotasi tidak ditentukan, log akan diputar setiap kalilogrotate berjalan (kecuali kondisi lain seperti size telah disetel).

Jika Anda ingin menggunakan interval waktu selain yang ditentukan, Anda perlu menggunakan cron untuk membuat file konfigurasi terpisah. Misalnya, jika Anda ingin memutar file log tertentu setiap jam, Anda dapat membuat file di/etc/cron.hourly (Anda mungkin perlu membuat direktori itu juga) yang akan berisi baris seperti berikut:

/usr/sbin/logrotate /etc/logrotate.hourly.conf

Kemudian Anda akan meletakkan konfigurasi untuk logrotate yang dijalankan setiap jam (lokasi file log, apakah akan mengompresi file lama atau tidak, dan seterusnya) ke dalam/etc/logrotate.hourly.conf .

Ukuran

Anda dapat menggunakan size perintah untuk menentukan ukuran file untuk logrotate untuk diperiksa saat menentukan apakah akan melakukan rotasi. Format perintah memberitahulogrotate unit apa yang Anda gunakan untuk menentukan ukurannya:

size 100k
size 100M
size 100G

Contoh pertama akan memutar log jika lebih besar dari 100 kilobyte, dan yang kedua jika lebih besar dari 100 megabyte, dan yang ketiga jika lebih dari 100 gigabyte. Saya tidak merekomendasikan menggunakan batas 100G, ingatlah, contohnya hanya sedikit di luar kendali di sana.

Perintah ukuran lebih diprioritaskan dan menggantikan interval rotasi jika keduanya disetel.

Kompresi

Jika Anda ingin file log yang diarsipkan dikompresi (dalam format gzip), Anda dapat memasukkan perintah berikut, biasanya di /etc/logrotate.conf :

compress

Kompresi biasanya merupakan ide yang bagus, karena file log biasanya semua teks dan teks terkompresi dengan baik. Namun, jika Anda memiliki beberapa log yang diarsipkan yang tidak ingin Anda kompres, tetapi Anda tetap ingin kompresi diaktifkan secara default, Anda dapat menyertakan perintah berikut dalam konfigurasi khusus aplikasi:

nocompress

Perintah lain yang perlu diperhatikan sehubungan dengan kompresi adalah sebagai berikut:

delaycompress

Perintah ini berguna jika Anda ingin mengompresi log yang diarsipkan, tetapi ingin menunda kompresi. Saat delaycompress aktif, sebuah archivedlog dikompresi saat log diputar lagi. Ini bisa menjadi penting ketika Anda memiliki program yang mungkin masih menulis ke file log lama untuk beberapa saat setelah yang baru diputar. Perhatikan bahwa delaycompress hanya berfungsi jika Anda memiliki compress dalam konfigurasi Anda.

Contoh waktu yang baik untuk menggunakan delaycompress akan terjadi ketika logrotatediminta untuk me-restart Apache dengan direktif "anggun" atau "reload". Karena proses Apache lama tidak berakhir sampai koneksi mereka selesai, mereka berpotensi mencoba memasukkan lebih banyak item ke file lama untuk beberapa waktu setelah restart. Menunda kompresi memastikan bahwa Anda tidak akan kehilangan entri log tambahan tersebut saat log diputar.

Postrotate

Logrotate menjalankan postrotate skrip setiap kali memutar log yang ditentukan dalam blok konfigurasi. Anda biasanya ingin menggunakan skrip ini untuk memulai ulang aplikasi setelah rotasi log sehingga aplikasi dapat beralih ke log baru.

postrotate
    /usr/sbin/apachectl restart > /dev/null
endscript

>/dev/null memberitahu logrotate untuk menyalurkan output perintah ke mana-mana. Dalam hal ini, Anda tidak perlu melihat output jika aplikasi dimulai ulang dengan benar.

postrotate perintah memberitahu logrotate bahwa skrip yang akan dijalankan, dimulai pada baris berikutnya, dan endscript perintah mengatakan bahwa skrip sudah selesai.

Skrip Bersama

Biasanya logrotate menjalankan postrotate skrip setiap kali memutar log. Hal ini juga berlaku untuk beberapa log yang menggunakan blok konfigurasi yang sama. Misalnya, blok konfigurasi server web yang mengacu pada log akses dan log kesalahan akan, jika memutar keduanya, menjalankan postrotate skrip dua kali (sekali untuk setiap file yang diputar). Jika kedua file diputar, server web akan dimulai ulang dua kali.

Agar logrotate tidak menjalankan skrip itu untuk setiap log, Anda dapat memasukkan perintah berikut:

sharedscripts

Perintah ini memberitahu logrotate untuk memeriksa semua log untuk blok konfigurasi tersebut sebelum menjalankan postrotate naskah. Jika salah satu atau kedua log diputar, postrotate skrip hanya berjalan sekali. Jika tidak ada logsis yang diputar, postrotate skrip tidak berjalan.

Ke mana harus pergi selanjutnya

Artikel ini memberikan gambaran umum tentang apa yang dilakukan logrotate dan jenis opsi konfigurasi yang tersedia untuk Anda. Anda sekarang harus dapat menjelajahi konfigurasi yang ada dan menyesuaikannya dengan kebutuhan Anda. Untuk mempelajari cara membuat contoh konfigurasi (untuk merotasi log untuk host virtual khusus), lihat Contoh konfigurasi dan pemecahan masalah rotasi log.


Linux
  1. Linux – Memahami Izin Unix Dan Jenis File?

  2. Memahami file /etc/login.defs

  3. Memahami File Konfigurasi /etc/profile di Linux

  1. Cara menggunakan Logrotate untuk mengelola file log

  2. Batasi akses file untuk menambahkan saja

  3. Logrotate Berhasil, file asli kembali ke ukuran aslinya

  1. Memahami stempel waktu file Mac

  2. cp -L vs cp -H

  3. Memahami izin UNIX dan tipe file