Günlük boru hatları: ELK ve Loki
1) Neden ve ne zaman: kayıt hedefleri
Gözlemlenebilirlik ve RCA: Debag hızlandırma, post-mortem, SLO/SLA kontrolü.
Güvenlik ve denetim: erişim izleri, anormallikler, soruşturmalar.
İş metrikleri: dönüşüm, ödeme akışı, PSP hataları, kullanıcı davranışı.
Uyumluluk: depolama, PII maskeleme, saklama politikaları, Yasal Bekletme.
Günlük türleri: uygulama, altyapı (kubelet, kube-proxy, CNI, giriş), ağ, denetim, ödeme, web etkinlikleri, Nginx/Envoy, veritabanı.
2) Üst düzey mimariler
Seçenek A: ELK
Üreticiler - Logshipper (Filebeat/Fluent Bit/Vector) - Logstash/Beats girişi - Elasticsearch - Kibana/Алертинг
Seçenek B: Loki
Yapımcılar - Promtail/Fluent Bit - Loki distribütörü/ingester/querier - Grafana/Алертинг
Hibrit
Tam metin/faset araması için ELK, düşük maliyetli ölçeklenebilir depolama için Loki ve hızlı grafik benzeri sorgular; Grafana'daki metrikler/izler ile korelasyon.
3) Veri akışı ve işleme seviyeleri
1. Koleksiyon: bayt kuyruk dosyaları, dergi, syslog, stdout konteynerleri, HTTP.
2. Zenginleştirme: zaman damgası normalleştirme, host/pod/namespace, env (prod/stage), serbest bırakma, SHA, trace/span id.
3. Ayrıştırma: JSON - düz alanlar; grok/regex; Nginx/Elçi formatları; Ödeme şemaları (PSP hata kodları).
4. Filtreleme/düzenleme: PII (PAN, CVV, e-posta, adresler), sırlar, belirteçleri kesin.
5. Yönlendirme: kiracı/hizmet/günlük seviyesine göre; Sıcak/sıcak/soğuk; Depolamayı S3/object için.
6. Depolama ve saklama: Veri sınıfına göre TTL politikası.
7. Erişim/Analiz/Uyarılar.
4) ELK: anahtar çözümler
4. 1 Logstash/Beats
Kolay toplayıcı için düğümlerde Beats/Fluent Bit, merkezi ETL olarak Logstash (grok, dissect, mutate, geoip, translate) kullanın.
Logstash havuzları: ingest-ETL, security-ETL, payments-ETL - yükleri izole etmek için.
4. 2 Elasticsearch
Sharding: parça başına 20-50 GB ~ odaklanın; "Parça patlaması'ndan kaçının.
Dizin stratejisi: 'logs- <kiracı> - <hizmet> -YYYY. MM. DD 'veya veri akışları; Boyut/zamana göre rollover.
- sıcak: SSD, 1-7 gün; Sıcak: HDD, 7-30 gün; soğuk: hacimsel; dondurulmuş: daha yavaş erişim ile minimum maliyet.
- Eşlemeler - Sert tip alanlar, fielddata kısıtlamak ve dinamik alanlar oluşturmak.
- Önbellek ve sorgular: anahtar kelime alanlarına göre filtreler, kümeler - düzgün bir şekilde; Yüksek frekanslı arama için pin-to-hot.
4. 3 Kibana
Çoklu kiracılık için alanlar.
Kaydedilen aramalar, Lens/TSVB, eşik/uyarı metrikleri.
Dizin desenlerine göre RBAC ('logs-tenant-').
5) Loki: önemli kararlar
5. 1 Etiket modeli
Etiketler Loki'nin indeksidir. Düşük kardinalite kullanın: 'cluster', 'namespace', 'app', 'level', 'env', 'tenant'.
Yüksek kardinaliteye sahip alanlar (uid, request_id) - üst üste; LogQL aracılığıyla sorgulandığında '| =', '| json', '| regexp' dosyasını alın.
5. 2 Bileşenler
Promtail: сбор stdout, dosyalar, journald; Ayrıştırıcılar (JSON, regex, cri).
Dağıtıcı/Ingester/Querier/Query-frontend: role göre ölçeklendirme; önbelleğe alma isteği.
Yığın günlüklerinin uzun süreli depolanması için nesne depolama (S3/GCS/MinIO).
5. 3 LogQL teknikleri
Hızlı grep: '{app = "ödemeler", level =" hata"} | = "reddedildi"'
Парсинг JSON: ' {app =" api"} | json | code =" 5xx" | açılma süresi | avg ()'
Metriklerle korelasyon: 'rate ({app = "nginx"} | = "200" [5m])'
6) ELK vs Loki karşılaştırması (kısaca)
Arama/toplama: ELK, karmaşık tam metin ve yönlü sorgular için daha güçlüdür; Loki - grep benzeri, hızlı ve ucuz.
Maliyet: Loki genellikle daha büyük hacimlerde daha ucuzdur (nesne depolama + daha küçük endeks).
Operasyonel karmaşıklık: ELK, endekslerde/ILM, Javu-kalçalarda disiplin gerektirir; Loki - etiket disiplinleri.
Metrikler/izler ile korelasyon: Loki, Grafana/OTel yığını ile doğal olarak bütünleşir; ELK da nasıl olduğunu bilir, ancak daha sık entegrasyon yoluyla.
7) Güvenlik ve uyumluluk
Kenarda PII sürümü (gönderici): maske PAN, e-posta, telefon, adresler, belirteçler.
TLS transit, acenteler ve otobüsler arasında mTLS.
RBAC: kiracı başına indeksler/etiketler; Neimspaces/spaces izolasyonu.
Sır hijyeni: Sırları olmayan çevre değişkenleri, bireysel gizli yöneticiler.
Yasal Tutma: segment/indeks dondurma mekanizması; Tartışmalı dönemler için bir kez yazın.
Silme/saklama: Veri sınıfına göre TTL politikaları (prod/stateful/payments/audit).
Erişim denetim izlerini günlüğe kaydedin.
8) Güvenilirlik ve verim
Arabelleğe alma ve geri yükleme: ajanlar için yerel dosyalar/diskler; üstel geri çekilme ile geri çekilir.
Idempotency: Kopyalar sırasında kopyalanmaları önlemek için 'ingest _ id'/' log _ id' alanları.
HA: Loki ES ustaları/ingesterleri için en az 3 düğüm; AZ по antiafinite.
Kiracı/hizmete göre kotalar ve oran limitleri; "Fırtına" kütüklerine karşı koruma.
Günlük düzeyi şeması: 'ERROR' sınırlı, 'DEBUG' sadece geçici olarak dinamik bayraklar aracılığıyla.
9) Performans ve ayarlama
ELK:- JVM yığını %50 RAM (ancak düğüm başına ≤ 30-32 GB ~), sayfa önbelleği önemlidir.
- Akıllı rollover (20-50 GB/shard), ingest indeksleri için 'refresh _ interval' ↑.
- Logstash'ta'ağır "grok'tan kaçının; Mümkünse, JSON kaynağa giriş yapar.
- Doğru etiket seti hızın anahtarıdır.
- Büyük parçalar - daha ucuz depolama, ancak ingester'de daha pahalı bellek; denge.
- Tekrarlanan istekler için Query-frontend + cache (meme/Redis).
10) Günlükler için FinOps (maliyet)
Alanların/etiketlerin kardinalitesinin azaltılması.
DEBUG örneklemesi ve dinamik "günlük anahtarları".
Rotasyon: kısa sıcak, uzun soğuk.
Veri tekilleştirme ve birleştirilmiş iletiler (toplu iş).
Nadiren kullanılan günlükleri ucuz depolama sınıflarına arşivleme.
Değer panosu: hacim/veri akışları/etiketler/indeksler/kiracılar.
11) Gözlemlenebilirlik 3'ü 1 arada
Her günlüğe Trace-ID/Span-ID (API ağ geçitlerinde ve hizmetlerinde ara katman yazılımı).
OpenTelemetry: tek bağlam; Tempo/Jaeger için ihracatçılar, Prometheus/Mimir için metrikler, Loki/ELK için günlükler.
Hızlı senaryolar: "Metrik olarak uyarı - karşılık gelen günlüklere atla - parçaya atla".
12) Çok kiracılık ve izolasyon
Ad alanı tabanlı izolasyon (K8s etiketleri), ayrı dizin desenleri/etiketler 'kiracı'.
Uyarıların/panoların/retenschna'nın kiracı tarafından ayrılması.
Tüketim faturalandırması: alım hacmi, depolama, istekler.
13) Konveyörün kendisi için izleme ve SLO
SLO yutmak: "99. %9 log teslim edildi Arama SLO: "p95 sorguları <Y sn". 14) Tipik dağıtım planları Yönetilen: Elasticsearch Service/Opensearch, Grafana Cloud Loki. 15) Yapılandırma örnekleri 15. 1 Promtail (K8s, CRI JSON) 15. 2 Logstash (yutmak ve maskelemek) 16) Uyarı ve gösterge panoları (şablonlar) Ошибки API: 'rate ({app = "api ", level =" error"} [5m])> threshold '> PagerDuty/Telegram. 17) Kalite kontrolleri (log-QA) Günlük sözleşmeleri: JSON formatı, gerekli alanlar ('ts', 'level', 'service', 'env', 'trace _ id', 'msg'). 18) Sık hatalar ve anti-desenler Loki, yüksek kardinaliteye ('user _ id', 'request _ id') sahip etiketler - bir bellek patlaması. 19) Uygulama planı (yinelemeler) 1. MVP: ajanlar + bir boru hattı (uygulamalar), temel gösterge panoları, PII sürümü. 20) Üretime başlama kontrol listesi 21) Mini-SSS Ne seçilir - ELK veya Loki?
Teknik metrikler: kuyruk derinliği, bırakılan günlükler, yeniden işleme oranı, ayrıştırıcı hata oranı, ingester/ES düğüm hatası.
Kendi kendine barındırılan K8s: ES/Loki için statefulSets, AZ için anti-afinite, PersistentVolumes, nesne depolama.
Kenar ajanları (bölgelerdeki uygulamalar): Merkezi alıma yerel tampon + TLS kanalı.yaml scrape_configs:
- job_name: kubernetes-pods kubernetes_sd_configs:
- role: pod pipeline_stages:
- cri: {}
- json:
expressions:
level: level msg: message trace: trace_id
- labels:
level:
app:
namespace:
- match:
selector: '{namespace="prod"}'
stages:
- regex:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
- replace:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
replace: '[REDACTED_PAN]'
relabel_configs:
- action: replace source_labels: [__meta_kubernetes_pod_label_app]
target_label: app
- action: replace source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- action: replace source_labels: [__meta_kubernetes_pod_node_name]
target_label: noderuby input {
beats { port => 5044 }
}
filter {
json { source => "message" skip_on_invalid_json => true }
mutate { add_field => { "env" => "%{[kubernetes][labels][env]}" } }
PII mutate {
gsub => [
"message", "\b[0-9]{12,19}\b", "[REDACTED_PAN]",
"message", "(?i)(authorization: Bearer)([A-Za-z0-9\.\-_]+)", "\1[REDACTED_TOKEN]"
]
}
}
output {
elasticsearch {
hosts => ["https://es-hot-1:9200","https://es-hot-2:9200"]
index => "logs-%{[fields][tenant]}-%{[app]}-%{+YYYY. MM. dd}"
ilm_enabled => true ssl => true cacert => "/etc/ssl/certs/ca. crt"
user => "${ES_USER}"
password => "${ES_PASS}"
}
}
Nginx/Envoy'da 5xx sıçrama; Drop ingest in ajanlar; Gecikme aramasının büyümesi.
Linter CI günlükleri: Anlaşma olmadan yüksek kardinaliteye sahip yeni alanların yasaklanması.
Kanarya hizmetleri: regresyonların erken tespiti için referans günlüklerinin oluşturulması.
Haritalama olmadan ES'de dinamik alanlar - "dizin patlaması".
Satışta DEBUG "sonsuza dek. "Bayraklarla ve TTL ile açın.
PII revizyonunun yokluğu.
Her şey için ortak bir "monolitik" boru hattı - alana göre daha iyi segmentler.
2. Uzantı: ağ/infra-logs, SLO uyarıları, izler ile korelasyon.
3. FinOps: tutma matrisi, maliyet raporu, etiket/dizin optimizasyonu.
4. Çok kiracılı: boşluklar, RBAC, tüketim faturalandırması.
5. Güvenilirlik: HA, felaket tatbikatları, Yasal Bekletme.