Ubuntu 20.04 Üzerinde Logrotate ile Log Dosyalarını Yönetme
Log dosyaları, bir işletim sistemi veya uygulama için hayati öneme sahip bilgi kaynaklarıdır. Sistemde gerçekleşen her türlü olayı, hatayı, uyarıyı ve kullanıcı etkileşimini kaydederler. Bu kayıtlar, sorun giderme, güvenlik denetimi, performans analizi ve hata ayıklama gibi pek çok kritik süreçte başvuru noktasıdır. Ancak, sürekli büyüyen bu log dosyaları, özellikle yoğun sistemlerde veya uzun süre çalışan uygulamalarda ciddi disk alanı tüketimine yol açabilir. Yönetilmeyen log dosyaları, yalnızca disk alanını doldurmakla kalmaz, aynı zamanda sistem performansını düşürebilir ve log analizini son derece zorlaştırabilir. İşte tam da bu noktada, Logrotate devreye girer.
Logrotate, Linux sistemlerinde log dosyalarını otomatik olarak yönetmek için tasarlanmış güçlü bir yardımcı programdır. Log dosyalarını belirli aralıklarla döndürerek (yeniden adlandırarak veya taşıyarak), sıkıştırarak ve eski dosyaları silerek disk alanı kullanımını optimize eder. Bu makalede, Ubuntu 20.04 üzerinde Logrotate’in nasıl kurulacağını, yapılandırılacağını ve kullanılacağını ayrıntılı bir şekilde inceleyeceğiz. Logrotate’in temel çalışma prensiplerinden, sık kullanılan direktiflerine, örnek yapılandırmalardan, manuel test etme yöntemlerine ve sık karşılaşılan sorunlara kadar geniş bir yelpazede bilgi sunarak, log yönetimi süreçlerinizi etkin bir şekilde otomatikleştirmeyi öğreneceksiniz.
Log Dosyaları ve Önemi
Sistemlerin ve uygulamaların sorunsuz çalışmasını sağlamak, olası problemleri tespit etmek ve güvenlik açıklarını izlemek için log dosyaları vazgeçilmezdir.
Log Dosyaları Nedir?
Log dosyaları, bir bilgisayar sistemindeki veya yazılım uygulamasındaki olayların kaydını tutan metin tabanlı dosyalardır. Bu olaylar, sistem başlatma ve kapatma, kullanıcı oturum açma ve kapatma, sistem hataları, uygulama hataları, ağ bağlantıları, güvenlik ihlalleri veya herhangi bir uygulamanın dahili işleyişi hakkında bilgiler içerebilir.
Ubuntu gibi Linux tabanlı sistemlerde, log dosyaları genellikle /var/log dizini altında bulunur. Bazı yaygın log dosyası örnekleri şunlardır:
* /var/log/syslog: Çeşitli sistem genelindeki mesajları, çekirdek mesajlarını ve uygulamalardan gelen genel logları içerir.
* /var/log/auth.log: Kimlik doğrulama olaylarını, kullanıcı giriş denemelerini, sudo kullanımlarını ve diğer güvenlik ile ilgili olayları kaydeder.
* /var/log/kern.log: Çekirdek (kernel) ile ilgili mesajları ve uyarıları içerir.
* /var/log/apache2/access.log ve /var/log/apache2/error.log: Apache web sunucusunun erişim ve hata loglarıdır. Benzer şekilde Nginx için /var/log/nginx/access.log ve /var/log/nginx/error.log bulunur.
* /var/log/mysql/error.log: MySQL veya MariaDB veritabanı sunucusunun hata loglarını içerir.
* /var/log/mail.log: Posta sunucusu faaliyetlerini (gönderilen/alınan e-postalar) kaydeder.
Bu loglar, sistem yöneticileri, geliştiriciler ve güvenlik uzmanları için paha biçilmez birer kaynaktır.
Yönetilmeyen Log Dosyalarının Yarattığı Sorunlar
Log dosyaları sürekli büyüdüğünden, düzenli bir yönetim mekanizması olmadan ciddi sorunlara yol açabilirler:
* Disk Alanı Tüketimi: Özellikle yüksek trafikli sunucularda veya yoğun uygulamalarda log dosyaları çok hızlı bir şekilde gigabaytlarca yer kaplayabilir. Bu durum, disk alanının tükenmesine ve sistemin kararsız hale gelmesine veya tamamen çökmesine neden olabilir.
* Sistem Performansı Düşüşü: Çok büyük log dosyaları, disk I/O işlemlerini artırabilir. Uygulamalar log yazarken veya log analizi araçları bu dosyaları okurken sistem kaynakları gereksiz yere meşgul olabilir, bu da genel sistem performansını olumsuz etkiler.
* Log Analizi Zorluğu: Binlerce veya milyonlarca satır içeren devasa log dosyaları, bir sorunu tespit etmeye veya belirli bir olayı bulmaya çalışırken insan gözüyle veya basit komutlarla (grep, less) analiz etmeyi neredeyse imkansız hale getirir.
* Güvenlik Riskleri: Eski logların süresiz olarak saklanması, hassas bilgilerin uzun süre erişilebilir kalmasına neden olabilir. Ayrıca, logların düzenli olarak yedeklenmemesi veya güvenli bir şekilde arşivlenmemesi, denetim izlerinin kaybolmasına ve güvenlik olaylarının tespit edilememesine yol açabilir.
Bu nedenlerle, log dosyalarının düzenli olarak döndürülmesi, sıkıştırılması ve arşivlenmesi veya silinmesi kritik bir sistem yönetimi görevidir.
Logrotate Nedir?
Logrotate, Linux işletim sistemlerinde log dosyalarını otomatik olarak yönetmek için tasarlanmış bir komut satırı yardımcı programıdır. Temel amacı, log dosyalarının aşırı büyümesini önlemek, disk alanı tüketimini azaltmak ve log analizi süreçlerini kolaylaştırmaktır.
Tanım ve Çalışma Prensibi
Logrotate, belirli kurallara göre log dosyalarını döndürür, yani mevcut log dosyasını yeni bir adla kaydeder ve uygulamanın yeni bir log dosyasına yazmaya başlamasını sağlar. Bu döndürme işlemi genellikle sıkıştırma, eski log dosyalarını silme veya belirli bir dizine taşıma gibi ek adımlarla birlikte gelir.
Logrotate, genellikle sistemin cron zamanlayıcısı tarafından günlük olarak çalıştırılır. Ubuntu’da, /etc/cron.daily/logrotate betiği, Logrotate’i her gün belirli bir zamanda tetikler. Bu betik, /etc/logrotate.conf ana yapılandırma dosyasını ve /etc/logrotate.d/ dizinindeki tüm uygulamaya özel yapılandırma dosyalarını okur ve bu dosyalarda tanımlanan kurallara göre log yönetimini gerçekleştirir.
Avantajları
Logrotate kullanmanın başlıca avantajları şunlardır:
* Disk Alanı Tasarrufu: Eski log dosyalarını sıkıştırarak veya silerek değerli disk alanından tasarruf sağlar.
* Sistem Performansı: Büyük log dosyalarının neden olduğu disk I/O yükünü azaltır, bu da sistemin genel performansına olumlu katkıda bulunur.
* Kolay Analiz: Daha küçük, yönetilebilir log dosyaları, belirli bir zaman dilimindeki olayları incelemeyi ve sorunları tespit etmeyi kolaylaştırır.
* Otomasyon: Log yönetimi görevlerini otomatikleştirerek sistem yöneticilerinin manuel müdahale ihtiyacını ortadan kaldırır ve zaman kazandırır.
* Güvenlik ve Uyum: Logların belirli bir süre saklanmasını veya güvenli bir şekilde arşivlenmesini sağlayarak güvenlik politikalarına ve yasal uyumluluk gereksinimlerine yardımcı olur.
Logrotate Kurulumu ve Temel Kullanımı
Ubuntu 20.04’te Logrotate genellikle varsayılan olarak yüklü gelir. Ancak, kurulu olup olmadığını kontrol etmek ve gerekirse yüklemek kolaydır.
Kurulum
Logrotate’in sisteminizde kurulu olup olmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
dpkg -l | grep logrotate
Eğer kurulu değilse, aşağıdaki komutla yükleyebilirsiniz:
sudo apt update
sudo apt install logrotate
Logrotate’in Yapısı
Logrotate, yapılandırma dosyalarını merkezi ve modüler bir şekilde yönetir:
1. /etc/logrotate.conf: Bu, Logrotate’in ana yapılandırma dosyasıdır. Genel (global) ayarları içerir ve diğer yapılandırma dosyalarının nasıl dahil edileceğini belirtir. Bu dosya, Logrotate’in varsayılan davranışını tanımlar ve çoğu durumda tüm log dosyaları için geçerli olacak genel direktifleri barındırır.
2. /etc/logrotate.d/: Bu dizin, uygulamaya özel yapılandırma dosyalarını içerir. Her uygulama (örneğin, Apache, Nginx, MySQL, Rsyslog) kendi log döndürme kurallarını bu dizine ayrı bir dosya olarak yerleştirebilir. Bu, yapılandırmanın modüler olmasını sağlar ve farklı uygulamaların loglarının birbirinden bağımsız olarak yönetilmesine olanak tanır. Ana yapılandırma dosyası, bu dizindeki tüm dosyaları otomatik olarak okur.
3. /etc/cron.daily/logrotate: Bu betik, Logrotate’i günlük olarak çalıştıran cron işidir. Sistem her gün bu betiği çalıştırır ve Logrotate, yapılandırma dosyalarını okuyarak log döndürme işlemlerini gerçekleştirir.
4. /var/lib/logrotate/status: Bu dosya, Logrotate’in en son ne zaman hangi log dosyasını döndürdüğünü kaydettiği bir durum dosyasıdır. Logrotate, bu dosyayı kullanarak bir log dosyasının ne zaman döndürülmesi gerektiğini belirler.
Logrotate Yapılandırma Dosyalarını Anlamak
Logrotate’in gücü, esnek yapılandırma seçeneklerinde yatar. Direktifler, log dosyalarının nasıl döndürüleceğini, sıkıştırılacağını, saklanacağını ve yönetileceğini belirler.
/etc/logrotate.conf
Bu dosya, Logrotate’in varsayılan davranışını tanımlayan global direktifleri içerir. İşte tipik bir /etc/logrotate.conf dosyasından bazı örnek direktifler ve anlamları:
# see "man logrotate" for details
rotate log files weekly
weekly
use the syslog group by default, since this is the owning group
of /var/log/syslog.
su root syslog
keep 4 weeks worth of backlogs
rotate 4
create new (empty) log files after rotating old ones
create
uncomment this if you want your log files compressed
#compress
packages drop log rotation information into this directory
include /etc/logrotate.d
* weekly: Log dosyalarının haftalık olarak döndürülmesini sağlar. Diğer seçenekler daily, monthly, yearly veya size (belirli bir boyuta ulaştığında) olabilir.
* su root syslog: Logrotate’in log dosyalarını döndürürken ve yeni dosyalar oluştururken hangi kullanıcı ve grup kimliğini kullanacağını belirtir. Bu, genellikle log dosyalarının orijinal sahipliğini ve izinlerini korumak için önemlidir.
* rotate 4: En fazla 4 adet eski log dosyası saklanacağını belirtir. Beşinci döndürme gerçekleştiğinde, en eski (beşinci) log dosyası silinir.
* create: Log döndürüldükten sonra, uygulamanın yazmaya devam etmesi için aynı isimde boş bir yeni log dosyası oluşturur. Varsayılan olarak create 0640 root adm gibi izin ve sahiplik bilgileri de içerebilir.
* compress: Döndürülen log dosyalarını sıkıştırır (genellikle gzip ile). Bu, disk alanından önemli ölçüde tasarruf sağlar.
* include /etc/logrotate.d: Bu satır, Logrotate’e /etc/logrotate.d/ dizinindeki tüm yapılandırma dosyalarını okumasını söyler.
/etc/logrotate.d/ İçindeki Yapılandırma Dosyaları
Bu dizin, her bir uygulama veya servis için özel log döndürme kurallarını tanımlayan ayrı dosyaları barındırır. Bu dosyalar, global /etc/logrotate.conf dosyasındaki direktifleri geçersiz kılabilir veya onlara ek direktifler tanımlayabilir.
Örnek bir Apache log yapılandırması (/etc/logrotate.d/apache2):
/var/log/apache2/*.log {
weekly
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 root adm
sharedscripts
postrotate
if /etc/init.d/apache2 status > /dev/null ; then \
/etc/init.d/apache2 reload > /dev/null; \
fi;
endscript
}
Bu örnekte:
/var/log/apache2/.log { ... }: Bu blok, /var/log/apache2/ dizinindeki tüm .log uzantılı dosyalar için geçerli olan kuralları tanımlar.
* weekly: Bu loglar haftalık olarak döndürülür (global weekly direktifini kullanır veya geçersiz kılar).
* rotate 14: En fazla 14 adet eski log dosyası saklanır.
* delaycompress: En son döndürülen log dosyasını hemen sıkıştırmak yerine, bir sonraki döndürmeye kadar bekler. Bu, son log dosyasının hala okunabilir durumda kalmasını sağlar.
* postrotate ... endscript: Bu blok, log döndürme işlemi tamamlandıktan sonra çalıştırılacak komutları içerir. Apache örneğinde, web sunucusuna log dosyalarının yeniden açılması gerektiğini bildirmek için apache2 reload komutu çalıştırılır. Bu, Apache’nin yeni log dosyalarına yazmaya başlamasını sağlar.
* sharedscripts: Eğer birden fazla log dosyası aynı blok içinde tanımlanmışsa (örneğin, access.log ve error.log), prerotate veya postrotate betiklerinin sadece bir kez çalıştırılmasını sağlar.
Sık Kullanılan Logrotate Direktifleri ve Anlamları
Logrotate’in güçlü ve esnek olmasını sağlayan birçok direktif bulunmaktadır. İşte en sık kullanılanlar:
* rotate COUNT: Döndürülecek log dosyasının sayısını belirtir. Örneğin, rotate 7 son 7 log dosyasını saklar, sekizinci döndürmede en eski dosya silinir.
* daily / weekly / monthly / yearly: Log dosyalarının döndürme sıklığını belirler. daily günlük, weekly haftalık, monthly aylık, yearly yıllık döndürme yapar.
* size SIZE: Log dosyasının boyutu belirtilen boyutu aştığında döndürme yapar. Örneğin, size 100M log dosyası 100 MB’ı geçtiğinde döndürülür. K, M, G birimleri kullanılabilir.
* compress: Döndürülen log dosyalarını sıkıştırır (varsayılan olarak gzip kullanır). Bu, disk alanından tasarruf sağlar.
* delaycompress: compress direktifiyle birlikte kullanılır. En son döndürülen log dosyasının hemen değil, bir sonraki döndürme gerçekleştiğinde sıkıştırılmasını sağlar. Bu, en yeni döndürülmüş log dosyasının hala sıkıştırılmamış ve kolayca erişilebilir olmasını sağlar.
* notifempty: Log dosyası boşsa döndürme işlemini gerçekleştirmez.
* missingok: Log dosyası bulunamazsa hata vermez ve bir sonraki log dosyasına geçer.
* create MODE OWNER GROUP: Log dosyası döndürüldükten sonra, aynı isimde boş bir yeni log dosyası oluşturur ve belirtilen izinler (MODE), sahip (OWNER) ve grup (GROUP) ile ayarlar. Örneğin, create 0640 root adm.
* copytruncate: Bu direktif, Logrotate’in log dosyasını kopyalayıp orijinal dosyayı sıfırlamasını sağlar. Bu, log dosyasına yazan uygulamanın log dosyasını kapatıp yeniden açmasına gerek kalmadan çalışmaya devam etmesini sağlar. Özellikle, bir uygulamayı yeniden başlatmanın mümkün olmadığı veya istenmediği durumlarda kullanışlıdır. Ancak, kopyalama ve sıfırlama anı arasında bazı log verilerinin kaybolma riski taşıyabilir.
* olddir DIRECTORY: Döndürülen log dosyalarını varsayılan dizin yerine belirtilen DIRECTORY altına taşır. Örneğin, olddir /var/log/archive.
* dateext: Döndürülen log dosyalarına YYYYMMDD formatında bir tarih uzantısı ekler. Örneğin, syslog-20231027.gz. Bu, aynı isimde birden fazla log dosyası olduğunda karışıklığı önler.
* mail ADDRESS: Döndürülen log dosyalarını belirtilen e-posta adresine gönderir. Genellikle küçük log dosyaları için kullanılır.
* errors ADDRESS: Logrotate çalışırken bir hata oluşursa, hata mesajını belirtilen e-posta adresine gönderir.
* prerotate / endscript: Bu blok, log döndürme işlemi başlamadan önce çalıştırılacak komutları içerir. prerotate ile başlar ve endscript ile biter.
* postrotate / endscript: Bu blok, log döndürme işlemi tamamlandıktan sonra çalıştırılacak komutları içerir. Genellikle uygulamaların yeni log dosyalarını tanıması için yeniden yüklenmesi veya sinyal gönderilmesi gibi işlemler burada yapılır. postrotate ile başlar ve endscript ile biter.
* sharedscripts: Eğer bir logrotate yapılandırma bloğu birden fazla log dosyası tanımlıyorsa, prerotate ve postrotate betiklerinin her log dosyası için ayrı ayrı değil, tüm blok için yalnızca bir kez çalıştırılmasını sağlar.
Örnek Logrotate Yapılandırmaları
Farklı servisler için Logrotate yapılandırmaları, o servisin ihtiyaçlarına göre özelleştirilir.
Sistem Logları
Ubuntu’da /etc/logrotate.d/rsyslog dosyası, syslog, auth.log, kern.log gibi sistem loglarının döndürülmesini yönetir. Tipik bir rsyslog yapılandırması şöyle görünebilir:
/var/log/syslog
/var/log/mail.log
/var/log/auth.log
/var/log/daemon.log
/var/log/dpkg.log
/var/log/kern.log
/var/log/lpr.log
/var/log/user.log
/var/log/bootstrap.log
/var/log/lastlog
/var/log/faillog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/bin/systemctl reload rsyslog >/dev/null || true
endscript
}
Bu yapılandırma, listelenen tüm log dosyalarını günlük olarak döndürür, 7 adet eski sürümünü saklar, sıkıştırır (en sonuncusu hariç) ve döndürme sonrası rsyslog servisini yeniden yükleyerek yeni log dosyalarını tanımasını sağlar.
Web Sunucusu Logları (Apache/Nginx)
Web sunucuları, erişim ve hata logları ile çok fazla veri üretebilir. Bu logların yönetimi kritik öneme sahiptir.
Nginx için örnek (/etc/logrotate.d/nginx):
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 cat /var/run/nginx.pid
fi
endscript
}
Bu yapılandırma, Nginx loglarını günlük olarak döndürür, 52 hafta (bir yıl) boyunca saklar, sıkıştırır ve postrotate betiği ile Nginx ana sürecine USR1 sinyali göndererek log dosyalarını yeniden açmasını sağlar. www-data kullanıcısı ve adm grubu ile yeni log dosyaları oluşturulur.
Uygulama Logları
Kendi özel uygulamanızın loglarını yönetmek için de Logrotate kullanabilirsiniz. Diyelim ki uygulamanız /var/log/my_app/app.log dosyasına log yazıyor ve uygulamayı yeniden başlatmak istemiyorsunuz.
Örnek uygulama yapılandırması (/etc/logrotate.d/my_app):
/var/log/my_app/app.log {
size 10M
rotate 10
copytruncate
compress
missingok
notifempty
}
Bu yapılandırma:
* app.log dosyası 10 MB boyutuna ulaştığında döndürülür.
* En fazla 10 adet sıkıştırılmış eski log dosyası saklanır.
* copytruncate direktifi sayesinde uygulama yeniden başlatılmadan log dosyası kopyalanır ve orijinali sıfırlanır.
Logrotate’i Manuel Çalıştırma ve Test Etme
Yapılandırma değişiklikleri yaptıktan sonra Logrotate’in doğru çalıştığından emin olmak için manuel olarak çalıştırmak ve test etmek önemlidir.
* Tüm yapılandırmaları çalıştırma: Logrotate’i tüm yapılandırma dosyalarıyla birlikte manuel olarak çalıştırmak için:
sudo logrotate /etc/logrotate.conf
Bu komut, normalde cron tarafından çalıştırılan işlemi taklit eder. Sadece döndürme koşulları (sıklık veya boyut) karşılandığında logları döndürür.
* Zorla çalıştırma: Döndürme koşulları karşılanmasa bile Logrotate’i tüm logları döndürmeye zorlamak için -f (force) seçeneğini kullanın:
sudo logrotate -f /etc/logrotate.conf
Bu, özellikle yeni bir yapılandırmayı test ederken veya acil bir durumda log dosyalarını hemen döndürmeniz gerektiğinde kullanışlıdır.
* Hata ayıklama (debug) modu: Logrotate’in ne yapacağını görmek ancak herhangi bir değişiklik yapmasını istemiyorsanız -d (debug) seçeneğini kullanın:
sudo logrotate -d /etc/logrotate.conf
Bu komut, Logrotate’in hangi logları döndüreceğini, hangi direktifleri uygulayacağını ve hangi komutları çalıştıracağını konsola yazdırır, ancak gerçekte hiçbir dosyayı değiştirmez. Bu, yapılandırma hatalarını tespit etmek için çok değerli bir araçtır.
* Detaylı çıktı (verbose) modu: Logrotate’in çalışma anındaki detaylı çıktısını görmek için -v (verbose) seçeneğini kullanın:
sudo logrotate -v /etc/logrotate.conf
Bu, Logrotate’in her bir log dosyası için ne yaptığını adım adım gösterir.
* Tek bir yapılandırma dosyasını test etme: Sadece belirli bir uygulamanın yapılandırmasını test etmek isterseniz, o yapılandırma dosyasını doğrudan belirtebilirsiniz:
sudo logrotate -d /etc/logrotate.d/nginx
Bu, yalnızca Nginx logları için tanımlanmış kuralların nasıl işleyeceğini gösterir.
Testleri yaparken, /var/log dizinindeki değişiklikleri gözlemlemek için ls -l /var/log/nginx gibi komutlar kullanabilir veya tail -f ile log dosyalarını izleyebilirsiniz.
Logrotate İle İlgili Sık Karşılaşılan Sorunlar ve Çözümleri
Logrotate genellikle sorunsuz çalışsa da, bazı durumlarda beklenmedik davranışlarla karşılaşılabilir.
* Log dosyaları dönmüyor:
* Cron işini kontrol edin: /etc/cron.daily/logrotate betiğinin çalışıp çalışmadığını kontrol edin. /var/log/syslog dosyasında “logrotate” kelimesini arayarak cron’un Logrotate’i tetikleyip tetiklemediğini görebilirsiniz.
* Yapılandırma hataları: /etc/logrotate.conf veya /etc/logrotate.d/ içindeki yapılandırma dosyalarında sözdizimi hatası olabilir. sudo logrotate -d /etc/logrotate.conf komutuyla hata ayıklama modunda çalıştırarak hataları tespit edin.
* Durum dosyası (/var/lib/logrotate/status): Bu dosya bozulmuş olabilir veya Logrotate’in bir log dosyasını ne zaman döndürdüğü hakkında yanlış bilgi içerebilir. Nadiren de olsa, bu dosyayı silip Logrotate’i tekrar çalıştırmak sorunu çözebilir (dikkatli olun, bu mevcut döndürme döngülerini sıfırlar).
* İzinler: Logrotate’in log dosyalarına veya yeni log dosyalarını oluşturacağı dizinlere yazma izni olmayabilir. Log dosyalarının ve dizinlerinin sahipliğini ve izinlerini kontrol edin.
* Disk alanı hala doluyor:
* rotate sayısı: rotate direktifindeki sayının çok yüksek olup olmadığını kontrol edin. Çok fazla eski log dosyası saklanıyorsa, disk alanı yine de dolabilir.
* compress direktifi: compress direktifinin etkin olduğundan emin olun. Eğer loglar sıkıştırılmıyorsa, daha fazla yer kaplarlar.
* size direktifi: Eğer size direktifi kullanılıyorsa, belirtilen boyutun çok yüksek olmadığından emin olun.
* Beklenmeyen log dosyaları: Logrotate yapılandırmasına dahil olmayan başka log dosyalarının (uygulama tarafından oluşturulanlar gibi) olup olmadığını kontrol edin.
* Uygulama logları düzgün dönmüyor veya uygulama hata veriyor:
* postrotate betiği: Uygulamanın yeni log dosyasını tanıması için postrotate betiğinde doğru komutun (örneğin, reload veya kill -USR1) kullanıldığından emin olun.
* copytruncate kullanımı: Eğer uygulamanız log dosyasını sürekli açık tutuyorsa ve yeniden başlatılamıyorsa, copytruncate direktifini kullanmanız gerekebilir. Ancak, bu direktifin veri kaybına yol açma potansiyelini göz önünde bulundurun.
* Uygulama izinleri: Yeni oluşturulan log dosyasının sahipliği ve izinleri, uygulamanın ona yazabilmesi için uygun olmalıdır. create direktifindeki izinleri kontrol edin.
* Logrotate hata mesajları gönderiyor:
* /var/log/syslog dosyasını kontrol edin. Logrotate ile ilgili hatalar genellikle burada kaydedilir.
* Yapılandırma dosyasındaki errors direktifinin doğru bir e-posta adresine ayarlandığından emin olun, böylece hata mesajlarını doğrudan alabilirsiniz.
Gelişmiş Log Yönetimi İpuçları
Logrotate, tek başına güçlü bir araç olsa da, daha büyük ölçekli veya karmaşık log yönetimi ihtiyaçları için diğer araçlarla birlikte kullanılabilir.
* rsyslog veya journald ile Entegrasyon: Ubuntu 20.04’te varsayılan olarak rsyslog ve systemd-journald log toplama sistemleri bulunur. Logrotate, bu sistemler tarafından toplanan log dosyalarını yönetmek için sorunsuz bir şekilde entegre olur. journald logları ikili formatta tuttuğu için doğrudan Logrotate tarafından döndürülmez, ancak rsyslog‘a iletilen loglar Logrotate tarafından yönetilebilir.
* Merkezi Log Yönetimi (ELK Stack, Graylog vb.): Birden fazla sunucunuz varsa, logları merkezi bir sisteme (Elasticsearch, Logstash, Kibana (ELK) Stack veya Graylog gibi) göndermek, log analizi ve izleme için çok daha etkilidir. Logrotate, bu durumda, yerel diskte çok fazla yer kaplamadan sadece belirli bir süre boyunca logları tutmak için kullanılabilirken, logların ana arşivlenmesi ve analizi merkezi sistem tarafından yapılır. Logrotate’in postrotate betikleri, logları merkezi sisteme gönderme işlemlerini tetiklemek için de kullanılabilir.
* Logların Güvenliği ve Erişim Kontrolü: Log dosyaları hassas bilgiler içerebilir. Logrotate ile oluşturulan yeni dosyaların doğru izinlere (create direktifi) ve sahipliğe sahip olduğundan emin olun. Ayrıca, eski logları arşivlerken veya silerken, güvenlik politikalarınıza uygun hareket edin. olddir direktifi ile arşivlenen logları farklı, daha kısıtlı bir dizine taşıyabilirsiniz.
Sonuç
Log dosyaları, bir sistemin veya uygulamanın “kara kutusu” gibidir; içindeki olaylar hakkında değerli bilgiler sağlarlar. Ancak bu bilgilerin değeri, onları etkin bir şekilde yönetebilme yeteneğimize bağlıdır. Ubuntu 20.04 üzerinde Logrotate, log dosyalarının otomatik olarak döndürülmesi, sıkıştırılması ve silinmesi gibi kritik görevleri üstlenerek bu yönetimi son derece kolaylaştırır.
Bu makalede Logrotate’in temel kavramlarını, yapılandırma dosyalarını, sık kullanılan direktiflerini ve pratik örneklerini inceledik. Ayrıca, Logrotate’i manuel olarak nasıl çalıştıracağınızı ve test edeceğinizi, yaygın sorunları nasıl gidereceğinizi ve daha gelişmiş log yönetimi stratejilerine nasıl entegre edeceğinizi öğrendiniz. Logrotate’i doğru bir şekilde yapılandırarak, sunucularınızın disk alanını optimize edebilir, performansını artırabilir ve sorun giderme süreçlerinizi önemli ölçüde hızlandırabilirsiniz. Etkili log yönetimi, stabil, güvenli ve performanslı bir sistemin temel taşlarından biridir. Logrotate, bu temeli sağlamlaştırmanıza yardımcı olan vazgeçilmez bir araçtır.