Blogchevron_rightSunucu Yönetimichevron_rightDocker Compose ile Mikroservis Log Yönetimi Rehberi

Docker Compose ile Mikroservis Log Yönetimi Rehberi

S
Serversium
calendar_today21 Temmuz 2026
schedule5 dk okuma
Docker Compose ile Mikroservis Log Yönetimi Rehberi

Docker Compose ile Mikroservis Mimarisinde Log Yönetimi: Kapsamlı Rehber

Mikroservis mimarilerinde log yönetimi, sistem güvenliği, performans izleme ve hata ayıklama için kritik öneme sahiptir. Docker Compose kullanarak birden fazla servisi tek bir yapıda çalıştırırken, merkezi log yönetimi stratejisi oluşturmak zorunlu hale gelmiştir. Bu rehberde, Docker Compose ortamında etkili log yönetimi için kullanılan yöntemleri, araçları ve en iyi uygulamaları detaylı olarak inceleyeceğiz.

Mikroservis Mimarisinde Log Yönetiminin Önemi

Modern mikroservis mimarilerinde her servis bağımsız olarak çalışır ve kendi log dosyalarını üretir. Dağıtık sistemlerde logları toplamak, analiz etmek ve anlamlı hale getirmek geleneksel yöntemlerle oldukça zorlaşır. Merkezi log yönetimi olmadan sistem hatalarını tespit etmek, güvenlik ihlallerini izlemek ve performans sorunlarını çözmek neredeyse imkansız hale gelir.

Araştırmalara göre, kurumsal sistemlerde %67 oranında downtime süresi log analizi ile kısaltılabilmektedir. Bu nedenle mikroservis mimarilerinde log yönetimi stratejisi, altyapı planlamasının temel bileşenlerinden biri olmalıdır.

Docker Logging Driver'ları ve Yapılandırma

Docker, container loglarını yönetmek için çeşitli driver'lar sunar. Docker Compose dosyasında logging section'ını kullanarak bu driver'ları yapılandırabilirsiniz.

Temel Logging Driver Türleri

Docker, farklı kullanım senaryolarına uygun çeşitli logging driver'ları destekler. En yaygın kullanılan driver'lar json-file, syslog, journald, gelf ve fluentd'dir. Her driver'ın kendine özgü avantajları ve kullanım alanları bulunmaktadır.

Driver Kullanım Alanı Avantajlar
json-file Geliştirme ve test Basit kurulum, Docker CLI ile uyumlu
syslog Linux sistem logları Merkezi log sunucusuna aktarma
journald Systemd sistemleri Yüksek performans, yapılandırılabilir
gelf Graylog entegrasyonu Esnek alan yapısı
fluentd ELK Stack entegrasyonu Geniş eklenti desteği

Docker Compose Logging Yapılandırması

Docker Compose dosyanızda logging yapılandırması şu şekilde yapılır:

services:
  api-service:
    image: my-api:latest
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    
  web-service:
    image: my-web:latest
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://log-server:514"
        tag: "web-service"

Bu yapılandırma, container loglarının boyutunu ve dosya sayısını sınırlamaya yardımcı olur. Disk doluluğu sorunlarını önlemek için max-size ve max-file parametrelerini mutlaka ayarlamanızı öneriyoruz.

Merkezi Log Yönetim Çözümleri

Mikroservis mimarilerinde birden fazla servisten gelen logları toplamak için merkezi log çözümleri kullanılır. Bu çözümler logların depolanması, aranması, görselleştirilmesi ve analiz edilmesi için kapsamlı araçlar sunar.

ELK Stack (Elasticsearch, Logstash, Kibana)

ELK Stack, mikroservis log yönetiminde en yaygın kullanılan çözümlerden biridir. Logstash logları toplar ve işler, Elasticsearch depolar ve indeksler, Kibana ise görselleştirme arayüzü sunar.

Docker Compose ile ELK Stack kurulumu için aşağıdaki yapılandırmayı kullanabilirsiniz:

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
    ports:
      - "9200:9200"
    
  logstash:
    image: docker.elastic.co/logstash/logstash:8.11.0
    volumes:
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    ports:
      - "5044:5044"
    
  kibana:
    image: docker.elastic.co/kibana/kibana:8.11.0
    ports:
      - "5601:5601"

ELK Stack'in avantajları arasında güçlü arama yetenekleri, esnek görselleştirme seçenekleri ve geniş eklenti desteği bulunur. Ancak kaynak tüketimi yüksek olabilir ve karmaşık yapılandırma gerektirir.

Loki + Grafana Çözümü

Loki, Grafana Labs tarafından geliştirilen ve Elasticsearch'e hafif bir alternatif olarak sunulan log agregasyon sistemidir. Düşük kaynak tüketimi ve basit kurulumu ile dikkat çeker.

Loki'yi Docker Compose ile kullanmak için şu yapılandırmayı uygulayabilirsiniz:

services:
  loki:
    image: grafana/loki:2.9.0
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    
  grafana:
    image: grafana/grafana:10.2.0
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

Loki'nin en büyük avantajı, Prometheus ile benzer label sistemini kullanması ve çok düşük depolama maliyetleri sunmasıdır. Özellikle Prometheus kullanan ekipler için ideal bir seçimdir.

Mikroservis Log Toplama Stratejileri

Etkili log yönetimi için sadece araçları kurmak yeterli değildir. Log toplama stratejisi, log formatları ve yapılandırma standartları da belirlemelidir.

JSON Log Formatı Kullanımı

Mikroservislerde JSON formatında log üretmek, log toplama ve analiz süreçlerini önemli ölçüde kolaylaştırır. JSON formatındaki loglar, otomatik olarak parse edilebilir ve yapılandırılmış arama yapılabilir.

Python uygulamaları için logging yapılandırması:

import logging
import json

class JSONFormatter(logging.Formatter):
    def format(self, record):
        log_data = {
            "timestamp": self.formatTime(record),
            "level": record.levelname,
            "service": "api-service",
            "message": record.getMessage(),
            "module": record.module,
            "function": record.funcName,
        }
        return json.dumps(log_data)

Node.js uygulamaları için pino logger kullanabilirsiniz:

const pino = require('pino')
const logger = pino({
  level: 'info',
  formatters: {
    level: (label) => {
      return { level: label }
    }
  }
})

Log Seviyeleri ve Yapılandırma

Her mikroservis için uygun log seviyesini belirlemek önemlidir. Production ortamında genellikle INFO seviyesi yeterlidir, ancak hata ayıklama için DEBUG seviyesi de kullanılabilir.

  1. ERROR: Uygulama hataları, exception'lar
  2. WARN: Potansiyel sorunlar, beklenmeyen durumlar
  3. INFO: Normal işlem akışı, önemli olaylar
  4. DEBUG: Detaylı hata ayıklama bilgileri

Log seviyelerini ortam değişkenlerine göre ayarlamak, farklı ortamlarda esneklik sağlar. Örneğin, geliştirme ortamında DEBUG seviyesi kullanırken production'da INFO seviyesine geçebilirsiniz.

Docker Compose ile Pratik Log Yönetimi Örneği

Kapsamlı bir mikroservis log yönetimi ortamı oluşturmak için aşağıdaki Docker Compose dosyasını kullanabilirsiniz:

version: '3.8'

services:
  # API Servisi
  api:
    build: ./api
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "5"
    labels:
      - "com.example.service=api"
    
  # Web Servisi
  web:
    build: ./web
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "5"
    labels:
      - "com.example.service=web"
    
  # Log Toplayıcı (Fluentd)
  fluentd:
    image: fluent/fluentd:v1.16-1
    volumes:
      - ./fluentd.conf:/fluentd/etc/fluentd.conf
      - ./logs:/var/log
    ports:
      - "24224:24224"
    networks:
      - app-network

  # Elasticsearch
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
    volumes:
      - elasticsearch-data:/usr/share/elasticsearch/data
    networks:
      - app-network

  # Kibana
  kibana:
    image: docker.elastic.co/kibana/kibana:8.11.0
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  elasticsearch-data:

Bu yapılandırma, iki mikroservis (API ve Web), Fluentd log toplayıcı ve ELK Stack'i tek bir Compose dosyasında birleştirir. Her servis için JSON file driver kullanılmış ve log dosyası boyutları sınırlandırılmıştır.

Log Yönetiminde En İyi Uygulamalar

Mikroservis mimarilerinde etkili log yönetimi için aşağıdaki en iyi uygulamaları uygulamanızı öneriyoruz.

Yapılandırılmış Loglama

Her log kaydı için tutarlı bir format kullanın. Log kayıtlarında bulunması gereken temel alanlar: timestamp, log seviyesi, servis adı, mesaj, correlation ID ve kullanıcı bilgileridir. Correlation ID, dağıtık sistemlerde isteklerin izlenmesi için kritik öneme sahiptir.

Log Rotasyonu

Container loglarının disk doluluğuna neden olmaması için log rotasyonu mutlaka yapılandırılmalıdır. Docker'ın json-file driver'ı otomatik rotasyon desteği sunar. Alternatif olarak logrotate aracını da kullanabilirsiniz.

Güvenlik Önlemleri

Log dosyalarında hassas bilgilerin (şifreler, kredi kartı numaraları, kişisel veriler) bulunmamasına dikkat edin. Kullanıcı şifreleri veya KVKK kapsamındaki kişisel veriler loglanmamalıdır. Log verilerini şifrelemek ve erişim kontrollerini yapılandırmak da önemlidir. Bu konuda detaylı bilgi için KVKK ve GDPR uyumluluk rehberimize göz atabilirsiniz.

Performans Etkileri

Loglama, uygulama performansını etkileyebilir. Asenkron loglama kullanarak uygulama performansını optimize edebilirsiniz. Ayrıca gereksiz log kayıtlarından kaçınmak ve log seviyelerini production ortamına göre ayarlamak önemlidir.

Karşılaştırma: Popüler Log Yönetim Çözümleri

Çözüm Kaynak Tüketimi Kurulum Kolaylığı Görselleştirme En İyi Kullanım
ELK Stack Yüksek Orta Çok İyi Büyük ölçekli sistemler
Loki + Grafana Düşük Kolay İyi Prometheus kullanıcıları
Graylog Orta Orta İyi Orta ölçekli sistemler
CloudWatch Orta Çok Kolay İyi AWS kullanıcıları

Sonuç ve Öneriler

Docker Compose ile mikroservis mimarisinde log yönetimi, sistem güvenilirliği ve operasyonel verimlilik için temel bir bileşendir. Doğru log yönetim stratejisi ile sistem hatalarını hızlıca tespit edebilir, performans sorunlarını çözebilir ve güvenlik olaylarını izleyebilirsiniz.

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward