Teknik Detaylar

Graylog Nedir? Docker Compose ile Adım Adım Kurulum Rehberi

← Teknik Detaylar
2021-03-12 ~ 2022-05-11 · 4 dk okumaRead in English →
Graylog Nedir? Docker Compose ile Adım Adım Kurulum Rehberi
Bu yazıyı yapay zekâ ile tartış
Sayfayı kopyala

Modern ve dağıtık yazılım mimarilerinde birden fazla sunucuya, mikroservise veya veritabanına dağılmış durumdaki log (kayıt) dosyalarını tek tek incelemek tam bir kabusa dönüşebilir. Graylog, bu karmaşayı önlemek ve log verilerini tek bir merkezden yönetmek için geliştirilmiş güçlü bir platformdur.

💡 Özet (TL;DR):

  • Graylog Nedir? Farklı kaynaklardan gelen log verilerini gerçek zamanlı olarak toplayan, dizinleyen (index) ve görselleştiren açık kaynaklı bir log yönetim aracıdır.
  • Altyapı Gereksinimleri: Ayarlar ve yapılandırma verileri için MongoDB, logların saklanması ve hızlıca aranabilmesi için ise OpenSearch (veya Elasticsearch) arama motorunu kullanır.
  • Ne Zaman Tercih Edilmeli? Dağıtık bir mimariye sahipseniz, anlık hata takipleri yapmak istiyorsanız ve belirli durumlarda (örneğin 5 dakikada 10'dan fazla kritik hata alındığında) otomatik uyarılar (alert) oluşturmak istiyorsanız idealdir.

Merkezi Loglama Neden Gereklidir?

Tek bir sunucuda çalışan küçük projelerde logları tail -f /var/log/nginx/access.log komutuyla konsoldan izlemek yeterli olabilir. Ancak sunucu sayısı arttıkça veya Docker/Kubernetes gibi konteyner teknolojileri kullanılmaya başlandığında, her bir sunucuya tek tek bağlanıp log dosyalarını aramak sürdürülemez bir hâl alır.

Merkezi loglama çözümleri, tüm kaynaklardan gelen verileri alır, bunları anlamlandırıp (parse) yapısal verilere (JSON, GELF vb.) dönüştürür ve tek bir panel üzerinden hızlı arama yapmanıza olanak tanır.


Docker Compose ile Graylog Kurulumu

Graylog, 5.x+ sürümleriyle birlikte Elasticsearch yerine OpenSearch arama motorunu birincil ve tavsiye edilen veri tabanı olarak kullanmaya başlamıştır.

Aşağıda hem geliştirme (development) hem de hafif prodüksiyon ortamları için kullanabileceğiniz, MongoDB 5.0 ve OpenSearch 2.x tabanlı modern bir docker-compose.yml yapılandırması bulabilirsiniz:

version: '3.8'

services:
  mongodb:
    image: mongo:5.0
    container_name: graylog-mongodb
    volumes:
      - mongodb_data:/data/db

  opensearch:
    image: opensearchproject/opensearch:2.11.0
    container_name: graylog-opensearch
    environment:
      - OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g
      - bootstrap.memory_lock=true
      - discovery.type=single-node
      - plugins.security.disabled=true
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - opensearch_data:/usr/share/opensearch/data

  graylog:
    image: graylog/graylog:5.2
    container_name: graylog-server
    environment:
      # En az 96 karakter uzunluğunda rastgele bir gizli anahtar üretin (örn: pwgen -N 1 -s 96)
      - GRAYLOG_PASSWORD_SECRET=some_very_long_password_secret_at_least_96_characters_long
      # Admin paneli giriş şifrenizin SHA-256 hash'i (Varsayılan şifre: admin)
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000
      - GRAYLOG_ELASTICSEARCH_HOSTS=http://opensearch:9200
      - GRAYLOG_MONGODB_URI=mongodb://mongodb:27017/graylog
    ports:
      # Web Arayüzü & REST API portu
      - "9000:9000"
      # GELF UDP Girişi (Log göndermek için)
      - "12201:12201/udp"
      # Standart Syslog UDP Girişi
      - "1514:1514/udp"
    volumes:
      - graylog_data:/usr/share/graylog/data
    depends_on:
      - mongodb
      - opensearch

volumes:
  mongodb_data:
  opensearch_data:
  graylog_data:

Konteynerleri Başlatma

OpenSearch motorunun sağlıklı çalışabilmesi için işletim sisteminizin sanal bellek limitini (vm.max_map_count) artırmanız gerekir. Terminalden şu komutları çalıştırarak sistemi başlatabilirsiniz:

# Bellek limitini artır (Linux ortamları için zorunludur)
sudo sysctl -w vm.max_map_count=262144

# Konteynerleri arka planda başlat
docker-compose up -d

Kurulum tamamlandıktan sonra tarayıcınızdan http://localhost:9000 adresine giderek kullanıcı adına admin, şifreye admin yazıp giriş yapabilirsiniz.


Log Analiz Araçları Karşılaştırması

KriterGraylogELK Stack (Elasticsearch, Logstash, Kibana)Grafana Loki
Kullanım AmacıDoğrudan log yönetimi, kolay arama ve alarmGenel veri görselleştirme ve analitik platformuHafif, az kaynak tüketen Kubernetes odaklı loglama
Boru Hattı (Pipeline)Arayüz üzerinden kolayca kural yazma ve yönlendirmeLogstash yapılandırma dosyaları ile zorlu süreç yönetimiPromtail/Logql kuralları
Kaynak TüketimiYüksek (Loglardaki her kelime dizinlenir)Yüksek (Tüm alanlar dizinlenir)Düşük (Sadece metadata etiketleri dizinlenir)
Hazır Alarm SistemiVar (Yerleşik ve arayüzden yönetilebilir)Eklenti veya Lisans gerektirirGrafana Alerting üzerinden kurulur

Sıkça Sorulan Sorular (FAQ)

GELF (Graylog Extended Log Format) nedir?

GELF, Graylog tarafından standart Syslog'un limitlerini aşmak için geliştirilmiş JSON tabanlı bir log formatıdır. Büyük boyutlu log dosyalarını sıkıştırarak taşır, parçalı verilerin kaybolmasını engeller ve log mesajlarına özel ek parametreler (meta-data) eklemenize imkan tanır.

Graylog için 2GB RAM'li bir sunucu yeterli mi?

OpenSearch ve Elasticsearch doğası gereği yüksek bellek tüketir. Geliştirme ortamı için en az 4GB, stabil bir canlı (production) ortamı için ise en az 8GB RAM'e sahip sunucuları tercih etmelisiniz. Eğer kaynaklarınız çok kısıtlıysa, alternatif olarak Grafana Loki kullanmayı düşünebilirsiniz.

Stream ve Pipeline arasındaki fark nedir?

  • Stream: Log verilerini belirli kurallara göre gerçek zamanlı olarak klasörlere ayırmanızı sağlar (Örn: Nginx loglarını ayrı, PHP hata loglarını ayrı bir klasöre yönlendirmek).
  • Pipeline: Gelen log verileri dizinlenmeden önce üzerlerinde manipülasyon yapmanızı sağlar. Örneğin log içerisindeki hassas verileri (kredi kartı no gibi) maskeleyebilir, loglara IP adresi üzerinden coğrafi konum (GeoIP) bilgisi ekleyebilirsiniz.

Resmi Bağlantılar ve Dokümantasyonlar

Bu Yazıda Yapılan Değişiklikler
  • 20.06.2026: Yazı içeriği modernize edildi. Graylog 5.x ve OpenSearch 2.x desteğiyle Docker Compose yapılandırması güncellendi. Log araçları karşılaştırma tablosu, GELF detayları, Stream/Pipeline çalışma prensipleri ve LLO geliştirmeleri eklendi.
  • 11.05.2022: Yazı özeti düzenlendi.