Bütün infrasını docker ile oluşturan ve kullanan arkadaşlarımız bileceklerdir ki, servislerin çalışması sırasında oluşan loglar çok yer kaplayabiliyor. Açık olan bir debug mod veya belirli aralıklarla düşen bir servis bile buna sebep olabilir. Hatta normal çalışan bir sürecin logları bile disk alanınızı önemli ölçüde yiyebilir.
Bu noktada özellikle yapılması gereken iki şey var;
Logların truncate edilmesi
Genel loglardan bağımsız olarak docker ve docker swarm loglarını önce temizleyerek yeterli disk alanımızı açalım
truncate -s 0 /var/lib/docker/containers/**/*-json.log
Logların rotate edilmesi
Ön tanımlı olarak docker loglara karışmaz ne sıkıştırır nede rotate eder, haliyle yoğun servislerde ve/veya diğer süreçlerde diski sağlam şişirir.
Burada loglar başka sunucuya yönlendirilmiş olsa bile (gelf, fluentd, splunk vb) json olarak loglar tutulmaya devam ediyor çözümü ise bu noktada basit
nano /etc/docker/daemon.json
içerisinde aşağıdaki değişikliği yapın.
Burada log-file sürücüsünde maximum 10MB dosya tutmasını ve parçalı olarak 2 dosya tutmasını söyleyeceğiz.
{
"log-driver": "json-file",
"log-opts": {"max-size": "10m", "max-file": "2"}
}
Ardından systemctl reload docker
diyerek bu değişikliği yaptığınız andan itibaren oluşturduğunuz containerlarda bu yapılandırma geçerli olacak. Süreçlerinize göre tüm dockerı yeniden başlatabilirsiniz.
Bu yapılandırmalar ile uğraşmamak isteyenler varsa compose dosyasında logging altında gerekli ayarları yapmanız gerekmektedir.