Docker loglarıyla ilgilenilmesi

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.

6 Likes