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.

  1. /etc/logrotate.conf
  2. 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ı

QeydBildiyimiz 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.

Səs: +20. Bəyənilsin Zəifdir

Müəllif: Babək Məmmədov

Şərh yazın