GH GambleHub

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.

ILM (sıcak/ılık/soğuk/dondurulmuş):
  • 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.
Loki:
  • 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".
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ı.

14) Tipik dağıtım planları

Yönetilen: Elasticsearch Service/Opensearch, Grafana Cloud Loki.
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ı.

15) Yapılandırma örnekleri

15. 1 Promtail (K8s, CRI JSON)

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: node

15. 2 Logstash (yutmak ve maskelemek)

ruby 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}"
}
}

16) Uyarı ve gösterge panoları (şablonlar)

Ошибки API: 'rate ({app = "api ", level =" error"} [5m])> threshold '> PagerDuty/Telegram.
Nginx/Envoy'da 5xx sıçrama; Drop ingest in ajanlar; Gecikme aramasının büyümesi.

Panolar:
  • Hizmetler/kiracılar tarafından günlüklerin hacmi.
  • Üst hata desenleri (kod/istisna/uç nokta).
  • Saklama/depolama sınıflarına göre maliyet.

17) Kalite kontrolleri (log-QA)

Günlük sözleşmeleri: JSON formatı, gerekli alanlar ('ts', 'level', 'service', 'env', 'trace _ id', 'msg').
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ı.

18) Sık hatalar ve anti-desenler

Loki, yüksek kardinaliteye ('user _ id', 'request _ id') sahip etiketler - bir bellek patlaması.
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.

19) Uygulama planı (yinelemeler)

1. MVP: ajanlar + bir boru hattı (uygulamalar), temel gösterge panoları, PII sürümü.
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.

20) Üretime başlama kontrol listesi

  • JSON formatı ve tüm hizmetlerde gerekli alanlar.
  • PII üzerinde maskeleme/ajan yutmak.
  • Tutma/ILM veya kova yaşam döngüsü politikaları.
  • RBAC/boşluklar/kiracılar.
  • SLO alma/arama ve uyarılar.
  • Kanarya günlükleri ve yük testi çalışması.
  • Değer panoları ve hizmet sahipleri hakkında rapor.
  • Runbooks: "yuttuysa ne yapmalı/yavaş arama yapın/kırmızı parçalar".

21) Mini-SSS

Ne seçilir - ELK veya Loki?

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.