GH GambleHub

Log konveyerləri: ELK və Loki

1) Nə üçün və nə zaman: loging məqsədləri

Müşahidə və RCA: debag sürətləndirilməsi, post-mortem, SLO/SLA nəzarət.
Təhlükəsizlik və audit: giriş izləri, anomaliyalar, araşdırmalar.
Biznes metriklər: dönüşüm, ödəniş flow, PSP səhvləri, istifadəçi davranışı.
Komplayens: saxlama, PII maskalama, Retenshn siyasəti, Legal Hold.

Log növləri: ərizə, infrastruktur (kubelet, kube-proxy, CNI, ingress), şəbəkə, audit, ödəniş, veb hadisələr, Nginx/Envoy, DB.

2) Yüksək səviyyəli arxitekturalar

Seçimi A: ELK

Producers → Logshipper (Filebeat/Fluent Bit/Vector) → Logstash/Beats input → Elasticsearch → Kibana/Алертинг

Seçimi B: Loki

Producers → Promtail/Fluent Bit → Loki distributor/ingester/querier → Grafana/Алертинг

Hibrid

ELK tam mətn/faset axtarış, Loki ucuz miqyaslı saxlama və sürətli grep oxşar sorğular üçün; Grafana metrik/trek ilə korelasiya.

3) Məlumat axını və emal səviyyələri

1. Toplama: Bit tail faylları, journald, syslog, stdout konteynerləri, HTTP.
2. Zənginləşdirmə: normallaşdırma timestamp, host/pod/namespace, env (prod/stage), release, commit SHA, trace/span id.
3. Parsinq: JSON → flat fields; grok/regex; Nginx/Envoy formatları; ödəniş sxemləri (PSP səhv kodları).
4. Filtrasiya/redaktə: PII (PAN, CVV, e-mail, ünvanlar), sirləri, tokenləri kəsin.
5. Routing: tenant/service/log səviyyəsinə görə; hot/warm/cold; S3/obyekt saxlama.
6. Saxlama və retenshn: məlumat sinifləri üzrə TTL siyasəti.
7. Access/Analytics/Alerts.

4) ELK: əsas həllər

4. 1 Logstash/Beats

Beats/Fluent Bit-dən yüngül toplayıcı üçün istifadə edin, Logstash - mərkəzi ETL (grok, dissect, mutate, geoip, translate) kimi.
Logstash hovuzları: ingest-ETL, security-ETL, payments-ETL - yüklərin izolyasiyası üçün.

4. 2 Elasticsearch

Şardlaşdırma: Şard başına 20-50 GB ~ istiqamətləndirin; «Şard partlayışından» qaçın.
İndeks strategiyası: 'logs- <tenant> - <service> -YYYY. MM. DD 'və ya məlumat axını; rollover ölçüsü/vaxt.

ILM (hot/warm/cold/frozen):
  • hot: SSD, 1-7 gün; warm: HDD, 7-30 gün; cold: həcmli; frozen: daha yavaş giriş ilə minimum dəyəri.
  • Mappinqlər: sahələri ciddi şəkildə tipizə edin, 'fielddata' və dinamik sahələrin yaradılmasını məhdudlaşdırın.
  • Cache və sorğular: keyword sahələrində filtrlər, aqreqatlar - səliqəli; yüksək tezlikli axtarış üçün pin-to-hot.

4. 3 Kibana

Çox tenantlıq üçün boşluqlar.
Saved searches, Lens/TSVB, threshold/metrik-alert.
RBAC indeks-nümunələri ('logs-tenant-').

5) Loki: əsas həllər

5. 1 Etiket modeli

Etiketlər Loki 'nin «indeksidir». Aşağı kardinallığı istifadə edin: 'cluster', 'namespace', 'app', 'level', 'env', 'tenant'.
Yüksək kardinallığı olan sahələr (uid, request_id) - sətirdə; LogQL '| =', '| json', '| regexp' vasitəsilə sorğu zamanı çıxarın.

5. 2 Komponentlər

Promtail: сбор stdout, files, journald; parserlər (JSON, regex, cri).
Distributor/Ingester/Querier/Query-frontend: rolları ölçmək; caching sorğular.
Object storage (S3/GCS/MinIO) uzun müddət chank-log saxlamaq üçün.

5. 3 LogQL üsulları

Sürətli grep: '{app = «payments», level =» error»} | = «declined»'

Парсинг JSON: `{app="api"} | json | code="5xx" | unwrap duration | avg()`

Metrlərlə korrelyasiya: 'rate ({app = «nginx»} | = «200» [5m])'

6) ELK vs Loki müqayisə (qısaca)

Axtarış/aqreqasiya: ELK mürəkkəb tam mətn və faset sorğular üçün daha güclü; Loki - grep-like, sürətli və ucuz.
Qiymət: Loki çox vaxt böyük həcmdə daha ucuzdur (obyekt saxlama + daha kiçik indeks).
Əməliyyat mürəkkəbliyi: ELK/ILM, Cavu-hip indeksləri üzrə nizam-intizam tələb edir; Loki - etiket fənləri.
Metrik/treklərlə korrelyasiya: Loki təbii olaraq Grafana/OTel yığınına inteqrasiya edir; ELK da bacarır, lakin daha çox inteqrasiya yolu ilə.

7) Təhlükəsizlik və uyğunluq

Kənarda PII redaktəsi (shipper): PAN, e-mail, telefon, ünvanlar, tokenləri maskalayın.
TLS in-tranzit, agentlər və şinlər arasında mTLS.
RBAC: per-tenant indekslər/etiketlər; qeyri-space/məkan izolyasiya.
Secrets hygiene: gizli olmayan mühit dəyişənləri, ayrı-ayrı gizli menecerlər.
Legal Hold: seqmentlərin/indekslərin dondurulması mexanizmi; mübahisəli dövrlər üçün write-once.
Data sinifləri üzrə TTL siyasəti (prod/stateful/ödənişlər/audit).
Giriş audit-treyleri.

8) Etibarlılıq və ötürmə qabiliyyəti

Tamponlama və backpressure: agentlərdə yerli fayllar/disklər; eksponensial backoff ilə retrai.
Idempotency: 'ingest _ id '/' log _ id' sahələri təkrarlandıqda dublların qarşısını almaq üçün.
HA: ES-master/Loki inhesters üçün minimum 3 nod; antiaffinity по AZ.
Kvotalar və rate-limits tenant/service; «fırtına» log qorunması.
Giriş səviyyəsi sxemi: 'ERROR' məhdud, 'DEBUG' yalnız dinamik bayraqlar vasitəsilə müvəqqəti olaraq.

9) Performans və sazlama

ELK:
  • JVM heap 50% RAM (lakin ≤ ~ 30-32 GB), page cache vacibdir.
  • Ağıllı rollover (20-50 GB/şard), 'refresh _ interval' ↑ ingest-indekslər üçün.
  • Logstash «ağır» grok qarşısını almaq; mümkünsə mənbədə JSON-loqinq.
Loki:
  • Düzgün etiket seti sürətin açarıdır.
  • Böyük fincan → daha ucuz saxlama, lakin daha bahalı yaddaş ingester; balans.
  • Query-frontend + cache (mem/Redis) təkrar sorğular üçün.

10) Log üçün FinOps (dəyəri)

Sahələrin/etiketlərin kardinallığının azaldılması.
DEBUG sampling və dinamik «log-sviçalar».
Rotasiya: qısa isti, uzun cold bir obyekt.
Deduplikasiya və konsolidasiya mesajları (batch).
Nadir hallarda istifadə olunan logları ucuz saxlama siniflərinə arxivləşdirin.
Dashboard dəyəri: həcmi/data-stream/etiket/indekslər/tenant.

11) Metrlərlə və marşrutlarla korrelyasiya (Observability 3-in-1)

Trace-ID/Span-ID hər log (API şlüzlərində və xidmətlərində orta ölçülü).
OpenTelemetry: vahid kontekst; Tempo/Jaeger ixracatçıları, Prometheus/Mimir metriklər, Loki/ELK log.
Sürətli ssenarilər: «metrika ilə alert → müvafiq log atlama → trek atlama».

12) Çox tenant və izolyasiya

Namespace-based izolyasiya (K8s labels), fərdi indeks-nümunələr/etiket 'tenant'.
Tenant üzrə alertlərin/daşbordların/retenşnaların bölünməsi.
İstehlak Billing: ingest həcmi, storage, sorğular.

13) konveyer özü üçün monitorinq və SLO

SLO ingest: «99. 9% log çatdırıldı <X san".
SLO axtarış: «p95 sorğu <Y san».
Texniki metriklər: queue depth, dropped logs, reprocess rate, error rate parsers, nasazlıq ingester/ES nod.

14) Tipik yerləşdirmə sxemləri

Managed: Elasticsearch Service/Opensearch, Grafana Cloud Loki.
Self-hosted K8s: StatefulSets üçün ES/Loki, anti-affinity AZ, PersistentVolumes, obyekt saxlama.
Edge agentləri (regionlarda applications): yerli bufer + TLS kanal mərkəzi ingest.

15) Konfiqurasiya nümunələri

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 (ingest və maskalama)

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) Alertinq və daşbordlar (şablonlar)

Ошибки API: `rate({app="api",level="error"}[5m]) > threshold` → PagerDuty/Telegram.
Nginx/Envoy 5xx sıçrayış; agentlərdə ingest drop; axtarış latency artım.

Daşbordlar:
  • Xidmətlər/tenantlar üzrə qeydlərin həcmi.
  • Üst səhv nümunələri (kod/istisna/endpoint).
  • Retrenshn/saxlama sinifləri üzrə qiymət.

17) Keyfiyyət yoxlamaları (log-QA)

Log müqavilələri: JSON formatı, məcburi sahələr ('ts', 'level', 'service', 'env', 'trace _ id', 'msg').
CI log linter: koordinasiya olmadan yüksək kardinallığı ilə yeni sahələri qadağan.
Kanarya xidmətləri: reqressiyaların erkən aşkarlanması üçün istinad yuvalarının yaradılması.

18) Tez-tez səhvlər və anti-nümunələr

Loki etiketləri ('user _ id', 'request _ id') → yaddaş partlayışı.
Mapping olmadan ES dinamik sahələr → «partlayış indeksləri».
DEBUG «əbədi». Bayraqlara və TTL ilə qoşun.
PII redaksiyasının olmaması.
Hər şey üçün bir ümumi «monolit» konveyer - domenlər üzrə ən yaxşı seqmentlər.

19) Tətbiq planı (iterasiya)

1. MVP: agentlər + bir paypline (proqramlar), baza daşbordları, PII redaksiyası.
2. Genişləndirilməsi: şəbəkə/infra-loqlar, SLO alertləri, yollarla korelasiya.
3. FinOps: retenshn matrisi, dəyər hesabatı, etiket/indekslərin optimallaşdırılması.
4. Multi-tenant: boşluqlar, RBAC, istehlak billing.
5. Etibarlılıq: HA, disaster-drills, Legal Hold.

20) Prod-da başlanğıc çek siyahısı

  • JSON formatı və bütün xidmətlərdə məcburi sahələr.
  • Agent/ingest PII maskalamaq.
  • Retenshn/ILM və ya bucket-lifecycle siyasəti.
  • RBAC/fəza/tenant.
  • SLO ingest/axtarış və alert.
  • Kanarya loads və yük test qaçış.
  • Dashboard dəyəri və xidmət sahibləri haqqında hesabat.
  • Runbooks: «ingest/yavaş axtarış/qırmızı toplar düşdükdə nə etmək lazımdır».

21) Mini-FAQ

Seçmək üçün nə - ELK və ya Loki?

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.