Graylog
Genel Bakış
Amacı Nedir?
Apinizer log olaylarını GELF formatında tek bir merkezde toplamayı sağlar
Trafik yoğunluğunu kuyruk ve sıkıştırma ayarlarıyla yöneterek log teslim sürekliliği sunar
TLS/sertifika doğrulama seçenekleriyle log kanalı üzerinden gönderilen veriyi güvence altına alır
Ortam bazlı parametrelerle Development/Test/Production ayrımını koruyarak yönetim maliyetini düşürür
Çalışma Prensibi
Integration Flow veya Connector içerisinden Graylog connection talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur
maxInflightSends ve queueSize değerlerine göre asenkron gönderim kuyruğu bağlantı havuzundan iş parçacıkları ayırır
TLS aktifse mutual TLS ve sertifika zinciri doğrulaması uygulanır; aksi halde ağ seviyesinde IP whitelisting kullanılır
GELF mesajları seçilen transportType (TCP veya UDP) üzerinden sıkıştırma politikasına göre kodlanıp Graylog endpoint'ine gönderilir
İşlem tamamlandıktan sonra bağlantı açık kalır ve pool'a geri döner; uzun süre kullanılmazsa tcpKeepAlive ayarı devreye girer
Bağlantı hatası, timeout veya authentication hatası durumunda reconnectDelay süresi beklenir, olay log'lanır ve kullanıcıya detaylı hata mesajı gösterilir
Kullanım Alanları
Tüm Apinizer node'larının uygulama loglarını merkezi Graylog cluster'ına aktarma
Integration Flow adımlarında özel işlev loglarını (ör. harici API cevapları) gerçek zamanlı izleme
Scheduled Job sonuçlarını veya gateway health metriklerini log'layarak erken uyarı mekanizması sağlama
Güvenlik/SIEM ekibine özel GELF seviyeleriyle anomali tespiti için veri besleme
Teknik Özellikler ve Yetenekler
Temel Özellikler
TCP ve UDP arasında seçim yaparak güvenilirlik/performans dengesini kullanıcıya bırakır.
GZIP, ZLIB veya NONE seçenekleriyle bant genişliğini optimize eder.
Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı.
Connection'ı aktif veya pasif hale getirme (enable/disable toggle). Pasif durumda bağlantı kullanılamaz ancak yapılandırması saklanır.
İleri Düzey Özellikler
PEM tabanlı sertifika dosyasını UI üzerinden içe aktarma ve doğrulama.
tcpNoDelay, tcpKeepAlive ve sendBufferSize değerleriyle ağ optimizasyonu.
threads ve maxInflightSends parametreleriyle yüksek hacimli logları ölçekler.
"Test Connection" butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı.
Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.
Connection Parametreleri
Zorunlu Parametreler
Açıklama: Connection adı (benzersiz olmalı)
Örnek Değer: Production_Graylog
Notlar: Boşlukla başlamaz, özel karakterler kullanılmamalı
Açıklama: Logların yönlendirileceği yayınlanmış ortam kimliği
Örnek Değer: prod-env-01
Notlar: Ortam yayımlanmamışsa kayıt engellenir
Açıklama: Graylog GELF endpoint DNS/IP adresi
Örnek Değer: graylog.internal.local
Notlar: Üretim için FQDN kullanın
Açıklama: GELF listener portu
Örnek Değer: 12201
Notlar: TCP/UDP aynı portu paylaşabilir
Açıklama: Bağlantı taşıma türü (TCP/UDP)
Örnek Değer: TCP
Notlar: TCP önerilir; UDP için güvenilir ağ gerekir
Açıklama: GELF mesaj sıkıştırma politikası
Örnek Değer: GZIP
Notlar: NONE seçildiğinde bant genişliği artar
Açıklama: Minimum log seviyesi
Örnek Değer: WARNING
Notlar: Seçim Graylog içinde filtreleme sağlar
Açıklama: UI tarafındaki log bekleme kuyruğu boyutu
Örnek Değer: 512
Notlar: Yüksek değer RAM tüketimini artırır
Açıklama: Kesinti sonrası yeniden bağlanma gecikmesi
Örnek Değer: 2500
Notlar: Milisaniye cinsinden
Açıklama: Bağlantı kurulurken beklenecek süre
Örnek Değer: 10000
Notlar: Ağ gecikmelerine göre ayarlayın
Açıklama: TCP send buffer büyüklüğü
Örnek Değer: -1
Notlar: -1 sistem varsayılanını kullanır
Açıklama: Eşzamanlı gönderim sayısı
Örnek Değer: 512
Notlar: Fazla değer Graylog tarafında baskı yaratabilir
Açıklama: Arka plan log gönderim iş parçacığı sayısı
Örnek Değer: 0
Notlar: 0 CPU çekirdeğine göre otomatik ayarlar
İsteğe Bağlı Parametreler
Açıklama: Connection amacı hakkında açıklama
Varsayılan Değer: (Boş)
Önerilen Değer: Prod log forwarding for CoreAPI
Açıklama: GELF trafiğinde TLS kullanımı
Varsayılan Değer: false
Önerilen Değer: true (Production)
Açıklama: Sunucu sertifika doğrulaması
Varsayılan Değer: false
Önerilen Değer: true (Production)
Açıklama: PEM sertifika zinciri dosyası
Varsayılan Değer: (Boş)
Önerilen Değer: graylog-ca.pem
Açıklama: Nagle algoritmasını devre dışı bırakır
Varsayılan Değer: true
Önerilen Değer: true
Açıklama: Pasif bağlantıları saklar
Varsayılan Değer: false
Önerilen Değer: true (uzak DC)
Açıklama: GELF ek alanlarına Apinizer metadata ekler
Varsayılan Değer: true
Önerilen Değer: true
Açıklama: Mesaj gövdesine Apinizer context ekler
Varsayılan Değer: true
Önerilen Değer: true
Timeout ve Connection Pool Parametreleri
Açıklama: Bağlantı kurulması için maksimum bekleme süresi
Varsayılan: 10000
Min: 1000 | Max: 60000
Birim: milisaniye
Açıklama: İstek yanıtı için maksimum bekleme süresi
Varsayılan: N/A
Min: - | Max: -
Birim: milisaniye
Açıklama: Connection pool'daki maksimum bağlantı sayısı
Varsayılan: threads değeri ile belirlenir
Min: 1 | Max: 64
Birim: adet
Açıklama: Yeniden bağlanma aralığı
Varsayılan: 2500
Min: 500 | Max: 60000
Birim: milisaniye
Kullanım Senaryoları
Durum: Core API gateway'i yüksek trafikte hata üretiyor
Çözüm: TransportType=TCP, Compression=GZIP, GelfLevel=ERROR
Beklenen Davranış: Graylog tarafında sadece hata logları görünür, bant genişliği optimize edilir
Durum: Güvenlik ekibi kritik alarmlar istiyor
Çözüm: GelfLevel=ALERT, AppendToAttributes=true
Beklenen Davranış: SIEM, ek attribute'lar sayesinde alarm bağlamını zenginleştirir
Durum: Latency ölçümleri UDP ile taşınacak
Çözüm: TransportType=UDP, QueueSize=256
Beklenen Davranış: Az gecikme ile loglar gönderilir, olası kayıplar kabul edilir
Durum: Uzak veri merkezine TLS ile bağlanma
Çözüm: TLS Enabled=true, TLS Cert Verification=true, sertifika yükle
Beklenen Davranış: Şifreli kanal kurulur, self-signed sertifikalar reddedilir
Durum: Gece job'lar kısa sürede çok log üretir
Çözüm: QueueSize=2048, Threads=8, MaxInflight=1024
Beklenen Davranış: Kuyruk taşmadan log transferi tamamlanır
Durum: Test ortamında verbose loglama
Çözüm: GelfLevel=DEBUG, Compression=NONE
Beklenen Davranış: Troubleshooting için tüm loglar sıkıştırmasız iletilir
Connection Yapılandırma
Yeni Graylog Connection Oluşturma
Yapılandırma Adımları
- Sol menüden Connection → Graylog bölümüne gidin.
- Sağ üstteki [+ Create] butonuna tıklayın.
Enable Status (Aktif Durumu):
- Toggle ile aktif/pasif durumu ayarlayın. Yeni connection'lar varsayılan olarak aktiftir.
Name (İsim) - Zorunlu:
- Örnek:
Production_Graylog - Benzersiz isim girin, boşlukla başlamaz.
- Sistem otomatik kontrol eder. Yeşil tik: kullanılabilir. Kırmızı çarpı: mevcut isim.
Description (Açıklama):
- Örnek: "Graylog prod ingestion"
- Maks. 1000 karakter.
- Connection'ın amacını açıklayın.
Sayfanın üst kısmındaki işlem butonları alanında, [<> Variable] butonunu kullanarak dinamik değer seçebilir, Global variable ifadeleri sayesinde connection parametrelerini sabit değer yerine değişken tabanlı yönetebilirsiniz. Detaylı bilgi için Dinamik Değişkenler sayfasını inceleyebilirsiniz.
- Dropdown menüden ortam seçin: Development, Test, veya Production.
- Her ortam için farklı connection parametreleri tanımlanabilir.
- Hostname & Port: Graylog GELF listener bilgilerini girin.
- TransportType: TCP (güvenilir) veya UDP (düşük gecikme) seçin.
- CompressionType: GZIP/ZLIB/NONE seçeneklerini latency ve CPU'ya göre belirleyin.
- Hostname yanlış ise log kaybı yaşanır.
- GELF Message Level: Debug'dan Emergency'ye kadar uygun seviyeyi seçin.
- QueueSize, Threads, MaxInflightSends: Log hacmine göre değerleri ayarlayın.
- Append seçenekleri: Apinizer metadata'sının loglara dahil edilip edilmeyeceğini belirleyin.
- ConnectTimeout & ReconnectDelay: Ağ koşullarına göre ms cinsinden belirleyin.
- SendBufferSize: -1 sistem varsayılanı, özel alanlarda byte değeri girin.
- Yoğun trafikte Pool exhausted uyarısını önlemek için threads değerini artırın.
- TLS Enabled: Production'da zorunlu.
- TLS Cert Verification Enabled: Doğrulama açıldığında sertifika yükleyin.
- TLS Trust Cert Chain File: PEM dosyasını UI'dan yükleyin, maksimum 100 MB.
- [Test Connection] butonuna tıklayın.
- Bağlantı parametrelerinin doğru olup olmadığını test edin.
- Başarılı: Yeşil onay mesajı
- Başarısız: Hata detayları gösterilir
- Sağ üstteki [Save and Deploy] butonuna tıklayın.
Kontrol Listesi:
- Benzersiz isim
- Zorunlu alanlar dolu
- Test connection başarılı (önerilir)
Sonuç:
- Connection listeye eklenir
- Integration Flow ve Connector adımlarında kullanılabilir hale gelir
- Ortama göre aktif olur
Connection başarıyla oluşturuldu! Artık Integration Flow ve Connector adımlarında kullanabilirsiniz.
Connection'ı Silme
Connection'ı silmek için:
- Connection listesinde satır sonundaki ⋮ menüsünden Delete seçeneğini tıklayın.
- Onay dialogunda silme işlemini onaylayın.
Silmeden Önce Kontrol Edin:
- Integration Flow veya Connector adımlarında kullanılıyor olabilir.
- Gerekirse alternatif bir connection atayın.
- Silmeden önce Export ile yedek alın.
- Silmek yerine connection'ın aktif durumunu pasif hale getirin.
- Connection pasif olur ancak silinmez.
- Gerektiğinde aktif hale getirerek yeniden kullanabilirsiniz.
Connection'ı Dışa/İçe Aktarma
Bu adımda kullanıcı, mevcut connection'ları yedekleme, farklı ortamlara taşıma veya paylaşma amacıyla dışa aktarabilir (export) ya da daha önce dışa aktarılmış bir connection'ı tekrar içe aktarabilir (import). Bu işlem, sürüm yönetimi, test ve üretim ortamları arasında geçiş veya ekipler arası paylaşım süreçlerinde veri bütünlüğünü korumak için kullanılır.
Dışa Aktarma (Export)
- Connection listesinde satır sonundaki ⋮ menüsünden Export seçeneğini tıklayın.
- ZIP dosyası otomatik olarak indirilir.
Format: {Date}-graylog-integration-{ConnectionName}-export.zip
Örnek: 13 Nov 2025-graylog-integration-Production_Graylog-export.zip
- Connection JSON dosyası
- Metadata bilgileri
- Bağımlılık bilgileri (örneğin sertifikalar, key store)
- Yedekleme
- Ortamlar arası taşıma (Test → Prod)
- Versiyonlama
- Ekip veya proje bazlı paylaşım
İçe Aktarma (Import)
- Ana listede [Import Graylog] butonuna tıklayın.
- İndirilen ZIP dosyasını seçin.
- Sistem kontrolleri: Format geçerli mi? İsim çakışması var mı? Bağımlılıklar mevcut mu?
- Ardından [Import] butonuna tıklayın.
Senaryo 1: İsim Çakışması → Eski connection'ın üzerine yazın veya yeni bir isimle oluşturun.
Senaryo 2: Eksik Bağımlılıklar → Eksik sertifikaları veya key store'ları önce oluşturun veya import sırasında çıkarın.
Connection'ın Kullanım Alanları
Adımlar:
- Connection'ı oluşturun
- Test Connection ile bağlantıyı doğrulayın
- Save and Deploy ile kaydedin ve etkinleştirin
- Connection'ın Enabled durumda olduğundan emin olun.
GELF formatında log gönderimi gerektiren adımlarda Graylog Connection seçilir. Örnek: "Send Message", "Custom Log", "Notify SIEM", "Graylog Log" gibi adımlar. Bağlantı seçimi bu adımların yapılandırmasında yer alan Connection alanından yapılır.
Zamanlanmış görevlerde (ör. belirli aralıklarla log gönderme, health check loglama vb.) bağlantı seçilerek Graylog cluster'ına erişim sağlanır. Connection değiştiğinde, job çalışma davranışı da buna göre güncellenir.
Connection Test özelliği ile bağlantının doğruluğu Integration Flow'dan bağımsız olarak kontrol edilebilir. Bu test hata ayıklama sürecinde kritik önem taşır.
Best Practices
Yapılması Gerekenler ve En İyi Uygulamalar
Kötü: Her adımda farklı GELF field isimleri
İyi: Ortak alan isimleri kullanmak
En İyi: Apinizer context attribute'larını zorunlu hale getirip Graylog pipeline'ı ile doğrulamak
Kötü: Tüm ortamlarda NONE seçmek
İyi: Production'da GZIP kullanmak
En İyi: Trafiğe göre dinamik politika belirlemek ve Graylog tarafında decompress maliyetini izlemek
Kötü: Kritik logları UDP ile göndermek
İyi: Prod'da TCP, Test'te UDP kullanmak
En İyi: TCP + TLS'i zorunlu tutmak, UDP'yi yalnızca düşük riskli metrikler için kullanmak
Kötü: QueueSize değerini çok düşük bırakmak
İyi: Trafik analizine göre 512-1024 arası ayarlamak
En İyi: Peak load ölçümlerine göre otomasyonla queue/buffer ayarlarını güncellemek
Kötü: Tüm ortamlarda aynı connection parametrelerini kullanmak
İyi: Her ortam için ayrı connection oluşturmak
En İyi: Environment seçeneğini kullanarak tek connection'da tüm ortamları yönetmek, ortamlar arası geçişte sadece environment değiştirmek
Kötü: Connection'ı test etmeden kaydetmek ve deploy etmek
İyi: Kaydetmeden önce Test Connection ile doğrulamak
En İyi: Her parametre değişikliğinden sonra test etmek, production'a geçmeden önce test ortamında tam entegrasyon testi yapmak
Güvenlik En İyi Uygulamaları
Sertifika zincirlerini yalnızca güvenilir kaynaklardan alın. Expiration tarihlerini izleyin, yenileme öncesi yeni dosyayı yükleyin
Graylog endpoint'ini yalnızca gerekli Apinizer subnet'lerinden erişilebilir hale getirin; güvenlik duvarında allowlist uygulayın
Kişisel veriler veya erişim token'ları loglanıyorsa GELF mesajlarını sanitize edin; Apinizer policy'lerinde maskeleme kuralları ekleyin
Kullanıcı adı ve şifre gibi hassas bilgileri environment variable veya secret manager kullanarak saklayın. Kimlik bilgilerini kod veya konfigürasyon dosyalarına hardcode etmeyin. Periyodik olarak şifreleri güncelleyin
Production ortamında mutlaka SSL/TLS aktif edin. Self-signed sertifikalar sadece development ortamında kullanın. Sertifika expiration tarihlerini takip edin ve zamanında yenileyin
Connection yapılandırmasını sadece yetkili kullanıcıların değiştirmesine izin verin. Connection değişiklik loglarını saklayın. Kritik connection'lar için değişiklik approval süreci uygulayın
Kaçınılması Gerekenler
Neden kaçınılmalı: UDP paket kaybı kritik olayların kaybolmasına yol açar
Alternatif: TCP + TLS kullanın
Neden kaçınılmalı: Gereksiz DEBUG seviyeleri Graylog depolamasını şişirir
Alternatif: Seviyeyi iş ihtiyacına göre belirleyin, pipeline filtreleri ekleyin
Neden kaçınılmalı: Expire olmuş sertifika TLS bağlantısını düşürür
Alternatif: Takvim hatırlatmalarıyla sertifika yenileyin
Neden kaçınılmalı: Test verileri production sistemine yazılabilir, gerçek kullanıcılar etkilenebilir, güvenlik riski oluşur
Alternatif: Her ortam için ayrı connection oluşturun, environment parametresini kullanın, connection isimlerini ortama göre prefix ekleyerek ayırın (Test_, Prod_)
Neden kaçınılmalı: Ağ gecikmelerinde connection sürekli timeout olur, Entegrasyon adımları başarısız olur
Alternatif: Gerçek kullanım senaryolarına göre timeout değerlerini ayarlayın, network latency'yi ölçün ve timeout'ları buna göre belirleyin
Neden kaçınılmalı: Her istekte yeni bağlantı açılır, performans düşer, kaynak tüketimi artar, hedef sistem yükü artar
Alternatif: Connection pool aktif edin, pool size'ı trafik hacmine göre ayarlayın, pool monitoring kurun
Performans İpuçları
Öneri: QueueSize değerini tek gönderim batch'i olarak kullanın, Graylog kapasitesine göre ayarlayın
Etki: Gecikme azalır, throughput artar
Öneri: CPU takibi yaparak GZIP yerine ZLIB veya NONE'a geçiş soluklamaları planlayın
Etki: CPU tüketimi dengelenir, kritik dönemlerde log gecikmesi düşer
Öneri: threads değerini aktif CPU çekirdeklerinin %50'si ile sınırlayın, gerekirse yatay ölçekleyin
Etki: Sistem kaynakları dengede kalır, throttling azalır
Öneri: Pool size'ı peak trafiğe göre ayarlayın (önerilen: eşzamanlı istek sayısı × 1.5), idle connection timeout'ları belirleyin, pool health check yapın
Etki: Bağlantı açma maliyeti %80 azalır, yanıt süreleri düşer, kaynak kullanımı optimize edilir
Öneri: Gerçek network latency'yi ölçün, timeout değerlerini buna göre ayarlayın, çok düşük veya çok yüksek timeout'lardan kaçının
Etki: Gereksiz beklemeler önlenir, hızlı fail-over sağlanır, kullanıcı deneyimi iyileşir
Öneri: Connection pool kullanımını izleyin, timeout oranlarını takip edin, connection health check yapın, alerting kurun
Etki: Sorunlar proaktif tespit edilir, performans darboğazları erken belirlenir, kesinti süresi azalır
Sorun Giderme (Troubleshooting)
GELF Mesaj Reddediliyor
Mesaj boyutu 1 MB'ı aşıyor, JSON alanları yanlış tipte veya Graylog pipeline hatası olabilir.
Mesajdaki büyük alanları azaltın.
JSON şemasını kontrol edin.
Graylog pipeline loglarını inceleyin.
TLS Handshake Başarısız
Sertifika zinciri eksik, hostname mismatch veya TLS disabled server olabilir.
Sertifika dosyasını yeniden yükleyin.
hostname ile CN/SAN eşleşmesini doğrulayın.
Graylog server TLS ayarlarını kontrol edin.
Connection Timeout
Network gecikmesi, hedef sistem yavaş yanıt veriyor veya timeout değeri çok düşük olabilir.
Network connectivity kontrol edin.
Hedef sistem sağlığını kontrol edin.
Timeout değerlerini artırın.
Connection loglarını inceleyin.
Authentication Failed
Yanlış kullanıcı adı/şifre, expired credentials veya yetki problemi olabilir.
Kimlik bilgilerini doğrulayın.
Hedef sistemde kullanıcının aktif olduğunu kontrol edin.
Gerekli yetkilerin verildiğini kontrol edin.
SSL/TLS sertifikalarını kontrol edin.
Pool Exhausted
Pool size çok düşük, connection leak var veya trafik çok yüksek olabilir.
Pool size'ı artırın.
Connection'ların düzgün kapatıldığını kontrol edin.
Idle connection timeout'ları ayarlayın.
Connection kullanım metriklerini izleyin.
Connection Test Başarılı Ama Entegrasyon Akışı Hata Veriyor
Integration/Connector adımında farklı connection seçili olabilir, adım yanlış yapılandırılmış olabilir veya Flow/Job redeploy edilmemiş olabilir.
Connection'ın enable toggle'ının aktif olduğunu kontrol edin.
Integration Flow'da doğru connection'ın seçildiğini doğrulayın.
Connection'ı tekrar deploy edin.
Integration Flow veya Job'ı redeploy edin.
Gateway loglarını kontrol edin.
Sık Sorulan Sorular (SSS)
Graylog Connection kaç projede paylaşılabilir?
Admin olarak oluşturulan connection globaldir ve tüm projeler tarafından kullanılabilir; proje seviyesinde oluşturulanlar yalnızca ilgili projede görünür.
Graylog'a aynı anda kaç ortam bağlanabilir?
Her ortam için ayrı kayıt girilebilir; ortam listesi Environment servisinden yüklenir ve yalnızca yayınlanan ortamlar seçilebilir.
TLS sertifika dosyası hangi formatta olmalı?
PEM zinciri desteklenir; yüklenen dosya 100 MB sınırını aşamaz ve BEGIN CERTIFICATE bloğunu içermelidir.
GELF transport değiştirince yeniden deploy gerekir mi?
Evet, TransportType değişikliği connection'ı yeniden deploy eder; Graylog listener uyumlu değilse değişiklik başarısız olur.
Log seviyesini Graylog içinde mi yoksa Connection'da mı ayarlamalıyım?
Connection'daki gelfMessageLevel minimum eşiği belirler, Graylog pipeline'ları ek filtreleme yapabilir; ikisini birlikte yönetin.
Aynı connection'ı birden fazla Integration Flow'da kullanabilir miyim?
Evet, aynı connection birden fazla Integration Flow veya Connector adımında kullanılabilir. Bu merkezi yönetim sağlar ve konfigürasyon tutarlılığını garanti eder. Ancak connection'da yapılan değişiklikler tüm kullanım yerlerini etkileyeceği için dikkatli olunmalıdır.
Connection pool kullanmak zorunlu mudur?
Connection pool kullanımı zorunlu değildir ancak yüksek trafikli sistemlerde şiddetle önerilir. Her istekte yeni bağlantı açmak yerine mevcut bağlantıları yeniden kullanmak performansı önemli ölçüde artırır.
Test ve Production için farklı connection'lar mı oluşturmalıyım?
Evet, her ortam için ayrı connection oluşturmanız önerilir. Alternatif olarak environment parametresini kullanarak tek connection içinde tüm ortamları yönetebilirsiniz. Bu yaklaşım daha kolay yönetim ve daha az hata riski sağlar.
Test Connection başarılı ama Integration Flow'da çalışmıyor, neden?
Birkaç neden olabilir:
- Connection enable toggle'ı pasif olabilir
- Integration adımında farklı bir connection seçili olabilir
- Connection deploy edilmemiş olabilir
- Integration Flow henüz redeploy edilmemiş olabilir