Docker Sunucuda Log Rotation
Docker kullanırken, konteynerlerin logları sistem üzerinde zamanla büyük hacimlere ulaşabilir ve bu durum sunucu performansını olumsuz etkileyebilir. Bu nedenle, etkili bir log rotasyonu uygulaması kritik öneme sahiptir. Ancak, Docker'ın kendi varsayılan log sürücüleri sınırlı kontrol sağlar; bu yüzden genellikle sistem seviyesinde veya Docker yapılandırmasıyla log rotasyonu yapılması gerekir.
İlk olarak, Docker'ın varsayılan log sürücüsü olan "json-file" kullanıldığında, logların boyut limitini belirleyerek otomatik rotasyon sağlayabilirsiniz. Bu ayar, konteyner başlatırken aşağıdaki gibi yapılabilir:
12
docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 [diğer seçenekler] image_name
Burada,
max-size ile log dosyasının maksimum boyutu belirlenir ve
max-file ile de saklanacak toplam log dosyası sayısı sınırlandırılır. Bu sayede, her log dosyası 10MB'yi aştığında yeni bir dosya oluşturulur ve eski loglar silinir veya arşivlenir.
İkinci yöntem ise, sistem seviyesinde log rotasyonu yapmaktır. Bu durumda, Docker logları genellikle /var/lib/docker/containers/ dizininde JSON formatında saklanır. Burada, sistemin log rotasyon araçları olan
logrotate kullanılır. Örneğin, aşağıdaki gibi bir konfigürasyon ile logların düzenli rotasyonu sağlanabilir:
123456789
/var/lib/docker/containers/[i]/[/i].log {
rotate 7
daily
compress
size 50M
missingok
copytruncate
}
Bu ayar, günlük rotasyon yapar, toplamda 7 yedek tutar ve log dosyası 50MB'yi aştığında yeni dosyaya geçer.
copytruncate ise, log dosyasını kapatıp yeniden açmadan rotasyon yapılmasını sağlar, böylece konteynerların kesintiye uğraması önlenir.
Son olarak, konteynerlerin log yönetimini otomasyon ve izleme araçlarıyla entegre etmek de önemlidir. ELK stack veya Prometheus gibi platformlar, logların merkezi yönetimini ve analizini kolaylaştırır.
Genel olarak, Docker sunucusunda log rotasyonu için hem konteyner başlatma sırasında ayar yapmak hem de sistem seviyesinde çözüm kullanmak en sağlıklısıdır. Bu uygulamalar sunucu performansını koruyarak, uzun süreli stabilite sağlar ve disk alanı kullanımını optimize eder.