Linux ƏS’lərində logrotate funksiyasının quraşdırılması
Salamlar…
Bu gün biz GNU/Linux ƏS’də logrotate funksiyasından danışacağıq. Linux sistemlərində saxlanılan loglar və bu loglarla işləmək olduqca əhəmiyyətlidir. Log terminin mənası isə sistemdə baş vermiş bütün prosessləri qeyd alan əməliyyatdır. Bu loglar vasitəsi ilə biz sistemdə baş vermiş bütün prosessləri analiz edə və hər hansı problemlə rastlaşdıqda bu problemi loglardan araşdırıb tapmaq mümkündür. Logrotateəsasən sistem inzibatçıları üçün dizayn olunmuş utilitdir hansı ki, serverlərdə çoxlu sayda log fayllar yarandıqda, bu zaman diskdə faylların həcmi artır və bu da disk həcminin çatışmazlğına səbəb olur. Belə hallar da isə bu problem serverdə müəyyən problemlərə gətirib çıxara bilər(misal üçün sistem yavaş işləməsi və s.), logrotate isə bizə bu problemdən qaçınmağa imkan verir. Normal hallarda biz bu cür problemlərdən əlavə hissə(partition) yaradib log faylların yerini həmin partition-u təyin edə bilərik amma log faylların müxtəlif partitionlar arasında köçürülməsi vaxt aldığına olduğuna görə bu həlli seçmək o qədərdə optimal variant deyil. Bu məqalədə biz RedHat/CentOS 7 linux serverlərdə logrotate’nin istifadəsinə və necə konfiqurasiya olunmasına baxacağıq.
Logrotate nədir?
Sistem tərəfindən yaranan hər hansı log faylları sistematik olaraq rotate(firladılır əgər belə demək düzgün olarsa) və arxivləməyə imkan verir yəni müəyyən olunan vaxtda köhnə log faylı baglayır(silir) və yeni log fayl açır və istəyə uyğun olaraq həmin köhnə log faylları arxivləyə bilərsiniz. Beləliklədə disk həcminin azalmasının qarşısını ala bilərsiniz. Bundan əlavə default olaraq logrotate /etc/cron.daily/ direktoriyasında cron’dan istifadə edərək bir gündən-bir yoxlanılır.
[babak@openfire ~]# ls /etc/cron.daily/ 0yum-daily.cron logrotate man-db.cron mlocate
Logrotate’nin konfiqurasiyasıni 2 fərqli faylda dəyişiklik etməklə olar.
- /etc/logrotate.conf
- Xüsüsi konfiqurasiya fayllar /etc/logrotate.d/ direktoriyasında saxlanılır
Əsas konfiqurasiya faylı logrotate.conf -dur, #cat /etc/logrotate.conf əmrindən istifadə edib baxa bilərsiniz.
[babak@openfire ~]# cat /etc/logrotate.conf 1 weekly 2 rotate 4 3 create 4 dateext 5 include /etc/logrotate.d 6 /var/log/wtmp { 7 monthly 8 create 0664 root utmp 9 minsize 1M 10 rotate 1 11 }
İndi isə gəlin bunların izahını verək.
1. weekly xüsüsiyyəti əsas konfiqurasiya faylında və /etc/logrotate.d/ direktoriyasında olan bütün log faylların rotationunu həftəlik yerinə yetirir.
2. rotate 4 bütün log faylların backup 4 həftəlik saxlayır
3. create hər rotationdan sonra (yəni fayl baglanandan sonra) yeni boş fayl yaradılması üçün istifadə olunur
4. dateext butun rotate olunan log faylların vaxta görə genişlənməsini müyyən edir
5. include bütün başqa konfiqurasiya faylları /etc/logrotate.d/ direktoriyasından oxunulmasını qeyd edir
6-11 xüsusi log servis üçün log rotate konfiqurasiyası
Qeyd. Bildiyimiz kimi log fayllar rotate olunur, yəni onlar heç yerdə saxlanılmır yəni silinirlər(susmaya görə 4 həftədən bir). Əgər sizin kampaniya istəyirsə o log faylları 6 həftədən öncə olanlara baxa bilsin , bu zaman bu mümkün olmayacaq. Bunun üçün siz ya log fayllarınızı backup etməlisiniz yadakı mərkəzləşdirilimiş log server quraşdırılmalısınız hansı ki üzünmüddətli loglar saxlanılsın yaxud dakı /etc/logrotate.conf faylında rotate funksiyasını artırıb 6 həftə etməlisiniz.
Logrotate’ə yeni servis loglarının əlavə edilməsi:
Yəni bir log fayl yaradıb onun logrotate sazlamalarını edək. Misal üçün:
[babak@openfire ~]# touch /var/log/linuxlogs.log .
Bu ada uygun biz logrotate konfiqurasiya faylı yaratmalıyıq və aşağıdakıları daxil etməliyik.
[babak@openfire ~]#vim /etc/logrotate.d/linuxlogs /var/log/linuxlogs.log { missingok notifempty compress size 20k daily create 0600 root root }
missingok – əgər log faylda nəsə buraxılsa hər hansı error verməyəcək
notifempty – əgər log fayl boşdursa hər hansı rotate baş vermir.
compress- susmaya görə köhnə log faylları gzip lə sıxır
size – əgər faylın həcmi 20K dan çox olsa , yeni log fay rotate edir.
daily – gündəlik rotation u təmin edir
create – icazəsi 600, user və qrupu root olmaqla yeni log fayl yaradır
Logrotate‘nin başqa konfiqurasiya xüsüsiyyətləri də vardır, bunun üçün #man logrotate yazıb baxa bilərsiz. Misal üçün bəzilərinin nümünəsini verək.
copy – log faylların kopyasını yaradır, amma original faylı heç vaxt dəyişdirmir
mail <email@address> – rotationda müəyyən gözləniləndən kənarda nəsə baş verəndə qeyd olunmuş mailə email göndərir.
olddir <directory> – loglar rotation üçün <directory> altına köçürülür.
postrotate/endscript – postrotate və endscript arasındakı sətirlər log fayl rotate olunandan sonra icra olunacaq.
Yeni yaradılmış logrotate konfiqurasiyasının test olunması
Yaratdığımız son konfiqurasiya faylını dəqiqlik üçün yoxlayın yəni daxilində yazılmış xüsüsiyyətləri daha sonra aşağıdakıları etmək lazmıdır.
Sadə log fayl yaradaq.
[babak@openfire ~]# echo "rotate my log file " > /var/log/linuxlogs.log [babak@openfire ~]# logrotate -f /etc/logrotate.conf
// Dərhal log faylı məcburi olaraq rotate edəcək. Həmçinin də /etc/logrotate.d/ direktoriyasında olan bütün spesifik konfiqurasiyalarıda edir. Yenidən #cd /var/log/ direktoriyasına keçid edib, # ls əmrini yazsaq görəcəyik ki, bizim yaratdığımız log fayldan əlavə birdə gzip formatında log fayl yaranıb. Deməli əməliyyatımız ugurla başa çatıb, yəni log fayl rotate olunub.
Qeyd. Əgər zip faylın daxilinə baxmaq istəsəniz #gunzip filename.gz edəndən sonra daxilinə baxa bilərsiniz. Bu əziyyəti çəkməmək üçün zcat və ya zless əmrlərindən bir başa istifadə edib zip olan faylın içinə baxa bilərsiniz.
Bu qədər dostlar, umid varam ki faydalı olmuşdur.