Docker’dan Günlükleri Yakalama ve Analiz Etme
DOCKER GÜNLÜKLERİNİ ANLAMA
Docker, konteynerlarınızın çıktısını (stdout ve stderr) yakalar ve bu çıktıya, sorunları ayıklamanıza yardımcı olacak komutlar kullanılarak erişilebilir.
Bu bölüm, Docker kapsayıcılarını çalıştırırken günlükleri nasıl yakalayacağınız ve analiz edeceğiniz konusunda adım adım talimatlar sağlayacaktır. Sorunları hızlı bir şekilde belirleme ve düzeltmede etkili günlük yönetimi kritik öneme sahiptir.
Adım Adım Talimatlar
- Docker Konteynerini Ayrık Modda Çalıştırın: Gerekli portları açığa çıkarırken arka planda bir konteyner başlatın.
$ docker run -d --name linuxconfig -p 8888:80 httpd
Burada, httpd Apache HTTP Sunucusu görüntüsüdür, linuxconfig konteynere atanan isimdir ve ana bilgisayardaki 8888 portu konteynerdeki 80 portuna eşlenmiştir. -d seçeneği konteyneri ayrı modda çalıştırır.
- Konteyner Günlüklerini Görüntüle: Çalışan konteynerinizin günlüklerine erişerek çıktısını izleyin.
$ docker logs linuxconfig
Bu komut, konteynerin başlatıldığı tarihten itibaren oluşturduğu tüm günlükleri görüntüler.
Konteyner Günlüklerini görüntülemek için temel docker komutu - Gerçek Zamanlı Kayıtları Takip Edin: Kayıtlar oluşturuldukça bunları sürekli olarak izleyin.
$ docker logs -f linuxconfig
-f (veya –follow) seçeneği komutun çalışmaya devam etmesini sağlar ve yeni günlük girdilerini oluştukça görüntüler; bu, bir günlük dosyasında tail -f kullanılmasına benzer.
Docker Logs Komut Örnekleri
Docker, geliştiricilerin sorunları gidermelerine ve kapsayıcı davranışlarını izlemelerine yardımcı olan güçlü günlük kaydı yetenekleri sağlar. Aşağıdaki örnekler, kapsayıcı günlüklerini yakalamak, filtrelemek ve analiz etmek için çeşitli teknikleri gösterir. Temel komutlardan gelişmiş yapılandırmalara kadar, bu örnekler kapsayıcı uygulamalarınızı etkili bir şekilde hata ayıklamanıza yardımcı olmak için çok çeşitli senaryoları kapsar.
- Temel Günlük Alma: Bir konteynerdaki tüm günlükleri alın.
$ docker logs linuxconfig
Bu, konteyner çalışmaya başladığından beri oluşturulan tüm günlükleri gösterir.
- Gerçek Zamanlı Kayıt İzleme: Kayıtlar oluşturuldukça takip edin.
$ docker logs --follow linuxconfig
Günlükleri görüntüler ve Ctrl+C tuşlarına basana kadar yeni çıktı akışını sürdürür.
- Günlük Çıktısını Sınırlama: Yalnızca en son günlükleri alın.
$ docker logs --tail=50 linuxconfig
Yalnızca son 50 günlük satırını gösterir; kapsamlı günlükleri olan kapsayıcılar için kullanışlıdır.
- Zaman Damgalı Günlükleri Görüntüleme: Günlükleri zaman bilgileriyle birlikte görüntüleyin.
$ docker logs --timestamps linuxconfig
Olayların daha iyi izlenebilmesi için her günlük satırına zaman damgası eklenir.
Zaman Damgalı Günlükleri Görüntüleme - Zamanla Sınırlı Kayıtları Yakalama: Belirli bir zaman dilimi içindeki kayıtları alın.
$ docker logs --since="2023-03-15T10:00:00" --until="2023-03-15T11:00:00" linuxconfig
Sadece belirtilen zaman aralığında oluşturulan günlükleri gösterir.
- Göreceli Zaman Filtreleme: Son birkaç dakika veya saate ait günlükleri görüntüleyin.
$ docker logs --since=30m linuxconfig
Son 30 dakikanın günlüklerini görüntüler. s (saniye), m (dakika), h (saat) veya d (gün) kullanabilirsiniz.
- Günlükleri Bir Dosyaya Kaydetme: Günlükleri daha detaylı analiz için bir dosyaya yönlendirin.
$ docker logs linuxconfig > container_logs.txt 2>&1
Tüm konteyner günlüklerini diğer araçlarla paylaşılabilen veya analiz edilebilen bir metin dosyasına kaydeder.
Docker Konteyner Günlüklerini Bir Dosyaya Kaydetme - grep ile Günlükleri Filtreleme: Günlüklerde belirli kalıpları arayın.
$ docker logs linuxconfig 2>&1 | grep ERROR
Yalnızca “ERROR” kelimesini içeren günlük satırlarını göstererek sorunların belirlenmesini kolaylaştırır.
- Birden Fazla Konteyneri İzleme: Bir servis yığınından günlükleri görmek için Docker Compose’u kullanın.
$ docker-compose logs -f
Docker Compose dosyasında tanımlanan birden fazla kapsayıcıyla çalışırken, bu komut tüm servislerden gelen günlükleri gösterir.
- Günlük Sürücüleriyle Gelişmiş Hata Ayıklama: Bir konteyneri belirli bir günlük sürücüsünü kullanacak şekilde yapılandırın.
$ docker run -d --name debug-container --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 nginx
Döndürme ayarlarıyla JSON dosya sürücüsünü kullanır, günlük dosyalarını 10 MB ile sınırlar ve maksimum 3 dosya tutar.
- Durdurulmuş Bir Konteynerden Günlükleri Görüntüle
$ docker logs my_old_container
Docker, konteyner durdurulmuş olsa bile, kaldırılmadığı sürece günlükleri tutar.
- JSON Günlük Kaydı Sürücüsünü Kullanın (konteyneri başlatırken)
$ docker run -d --name jsonlogger --log-driver=json-file httpd
Varsayılan `json-file` günlük sürücüsünü kullanır; günlükler docker günlükleriyle incelenebilir.
- Özel Bir Günlük Kaydı Sürücüsü Kullanın (örneğin syslog)
$ docker run -d --name syslogger --log-driver=syslog httpd
Merkezi sistemlere (Syslog, Fluentd, vb.) log göndermek için kullanışlıdır.
- Günlük Sürücü Ayarlarını Denetle
$ docker inspect --format='{{.HostConfig.LogConfig.Type}}' linuxconfig
Konteyner tarafından şu anda kullanılan günlük sürücüsünü döndürür.
Günlük Sürücüsü Ayarlarını Denetle – Bu durumda konteyner json-dosya sürücüsüne ayarlanır - Konteyner Olaylarının Analizi: Konteyner yaşam döngüsü olaylarını takip edin.
$ docker events --filter container=linuxconfig
Başlatma, durdurma veya sağlık durumu değişiklikleri gibi konteynerle ilgili olayları gösterir.
EN İYİ UYGULAMALAR
Merkezi bir günlük kaydı çözümü veya bir günlük kaydı sürücüsü kullanmayı düşünün. Docker, daha kolay sorgulama için günlükleri toplamaya yardımcı olabilen json-file ve fluentd dahil olmak üzere çeşitli günlük kaydı sürücülerini destekler.
Özetlersek
Docker kapsayıcılarından günlükleri tutarlı bir şekilde yakalamak ve analiz etmek, etkili hata ayıklama ve sorun çözümü için önemlidir. Docker’ın yerel günlükleme yeteneklerinden yararlanarak, uygulamalarınızın davranışları hakkında değerli içgörüler elde edebilir ve verimli operasyonları sürdürebilirsiniz.
Günlük kaydının etkinliğini artıran Fluentd veya ELK yığını entegrasyonu gibi ek araçları veya çerçeveleri keşfetmeyi unutmayın.
Sıkça Sorulan Sorular (SSS)
Bir konteyner yeniden başlatılsa bile günlükleri kalıcı hale getirebilir miyim?
Evet, json-file gibi günlük kayıt sürücülerini kullanmak günlük kayıtlarının kalıcı olmasını sağlayarak, konteyner yeniden başlatıldıktan sonra bile kullanılabilir olmasını sağlayabilir.
Docker hangi log formatlarını destekler?
Docker, günlükler için öncelikli olarak JSON formatını kullanır ancak syslog veya journald gibi farklı formatları barındırabilen çeşitli günlük sürücülerini de destekler.
Tüm konteynerlerin günlüklerini aynı anda nasıl görüntüleyebilirim?
Toplu olarak analiz etmek istiyorsanız, çalışan tüm konteynerlerden günlükleri almak için $ docker logs $(docker ps -q) komutunu kullanın.
Günlükleri belirli anahtar kelimelere göre filtreleyebilir miyim?
Evet, ilgili bilgileri filtrelemek için grep komutunu logs komutuyla kullanabilirsiniz. Örneğin, $ docker logs my_container | grep “ERROR”.
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.