İçeriğe Atla
Rehberler · 9 dk okuma · görüntülenme
100%

Vector ile Merkezî Log Toplama Pipeline'ı

Uygulama, syslog ve altyapı loglarını tek akışta toplayıp yönlendirmek için Vector tabanlı pratik kurulum yaklaşımı.

Vector ajanı ile farklı log kaynaklarının tek pipeline içinde birleşmesini gösteren kapak görseli

Kurumsal ortamlarda log toplama problemi çoğu zaman “hangi platformu kullanacağız?” sorusuyla başlar. Oysa daha kritik soru şudur: farklı formatta, farklı frekansta ve farklı risk seviyesinde üretilen logları aynı teslimat omurgasında nasıl taşıyacağız? Vector bu iş için güçlü bir araç çünkü sadece bir ajan değil; dönüştürme, zenginleştirme ve yönlendirme katmanını da sade biçimde kurmaya izin veriyor.

Vector ile uygulama, syslog ve altyapı loglarının tek pipeline içinde birleşmesini gösteren teknik şema
İyi bir log pipeline’ı yalnızca veri taşımakla kalmaz; kaynakları ortak etiket ve akış kuralları altında hizalar.

Bu rehberde, birden fazla log kaynağını Vector ile toplayan ve iki farklı hedefe yönlendiren temel bir kurulum iskeleti kuracağız.

Hangi senaryo için uygun?

Şu durumlarda bu model oldukça kullanışlıdır:

  • Linux sunuculardan syslog akıyor.
  • Uygulamalar JSON veya satır tabanlı log üretiyor.
  • Bazı loglar uzun süreli depoya, bazıları hızlı arama sistemine gitmeli.
  • Ortak etiket standardı ve filtre mantığı merkezi yönetilmek isteniyor.

Bu örnekte üç kaynak alacağız:

  1. /var/log/messages
  2. Bir uygulama log dosyası
  3. Journald

Temel Vector yapılandırması

Önce kaynakları tanımlayalım:

[sources.syslog_file]
type = "file"
include = ["/var/log/messages"]
read_from = "beginning"

[sources.app_file]
type = "file"
include = ["/srv/apps/*/current/log/app.log"]
read_from = "end"

[sources.journald]
type = "journald"
current_boot_only = true

Burada özellikle uygulama loglarını wildcard ile toplamak, çok servisli yapılarda konfigürasyon tekrarını azaltır.

Ortak zenginleştirme katmanı

Kaynakları toplamak yetmez. Logun hangi ortamdan, hangi servisten ve hangi düğümden geldiğini hızlıca anlamak gerekir. Bunu remap ile yapabiliriz:

[transforms.normalize]
type = "remap"
inputs = ["syslog_file", "app_file", "journald"]
source = '''
.environment = "production"
.host = get_hostname!()
.team = "platform"

if exists(.file) && includes!(.file, "/srv/apps/") {
  .log_type = "application"
} else {
  .log_type = "infrastructure"
}
'''

Kurumsal yapılarda en büyük sorunlardan biri, aynı olayın farklı ekiplerce farklı etiketlerle aranmasıdır. Bu katman, daha ilk toplama noktasında ortak dil kurar.

Gürültüyü erkenden azaltmak

Tüm logu aynı hedefe aynen göndermek pahalıdır. Özellikle health check, rutin cron çıktısı veya tekrar eden düşük değerli kayıtlar index maliyetini artırır. Basit bir filtre ekleyelim:

[transforms.filter_noise]
type = "filter"
inputs = ["normalize"]
condition = '''
!match(string!(.message) ?? "", r'healthcheck|/readyz|/livez')
'''

Bu filtreyi agresif tutmamak gerekir. İlk aşamada silmek yerine ayrı hedefe yönlendirmek daha güvenli olabilir.

İki hedefe birden yönlendirme

Şimdi aynı akışı hem Elasticsearch benzeri arama katmanına hem de uzun süreli objeye dayalı depoya gönderelim:

[sinks.search]
type = "http"
inputs = ["filter_noise"]
uri = "https://logs.example.internal/ingest"
encoding.codec = "json"
compression = "gzip"

[sinks.archive]
type = "aws_s3"
inputs = ["normalize"]
bucket = "central-log-archive"
region = "eu-central-1"
key_prefix = "vector/%Y/%m/%d/"
encoding.codec = "json"
compression = "gzip"

Burada dikkat edilmesi gereken nokta şu: arama katmanına filtrelenmiş akış giderken, arşiv katmanına normalize edilmiş ama filtrelenmemiş veri gidebilir. Bu ayrım operasyon ve maliyet dengesini güçlendirir.

Operasyonel olarak nelere dikkat edilmeli?

Vector kurulduktan sonra asıl değer, çalışma davranışını izlemekten gelir. Ben şu kontrolleri öneririm:

  • Buffer doluluk oranı
  • Hedefe yazma hataları
  • Kaynak bazlı gecikme
  • Düşürülen event sayısı
  • Konfigürasyon değişim sıklığı

Özellikle merkezi log omurgasında sessiz veri kaybı, açık hatadan daha tehlikelidir. Bu yüzden pipeline’ın kendisini de gözlemlemek gerekir.

Sonuç

Vector ile merkezî log toplama pipeline’ı kurmak, sadece ajan kurmak değildir. Asıl iş, log kaynaklarını ortak bir veri ve operasyon sözleşmesi altında toplamak, gürültüyü erkenden azaltmak ve doğru veriyi doğru hedefe yollamaktır. Gözlemlenebilirlik olgunluğu çoğu zaman kullandığınız arama aracından değil, veriyi oraya hangi disiplinle taşıdığınızdan anlaşılır.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

Yeni yazılardan haberdar olun

Haftada bir yeni içerikler ve kaynaklar doğrudan e-postanıza gelsin.

Spam yok. Yalnızca yeni ve önemli içerikler için e-posta gönderilir.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar