Logrotate: menyediakan putaran log. Pilihan yang berkaitan dengan saiz dan kewujudan fail log. Pilihan yang berkaitan dengan menghantar log

logrotate ialah program putaran log yang membolehkan anda menyimpan fail berasingan log untuk tempoh tertentu masa atau bahagikan log kepada bahagian-bahagian saiz tertentu. Logrotate membolehkan anda bekerja dengan log dengan sangat fleksibel, sambil mempunyai fail konfigurasi yang mudah dan mudah difahami. Selain itu, log boleh dimampatkan secara automatik dan dimaklumkan melalui mel tentang putaran, menghantar log baharu atau log terbaharu yang telah dipadamkan semasa putaran terakhir. DALAM masa ini logrotate ialah sistem putaran log yang paling biasa kerana ia digunakan secara meluas dalam sistem operasi di pangkalan kernel linux, yang menguasai industri pelayan di seluruh dunia.

konfigurasi logrotate

Konfigurasi logrotate dibahagikan kepada beberapa bahagian. Bahagian utama biasanya disimpan dalam fail /etc/logrotate.conf. Fail ini mungkin mengandungi bahagian untuk penggiliran log, serta arahan "include /etc/logrotate.d", yang merangkumi fail konfigurasi daripada direktori /etc/logrotate.d. Oleh itu, untuk membuat kerja putaran baharu, anda hanya perlu mencipta fail konfigurasi dan meletakkannya dalam direktori ini. Adalah dinasihatkan untuk menetapkan nama fail sama dengan nama perkhidmatan yang lognya akan diputar.

Berikut ialah contoh fail konfigurasi /etc/logrotate.conf:

# putar fail log mingguan setiap minggu # simpan 4 minggu tertunggak putar 4 # cipta fail log baharu (kosong) selepas diputar yang lama buat # nyahkomen ini jika anda mahu fail log anda dimampatkan #mampatkan # pakej letak maklumat penggiliran log ke dalam direktori ini sertakan /etc/logrotate.d # tiada pakej sendiri wtmp, atau btmp -- kami akan memutarkannya di sini /var/log/wtmp ( missingok bulanan buat 0664 root utmp rotate 1 ) /var/log/btmp ( missingok bulanan buat 0660 root utmp rotate 1 )

Seperti yang anda faham, bukan sahaja fail log boleh diputar, tetapi juga mana-mana fail lain. Sebagai contoh, anda boleh melakukan ini setiap hari sandaran beberapa fail tertentu. Tetapi putaran log adalah tepat tugas utama yang program pada mulanya menyelesaikan, dan menyelesaikan dengan baik.

Setiap fail dalam direktori /etc/logrotate.d boleh mengandungi satu atau lebih bahagian. Setiap bahagian kelihatan seperti Pandangan umum Jadi:

Nama fail log (parameter putaran)

Pilihan putaran ialah apa yang memberikan fleksibiliti putaran. logrotate mempunyai banyak pilihan, tetapi ia boleh dibahagikan kepada beberapa kumpulan. Berikut ialah pilihan yang boleh digunakan dalam fail konfigurasi:

Pilihan yang menentukan selang putaran:

Pilihan pemampatan log:

memampatkan Mampat log semasa putaran. Secara lalai gzip digunakan untuk pemampatan
compresscmd Perintah/program yang akan digunakan untuk memampatkan log
pilihan mampatan Pilihan arahan putaran untuk digunakan semasa memampatkan log
uncompresscmd Perintah unzip log. Lalai ialah gunzip
compressext Tentukan sambungan fail yang akan ditentukan untuk log termampat
delaycompress Tangguhkan pemampatan log sehingga putaran seterusnya. Justeru versi terkini log selepas putaran akan dinyahmampatkan, dan yang lebih awal akan dimampatkan
nocompress Jangan mampatkan kayu balak semasa putaran
nodelaycompress Jangan tangguhkan pemampatan sehingga lelaran putaran seterusnya. Pilihan ini membebankan pilihan delaycompress

Pilihan salinan:

salinan Salin fail log, tetapi jangan tukar yang asal. Pilihan ini boleh digunakan apabila anda perlu membuat syot kilat log masuk detik tertentu, bukannya putaran, atau apabila digunakan untuk memotong log program luar. Jika pilihan salin digunakan, maka pilihan cipta, jika dinyatakan, tidak akan mempunyai kesan sejak itu log lama tinggal.
copytruncate Potong fail asal ke saiz sifar selepas mencipta salinan dan bukannya menamakan semula fail asal dan mencipta yang baharu. Pilihan ini digunakan apabila program menulis log tidak boleh diberitahu untuk menutup pemegang yang dikaitkan dengan fail log dan membuka yang baharu. Program sedemikian boleh terus menulis kepada fail lama. Satu kaveat apabila menggunakan pilihan ini ialah penyalinan mengambil sedikit masa dan oleh itu fail tidak boleh disalin serta-merta. Semasa penyalinan, entri boleh ditambah pada log yang akan hilang apabila fail dipotong kepada saiz sifar. Apabila menggunakan pilihan ini, pilihan cipta juga tidak akan mempunyai kesan, kerana fail lama kekal di tempatnya
nocopy Jangan salin fail log asal. Pilihan ini membebankan pilihan salinan
nocopytruncate Jangan potong fail log asal selepas membuat salinan. Pilihan ini membebankan pilihan copytruncate

Pilihan untuk mencipta fail log baharu (selepas memutar yang lama):

buat kumpulan pemilik hak
buat kumpulan pemilik
Tentukan hak akses, pemilik dan kumpulan pemilikan bagi fail log yang baru dibuat sejurus selepas penciptaannya. Seperti yang telah disebutkan, jika pilihan salinan dan copytruncate digunakan, maka buat tidak masuk akal, kerana fail lama kekal di tempatnya, fail baharu tidak dicipta. Untuk pilihan cipta berfungsi, fail mesti tiada. Kebenaran dinyatakan dalam nilai perlapanan dengan cara yang sama seperti semasa menggunakan program chmod. Contohnya, 644 atau 600. Jika beberapa nilai (kebenaran/pemilik/kumpulan) ditinggalkan, ia akan sama dengan fail asal
nocreate Tiada fail log baharu dibuat. Pilihan ini membebankan pilihan cipta

Pilihan yang berkaitan dengan memadam fail log:

Pilihan berkaitan tarikh:

tarikhext Gunakan tarikh dan bukannya nombor dalam nama fail log lama. Apabila menggunakan nombor, nama kelihatan seperti ini: logfile.1.gz, logfile.2.gz dan sebagainya
nodatetext Jangan gunakan tarikh dalam nama fail log lama. Pilihan ini membebankan pilihan dateext
rentetan format dateformat Tentukan rentetan format untuk tarikh yang akan ditambahkan pada nama log. Rentetan format adalah serupa dengan yang digunakan dalam arahan tarikh, tetapi satu-satunya corak yang sah ialah %Y(nombor tahun empat digit), %m(nombor bulan dua digit), %d(hari dua digit dalam bulan) , dan %s(masa unix, bilangan saat sejak 00:00 01/01/1970). Nilai lalai ialah "-%Y%m%d", tolak juga disertakan dalam templat, ia boleh ditinggalkan apabila menentukan templat. Perlu diingatkan bahawa logrotate menggunakan pengisihan untuk menentukan fail lama yang perlu dialih keluar, jadi rentetan tarikh mesti menghormati pengisihan yang betul. Itulah sebabnya tahun biasanya ditulis dahulu, kemudian bulan dan barulah hari.
datesemalam Gunakan tarikh semalam untuk penggiliran. Oleh itu, tarikh dalam nama fail akan sepadan dengan tarikh fail yang berada di dalam arkib

Pilihan yang berkaitan dengan menghantar log:

Pilihan yang berkaitan dengan saiz dan kewujudan fail log:

saiz maxsize Log diputar apabila saiznya melebihi yang ditentukan, walaupun sebelum selang putaran seterusnya (harian, mingguan, bulanan, tahunan). Oleh kerana putaran sedemikian tidak bergantung pada masa, tidak masuk akal untuk menggunakan tarikh dalam nama fail.
saiz kecil Log diputar apabila saiznya lebih besar daripada yang ditentukan, tetapi tidak lebih awal daripada selang masa putaran yang sepadan (harian, mingguan, bulanan, tahunan)
saiz saiz Log diputar apabila saiznya lebih besar daripada bilangan bait yang ditentukan. Jika huruf k ditunjukkan selepas saiz, saiz dikira dalam kilobait, jika M - dalam megabait, jika G - dalam gigabait. Contohnya, 1G atau 10M.
jika kosong Putar fail log, walaupun ia kosong. Digunakan secara lalai.
notifempty Jangan putar fail log jika ia kosong. Membebankan pilihan jika kosong.
missingok Jika fail log tiada, pergi ke fail seterusnya tanpa mesej ralat
nomissingok Jika fail log tiada, ralat akan berlaku. Pilihan ini ditetapkan secara lalai.

Pilihan yang berkaitan dengan direktori di mana log disimpan:

Fail tetapan untuk logrotate membolehkan anda melaksanakan skrip semasa putaran log. Dengan cara ini anda boleh melakukan beberapa tindakan pada setiap peringkat putaran.

Pilihan pelaksanaan skrip:

postrotate/endscript Baris antara perkataan postrotate dan endscript, setiap satunya harus berada pada baris yang berasingan, dilaksanakan menggunakan /bin/sh selepas memutar fail log. Biasanya skrip diluluskan sebagai hujah pertama nama penuh fail log dengan laluan. Jika arahan sharedscripts ditentukan, maka senarai fail dihantar. Dengan cara ini anda boleh melaksanakan skrip untuk semua fail sekaligus
praputar/akhir skrip Baris antara perkataan praputar dan skrip tamat, setiap satunya mestilah pada baris yang berasingan, dilaksanakan menggunakan /bin/sh sebelum memutar fail log. Lazimnya, skrip itu diberikan nama penuh fail log dengan laluan sebagai hujah pertama. Jika arahan sharedscripts ditentukan, maka senarai fail dihantar.
skrip kongsi DALAM mod biasa skrip dilaksanakan sekali untuk setiap fail yang ditentukan untuk putaran. Dengan cara ini, skrip boleh dilaksanakan beberapa kali, sekali untuk setiap fail yang ditentukan untuk penggiliran. Jika arahan sharedscripts ditentukan, maka skrip dilaksanakan sekali pada satu masa, tetapi senarai fail dihantar kepada mereka sebagai argumen. Jika tiada fail log diputar, skrip tidak akan dilaksanakan. Jika ralat berlaku semasa pelaksanaan skrip, tindakan itu tidak akan selesai untuk semua log.
nosharedscripts Jalankan skrip prerotate dan postrotate untuk setiap log yang sedang diputar. Ini adalah lalai, dan arahan ini juga membebankan skrip kongsi. Skrip dihantar jalan mutlak untuk log fail. Jika ralat berlaku semasa pelaksanaan skrip, tindakan itu tidak akan selesai untuk satu sahaja fail semasa log.
pra-alih keluar/skrip tamat Baris antara perkataan preremove dan endscript, setiap satunya harus berada pada baris yang berasingan, dilaksanakan menggunakan /bin/sh sebelum memadamkan fail log lama. logrotate akan menghantar nama fail yang akan dipadamkan ke skrip sebagai hujah
firstaction/endscript Baris antara firstaction dan endscript, setiap satu pada baris yang berasingan, dilaksanakan menggunakan /bin/sh sekali sebelum fail log diputar dan sebelum bahagian praputar dilaksanakan. Ini hanya akan berlaku jika sekurang-kurangnya satu fail log sebenarnya diputar. Keseluruhan senarai fail dalam bahagian semasa dihantar ke skrip sebagai argumen. Jika skrip gagal, tidak akan ada larian lain.
lastaction/endscript Baris antara lastaction dan endscript, setiap satunya mesti berada pada baris yang berasingan, dilaksanakan menggunakan /bin/sh sekali sahaja selepas fail log telah diputar dan walaupun selepas bahagian postrotate telah dilaksanakan. Ini hanya akan berlaku jika sekurang-kurangnya satu fail log diputar. Keseluruhan senarai fail dalam bahagian semasa dihantar ke skrip sebagai argumen. Jika skrip gagal, tidak akan ada larian lain.

Pilihan Tujuan Umum:

sambungan Fail log dengan sambungan yang ditentukan boleh mengekalkannya selepas putaran. Jika pemampatan digunakan, maka sambungan dengan jenis arkib (biasanya .gz) muncul selepas sambungan. Contohnya, jika fail log anda dipanggil mylog.foo dan anda ingin mendapatkan fail mylog.1.foo.gz semasa putaran, dan bukan mylog.foo.1.gz
kuantiti berputar Fail log diputar beberapa kali tertentu sebelum dipadamkan atau dihantar ke alamat yang dinyatakan dalam arahan mel. Jika kiraan ialah 0, versi lama hanya dipadamkan dan bukannya diputar.
nombor mula Nyatakan nombor yang digunakan sebagai asas untuk penomboran semasa putaran. Sebagai contoh, jika anda menentukan 0, maka fail asal akan diputarkan kepada fail yang berakhir dengan .0, dan kemudian dalam susunan yang semakin meningkat, jika anda menentukan 9, maka penomboran akan bermula dari .9. Walau apa pun, fail akan diputarkan bilangan kali yang dinyatakan dalam arahan kiraan.
kumpulan pengguna su Lakukan putaran log di bawah pengguna dan kumpulan yang ditentukan dan bukannya pengguna lalai (biasanya root). Jika pengguna atau kumpulan tidak mempunyai hak yang mencukupi untuk melakukan penggiliran, ralat akan berlaku.
sertakan fail-atau-direktori logrotate membaca fail yang ditentukan dan memasukkannya sebagaimana adanya ke dalam fail konfigurasi di tempat di mana arahan sertakan telah dimasukkan. Jika direktori ditentukan, fail daripadanya diisih mengikut abjad dan kemudian dimasukkan ke dalam konfigurasi. Lebih-lebih lagi, jika fail tidak fail biasa, mereka tidak diendahkan. Ini boleh, sebagai contoh, dinamakan paip atau direktori. Fail dengan sambungan yang dinyatakan dalam direktori tabooext juga diabaikan.
senarai tabooext [+]. Tukar senarai semasa sambungan yang diabaikan. Jika senarai didahului oleh +, maka senarai semasa ditambah dengan yang ditentukan. Jika + tidak dinyatakan, maka senarai akan diganti. Secara lalai, senarai pada mulanya termasuk sambungan berikut: .rpmsave, .rpmorig, ~, .disabled, .dpkg-old, .dpkg-dist, .dpkg-new, .cfsaved, .ucf-old, .ucf-dist, .ucf- baru, .rpmnew, .swp, .cfsaved, .rhn-cfg-tmp-*

Dan akhirnya, contoh mudah.

/var/log/mydaemon/mydaemon.log /var/log/mydaemon/error.log( # Putaran harian setiap hari # Mulakan penomboran dari 0 mula 0 # Putar 30 kali sebelum memadam putaran 30 # Jangan jana ralat jika tiada fail log missingok # Padam log menggunakan perintah shred shred # Lakukan 3 kitaran tulis semula shredcycles 3 # Postrotate mampatan lengah log terakhir # Lakukan postrotate hanya sekali skrip kongsi # Selepas putaran, hantar isyarat SIGHUP kepada program, akibatnya # deskriptor log akan dibuka semula # (banyak program menyokong tingkah laku ini) postrotate kill -SIGHUP $(cat /var/run/mydaemon.pid) endscript )

Jika anda tidak pernah menggunakan logrotate sebelum ini atau pernah menggunakannya tetapi tidak pernah memperhalusinya, saya harap maklumat ini akan membantu anda.

Entah bagaimana suatu hari yang lalu saya menghadapi masalah, SAMS ternyata, ia tidak memaparkan statistik selama 6 bulan yang lalu. Setelah mula memikirkan apa yang berlaku kepadanya, saya mendapati bahawa fail log sotong-A ( akses.log) adalah saiz besar~20 GB. Selepas membaca sedikit dan mengkaji apa yang mungkin berkaitan dengan ini, saya membuat kesimpulan bahawa untuk SAMS Fail log terlalu besar dan entri daripada log tidak dipindahkan ke pangkalan data. Ini bermakna kita perlu memastikan bahawa log tidak berkembang ke saiz sedemikian, i.e. konfigurasikan putaran log sqiud-A. Baiklah, mari kita mulakan. Pertama, saya menyemak sama ada sistem mempunyai logrotate. Dengan melaksanakan arahan di mana logrotate Saya menerima /usr/ports/sysutils/logrotate sebagai tindak balas, yang menunjukkan bahawa tiada logrotate dalam sistem. Jadi anda perlu memasangnya. Kami laksanakan urutan berikut arahan:

# cd /usr/ports/sysutils/logrotate/
buat
# buat pemasangan

Selepas pemasangan selesai logrotate Mari kita teruskan untuk menyediakan program. Fail tetapan logrotate terletak dalam folder /usr/local/etc/. Fail tetapan dipanggil logroate.conf.sample. Namakan semula fail dengan menyalinnya ke fail logrotate.conf:

# cd /usr/local/etc/
# ls
apache php.ini-dist slsh.rc
logrotate.conf.sample php.ini-disyorkan sotong
pam.d rc.d supfile
php sams.conf xml2Conf.sh
php.conf sams.conf.sample xsltConf.sh
php.ini sams.core
# cp logrotate.conf.sample logrotate.conf
#

Mari mulakan persediaan. Lihat fail standard seperti:

# lihat "man logrotate" untuk butiran
# putar fail log setiap minggu
setiap minggu
#simpan 4 minggu tertunggak
berputar 4
# buat fail log baharu (kosong) selepas memutar fail lama
cipta
# nyahkomen ini jika anda mahu fail log anda dimampatkan
memampatkan
# Pakej RPM menggugurkan maklumat putaran log ke dalam direktori ini
sertakan /usr/local/etc/logrotate.d
/var/log/lastlog (
bulanan
berputar 1
}
# log khusus sistem mungkin dikonfigurasikan di sini

Log utama sotong-dan ini adalah fail akses.log yang terletak dalam folder /usr/local/squid/logs. Sehubungan itu, tambahkan baris berikut pada fail konfigurasi:

/usr/local/squid/logs/access.log ( #— fail log mana yang akan kami putar
bulanan #—berapa kerap melakukan putaran log—sebulan sekali
berputar 5 #- Berapa banyak versi sebelumnya simpan
copytruncate
nocompress
notifempty
missingok
skrip kongsi
postrotate #—arahan untuk dilaksanakan selepas putaran

/usr/local/etc/rc.d/squid mulakan semula #—arahan konfigurasi semula sotong itu sendiri
skrip akhir
}
Nah, itu nampaknya mengenai penggiliran log.

P.S.: Anda masih perlu mengkonfigurasi pelancaran logrotate mengikut jadual, untuk ini kita pergi ke folder /etc dan mengedit fail crontab yang ditambahkan di sana entri seterusnya:
# Jalankan logrotate setiap hari pertama bulan itu
0 0 1 * * root /usr/local/sbin/logrotate -f /usr/local/etc/logrotate.conf

Seperti yang ditunjukkan oleh respons pembaca, putaran log adalah salah satu topik yang menyebabkan beberapa kesukaran. Khususnya, terdapat masalah dengan menyediakan penggiliran log proksi pelayan sotong, menjadikannya sukar untuk mendapatkan laporan dalam tempoh yang lama. Oleh itu, kami memutuskan untuk menjelaskan dan memberitahu anda apa itu putaran log dan cara untuk menyediakannya.

Semua peristiwa yang patut diberi perhatian direkodkan oleh sistem dalam fail log atau fail log, yang kemudiannya boleh digunakan untuk menganalisis kegagalan, mendapatkan statistik, menyiasat insiden, dsb. dan sebagainya. Keperluan untuk pengelogan, peristiwa yang akan direkodkan, perincian dan kesempurnaannya biasanya dinyatakan dalam konfigurasi perkhidmatan tertentu dan, sebagai peraturan, mempunyai beberapa tetapan lalai yang sesuai untuk kebanyakan pengguna.

Untuk mengelakkan pertumbuhan fail sedemikian yang tidak terkawal, mekanisme diperlukan untuk mengehadkan bilangan rekod kepada beberapa had yang munasabah, ini boleh menjadi saiz fail, yang melebihi rekod lama akan ditimpa atau tempoh selepas rekod itu tidak lagi relevan dan boleh dipadamkan. DALAM Pelayan Ubuntu mekanisme sedemikian dipanggil putaran log dan dilaksanakan menggunakan perkhidmatan sistem logrotate.

Seperti namanya, putaran log secara berkala menggantikan log lama dengan yang baharu, meletakkan data lapuk dalam arkib atau hanya memadamkannya. Bergantung pada tetapan, arkib log boleh disimpan sama ada dalam bentuk termampat atau tidak dimampatkan dan mempunyai kedalaman yang diperlukan.

Tiada sekatan di sini, kecuali akal dan kelantangan cakera keras, membolehkan anda menyesuaikan proses mengikut keperluan anda. Jadi, sebagai contoh, anda boleh melakukan putaran harian dan menyimpan log semalam dalam bentuk tidak dimampatkan, dan selebihnya sebagai arkib. Dengan setiap putaran berikutnya, rantaian seolah-olah beralih, log terkini ditimpa oleh log kedua terakhir, dan log semasa dikosongkan (atau dicipta semula).

Mari kita lihat penyediaan putaran menggunakan contoh log pelayan proksi sotong, yang menyebabkan beberapa kesukaran untuk pembaca kami. Tetapan putaran asas disimpan dalam /etc/logrotate.conf, sebagai tambahan, perkhidmatan individu mungkin mempunyai tetapan sendiri putaran yang disimpan dalam fail khas dalam direktori /etc/logrotate.d, yang tetapannya bertindih dengan tetapan logrotate.conf.

Pendekatan ini membolehkan anda mengkonfigurasi putaran secara fleksibel untuk setiap perkhidmatan tertentu tanpa menjejaskan Tetapan umum. Perkhidmatan itu sendiri dipanggil sekali sehari melalui penjadual cron.

Mari buka fail /etc/logrotate.d/sotong, kami ada pandangan seterusnya:

#
#Logrotate pecahan untuk sotong.
#
/var/log/sotong/*.log (
setiap hari
memampatkan
delaycompress
berputar 2
missingok
nocreate
skrip kongsi
praputar
ujian! -x /usr/sbin/sarg-reports || /usr/sbin/sarg-reports
skrip akhir
postrotate
ujian! -e /var/run/squid.pid || /usr/sbin/sotong -k berputar
skrip akhir
}

Mari kita lihat strukturnya dengan lebih terperinci. Baris pertama menentukan laluan ke fail log yang sedang diproses. DALAM dalam kes ini semua fail dalam direktori diproses /var/log/sotong mengikut pilihan di bawah:

  • setiap hari- menetapkan putaran harian, untuk kegunaan mingguan atau bulanan setiap minggu atau bulanan.
  • memampatkan- menentukan untuk memampatkan log yang diarkibkan, pilihan yang bertentangan nocompress.
  • delaycompress- jangan mampatkan log semasa sehingga putaran seterusnya, biasanya digunakan dalam kes di mana rakaman berterusan berlaku dalam log.
  • berputar 2- bilangan putaran sebelum memadamkan fail; dalam kes ini, dua arkib akan disimpan.
  • missingok- jika tiada fail log, menunjukkan untuk terus bekerja tanpa memaparkan mesej ralat.
  • nocreate- jangan buat fail log baharu.
  • skrip kongsi- digunakan untuk bahagian praputar Dan postrotate, pilihan ini menentukan untuk melaksanakan skrip daripada bahagian ini sekali sebelum dan selepas putaran semua orang log, jika tidak, skrip akan dilaksanakan sebelum dan selepas putaran semua orang log.

Di bawah adalah bahagian praputar Dan postrotate, yang setiap satunya berakhir dengan baris skrip akhir, semua yang terletak di antara baris ini dilaksanakan sebelum dan selepas proses putaran.

Bahagian postrotate menyemak sama ada sotong sedang berjalan dan memulakan penggiliran log oleh pelayan proksi itu sendiri. Mari kita fikirkan perkara ini dengan lebih terperinci. DALAM fail konfigurasi sotong mempunyai pilihan:

Logfile_putar n

di mana n- bilangan putaran (lalai 0), i.e. sotong itu sendiri boleh menyimpan beberapa putaran kayu balak, setiap satunya akan diproses secara logrotate. Dengan tetapan lalai perintah ini menyebabkan log sotong utama dibersihkan.

Bahagian praputar ditambah secara automatik semasa pemasangan dan jika fail /usr/sbin/sarg-reports wujud dan boleh dilaksanakan, menjalankannya.

Secara berasingan, anda harus memikirkan rakaman arahan; pembinaan yang digunakan di dalamnya mungkin tidak jelas pada kali pertama. Dalam kes ini, penolakan berganda digunakan; jika penolakan syarat adalah palsu, maka perintah yang ditentukan selepas simbol || dilaksanakan. (logik ATAU), ini berkaitan dengan logik arahan ujian dan sintaks penulisan fail ( Tanda seru selepas ujian menunjukkan penolakan keadaan).

Seperti yang anda lihat, logrotate membolehkan anda mengkonfigurasi proses putaran log dengan sangat fleksibel. Jadi jika kita ingin menjana statistik penggunaan sotong setiap bulan, kita mesti menunjukkan tempoh putaran - bulan dan di bahagian praputar tukar arahan untuk menghasilkan laporan bulanan.

Dibuka oleh saya sotong Menurut artikel ini, ia berfungsi dengan jayanya. Tetapi saya menghadapi situasi sedemikian yang saya tidak faham dengan serta-merta mengapa log itu sotong sangat sedikit yang disimpan dan untuk analisis terperinci Tidak cukup trafik yang melalui syarikat itu.

Secara lalai, putaran log masuk sotong ditetapkan selama tiga hari sahaja, jadi saya memikirkan cara untuk meningkatkan jangka hayat log dan menetapkan putaran log dalam tempoh sebulan. Dalam kes saya ini sudah cukup.

Kami akan memutar log menggunakan perkhidmatan sistem logrotate, termasuk dalam Pelayan Ubuntu 14.04.

nota itu: Putaran log secara berkala menggantikan log lama dengan yang baharu, meletakkan data lapuk dalam arkib atau hanya memadamkannya. Bergantung pada tetapan, arkib log boleh disimpan sama ada dalam bentuk termampat atau tidak dimampatkan dan mempunyai kedalaman yang diperlukan.

tetapan asas logrotate disimpan dalam /etc/logrotate.conf, tetapan perkhidmatan individu(dalam kes kami sotong) disimpan dalam /etc/logrotate.d/sotong, dan tetapan ini diutamakan logrotate.conf. Perkhidmatan itu sendiri dipanggil sekali sehari melalui penjadual cron.

Kami berminat untuk memutar log hanya dua fail akses.log Dan cache.log. Untuk fail akses.log kami akan melakukan penggiliran sebulan sekali, dan untuk fail cache.log sekali seminggu. Mari buka fail konfigurasi untuk penyuntingan

Sudo nano /etc/logrotate.d/squid

Berikut ialah fail konfigurasi putaran log untuk sotong dalam bentuk yang kita perlukan.

# Putaran bulanan fail log accesss.log /var/log/squid/access.log ( # harian # mingguan kelewatan mampat bulananmampat putar 2 missingok nocreate sharedscripts postrotate test ! -e /var/run/squid.pid || ujian ! - x /usr/sbin/squid || /usr/sbin/squid -$ endscript ) # Putaran mingguan fail log cache.log /var/log/squid/cache.log ( # mingguan harian # kelewatan mampat bulananmampatkan putar 1 missingok nocreate ujian postrotate skrip kongsi ! -e /var/run/squid.pid || ujian ! -x /usr/sbin/sotong || /usr/sbin/squid -$ endscript )

Marilah kita menganalisis struktur apa yang ditulis di atas dengan lebih terperinci. Baris pertama menentukan laluan ke fail log yang sedang diproses. Dalam kes ini, fail diproses akses.log Dan cache.log mengikut pilihan di bawah:

Harian - tetapkan putaran harian mingguan - tetapkan putaran mingguan bulanan - tetapkan pemampat putaran bulanan - tentukan pemampatan log arkib, pilihan terbalik ialah nocompress. delaycompress - jangan mampatkan log semasa sehingga putaran seterusnya, biasanya digunakan dalam kes di mana rakaman berterusan berlaku dalam log. putar 2 - bilangan putaran sebelum memadam fail; dalam kes ini, dua arkib akan disimpan. missingok - jika tiada fail log, menunjukkan untuk terus bekerja tanpa memaparkan mesej ralat. nocreate - jangan buat fail log baharu. sharedscripts - digunakan untuk bahagian praputar dan postrotate, pilihan ini menentukan untuk melaksanakan skrip daripada bahagian ini sekali sebelum dan selepas memutar semua log, jika tidak, skrip akan dilaksanakan sebelum dan selepas memutar setiap log. Bahagian postrotate menyemak sama ada sotong dan memulakan penggiliran log oleh pelayan proksi itu sendiri.

Penambahan: Bahagian masih boleh dilakukan praputar, ia ditambah secara automatik apabila memasang penganalisis log SARG dan sekiranya fail / usr/sbin/sarg-reports wujud dan boleh dilaksanakan, menjalankannya. Dalam kes saya, ia berjalan melalui cron, jadi saya mengecualikannya daripada konfigurasi.

Kerana kami akan menjalankan penggiliran secara eksklusif oleh perkhidmatan logrotate, maka kami akan membetulkan konfigurasi sotong

Sudo nano /etc/squid/squid.conf

Mencari talian logfile_putar 6(atau tambah jika tiada). Dan kami ingatkan

logfile_rotate 0

Petunjuk: Di mana 6 - bilangan putaran, sotong menyimpan berbilang contoh log, setiap fail log akan diproses logrotate. Nombor 0 menunjukkan bahawa putaran fail dinyahdayakan sotong

Jimat Ctrl+O dan rapat Ctrl+X fail.

Mulakan semula Squid, tetapan baharu akan berkuat kuasa. Beginilah mudah dan mudahnya untuk menyediakan putaran log.