Log konweýerleri: ELK we Loki
1) Näme üçin we haçan: logirlemegiň maksatlary
Syn edilişi we RCA: debagyň tizlenmegi, post-mortem, SLO/SLA gözegçiligi.
Howpsuzlyk we audit: giriş yzlary, anomaliýalar, derňewler.
Iş metrikleri: öwrülişik, töleg fly, PSP ýalňyşlyklary, ulanyjylaryň özüni alyp barşy.
Ylalaşyk: PII saklamak, gizlemek, retenşn syýasaty, Legal Hold.
Sahypalaryň görnüşleri: goşundy, infrastruktura (kubelet, kube-proxy, CNI, ingress), tor, audit, töleg, web wakalary, Nginx/Envoy, DB.
2) Ýokary derejeli arhitektura
A: ELK warianty
Producers → Logshipper (Filebeat/Fluent Bit/Vector) → Logstash/Beats input → Elasticsearch → Kibana/Алертинг
B görnüşi: Loki
Producers → Promtail/Fluent Bit → Loki distributor/ingester/querier → Grafana/Алертинг
Gibrid
ELK doly tekst/faset boýunça gözlemek üçin, Loki arzan masştably saklamak we çalt grep meňzeş soraglar üçin; Grafana metrikler/ýollar bilen baglanyşyk.
3) Maglumatlaryň akymy we gaýtadan işlemek derejesi
1. Ýygnamak: bit tail faýllar, journald, syslog, stdout konteýnerleri, HTTP.
2. Baýlaşdyrmak: timestamp normalizasiýa, host/pod/namespace, env (prod/stage), release, commit SHA, trace/span id.
3. Parsing: JSON → flat fields; grok/regex; Nginx/Envoy formatlary; töleg shemalary (PSP ýalňyşlyk kodlary).
4. Süzgüç/redaksiýa: PII (PAN, CVV, e-poçta, salgylar), syrlary, bellikleri kesmek.
5. Routing: tenant/service/log-derejesi boýunça; hot/warm/cold; S3/obýekt ammarynda.
6. Saklamak we retenşn: Maglumat synplary boýunça TTL syýasaty.
7. Giriş/Analitika/Aladalar.
4) ELK: esasy çözgütler
4. 1 Logstash/Beats
Beats/Fluent Bit-i ýeňil ýygnaýjy üçin, Logstash - merkezi ETL (grok, dissect, mutate, geoip, translate) hökmünde ulanyň.
Logstash howuzlary: ingest-ETL, security-ETL, payments-ETL - ýükleri izolýasiýa etmek üçin.
4. 2 Elasticsearch
Şardlamak: şard üçin 20-50 GB ~ ugrukdyryň; "şard-partlamadan" gaça duruň.
Indeks strategiýasy: 'logs- <tenant> - <service> -YYYY. MM. DD 'ýa-da data-akymlary; rollover ululygy/wagty boýunça.
- hot: SSD, 1-7 gün; warm: HDD, 7-30 gün; cold: göwrümli; frozen: has haýal giriş bilen iň pes bahasy.
- Mappingler: meýdanlary berk belläň, 'fielddata' -ny çäklendiriň we dinamiki meýdanlary dörediň.
- Keş we soraglar: key-word meýdanlary boýunça süzgüçler, agregatlar - seresaplylyk bilen; ýokary ýygylykly gözleg üçin pin-to-hot.
4. 3 Kibana
Köp tenantlyk üçin giňişlikler.
Tygşytlanan gözlegler, Lens/TSVB, threshold/metrik-alertler.
Indeksler boýunça RBAC ('logs-tenant-').
5) Loki: esasy çözgütler
5. 1 Bellikleriň modeli
Bellikler Loki indeksidir. Pes kardinallygy ulanyň: 'cluster', 'namespace', 'app', 'level', 'env', 'tenant'.
Ýokary kardinally meýdanlar (uid, request_id) - setirde; LogQL '| =', '| json', '| regexp' arkaly soralanda çykaryň.
5. 2 Komponentler
Promtail: сбор stdout, files, journald; parserler (JSON, regex, cri).
Distributor/Ingester/Querier/Query-frontend: rollar boýunça masştablamak; soraglary kesmek.
Object storage (S3/GCS/MinIO) çank-loglary uzak wagtlap saklamak üçin.
5. 3 LogQL usullary
Çalt grep: '{app = "payments", level =" error"} | = "declined"'
Парсинг JSON: `{app="api"} | json | code="5xx" | unwrap duration | avg()`
Metrler bilen baglanyşyk: 'rate ({app = "nginx"} | = "200" [5m])'
6) ELK vs Loki deňeşdirmesi (gysgaça)
Gözleg/agregasiýa: ELK çylşyrymly doly tekst we faset soraglary üçin has güýçli; Loki - grep-like, çalt we arzan.
Bahasy: Loki köplenç uly göwrümde arzan (obýekt ammary + kiçi indeks).
Işlemegiň çylşyrymlylygy: ELK indeksler/ILM, Jawa-hip boýunça tertip-düzgüni talap edýär; Loki - bellikler boýunça dersler.
Metrler/ýollar bilen baglanyşyk: Loki tebigy ýagdaýda Grafana/OTel aýnasy bilen birleşdirilýär; ELK hem bilýär, ýöne köplenç integrasiýa arkaly.
7) Howpsuzlyk we gabat gelmek
Gyradaky PII redaksiýasy (shipper): PAN, e-poçta, telefon, salgy, bellikleri gizläň.
TLS in-transit, mTLS agentler bilen tekerleriň arasynda.
RBAC: per-tenant indeksleri/bellikleri; neýspeýsleriň/giňişlikleriň izolýasiýasy.
Secrets hygiene: syrsyz üýtgeýän gurşaw, aýry-aýry gizlin dolandyryjylar.
Legal Hold: segmentleri/indeksleri doňdurmagyň mehanizmi; jedelli döwürler üçin write-once.
Aýyrmak/ret etmek: Maglumat synplary boýunça TTL syýasaty (prod/stateful/tölegler/audit).
Loglara girmek üçin audit treýleri.
8) Ygtybarlylygy we geçirijilik ukyby
Bufer we backpressure: ýerli faýllar/diskler; eksponensial backoff bilen retralar.
Idempotency: 'ingest _ id '/' log _ id' meýdanlary gaýtalananda goşa bolmazlygy üçin.
HA: ES-master/Loki ingesterleri üçin azyndan 3 nod; antiaffinity по AZ.
tenant/service boýunça kwotalar we rate-limits; logirlemegiň "tupanlaryndan" goramak.
Loglaryň derejesi: 'ERROR' çäkli, 'DEBUG' diňe dinamiki baýdaklar arkaly wagtlaýyn.
9) Öndürijilik we sazlama
ELK:- JVM heap 50% RAM (ýöne ≤ ~ 30-32 GB), page cache möhümdir.
- Akylly rollover (20-50 GB/şard), 'refresh _ interval' ↑ ingest-indeksler üçin.
- Logstash-da "agyr" groklardan gaça duruň; mümkin boldugyça çeşmede JSON-loging.
- Dogry bellik - tizligiň açary.
- Uly çantalar → saklamak arzan, ýöne ýat has gymmat ingester; deňagramlylyk.
- Query-frontend + keş (mem/Redis)
10) Loglar üçin FinOps (bahasy)
Meýdanlaryň/bellikleriň kardinallygynyň peselmegi.
DEBUG sampling we dinamiki "log-swiçler".
Aýlanyş: gysga gyzgyn, obýektde uzyn cold.
Duplikasiýa we jemlenen habarlar (batch).
Seýrek ulanylýan loglary arzan saklaýyş synplaryna arhiwlemek.
Gymmatyň daşbordy: göwrümi/data-akymlary/bellikleri/indeksleri/tenantlary.
11) Metrler we ýollar bilen baglanyşyk (Observability 3-in-1)
Her log üçin Trace-ID/Span-ID (API şlýuzlarynda we hyzmatlarynda middleware).
OpenTelemetry: ýekeje kontekst; eksportçylar Tempo/Jaeger, metrikler Prometheus/Mimir, loglar - Loki/ELK.
Çalt ssenariýalar: "metrika boýunça alert → degişli loglara bökmek → trasa bökmek".
12) Köp tenantlyk we izolýasiýa
Namespace-based izolýasiýa (K8s labels), aýry-aýry indeksler/' tenant 'bellikleri.
Tenant boýunça alertleriň/daşbordlaryň/retenşnalaryň bölünmegi.
Sarp etmek boýunça billing: ingest, storage, soraglar.
13) Konweýeriň özi üçin gözegçilik we SLO
SLO ingest: «99. Loglaryň 9% -i gowşuryldy <X sek".
SLO gözleg: "p95 soraglar <Y sek".
Tehniki metrikler: queue depth, dropped logs, reprocess rate, error rate parsers, şowsuzlyk ingester/ES nod.
14) Ýerleşdirmegiň nusgawy shemalary
Managed: Elasticsearch Service/Opensearch, Grafana Cloud Loki.
Self-hosted K8s: StatefulSets for ES/Loki, anti-affinity for AZ, PersistentVolumes, obýekt ammary.
Edge agentleri (sebitlerdäki programmalar): ýerli bufer + merkezi ingest TLS kanaly.
15) Konfigurasiýa mysallary
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 we maskalanmak)
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) Alerting we daşbordlar (şablonlar)
Ошибки API: `rate({app="api",level="error"}[5m]) > threshold` → PagerDuty/Telegram.
Nginx/Envoýda 5xx köpelýär; agentlerde ingest bölüji; gözleg latency.
- Hyzmatlar/tenantlar boýunça ýazgylaryň mukdary.
- Iň ýokary ýalňyşlyklar (kod/kadadan çykma/endpoint).
- Ammaryň retenşn/synplary boýunça bahasy.
17) Hil barlaglary (log-QA)
Logistika şertnamalary: JSON formaty, hökmany meýdanlar ('ts', 'level', 'service', 'env', 'trace _ id', 'msg').
CI log linteri: razylaşmazdan ýokary kardinally täze meýdanlary gadagan etmek.
Kanareýa hyzmatlary: regressiýalary ir ýüze çykarmak üçin salgylanma ýazgylaryny döretmek.
18) Ýygy-ýygydan ýalňyşlyklar we anti-patternler
Loki bellikleri ('user _ id', 'request _ id') → ýat partlamasy.
Mappingsiz ES-de dinamiki meýdançalar → "indeks partlamasy".
DEBUG "hemişelik". Baýdaklar we TTL bilen açyň.
PII redaksiýasynyň ýoklugy.
Hemme zat üçin bir umumy "monolit" konweýer - domen boýunça segmentler has gowudyr.
19) Girizmek meýilnamasy (iterasiýalar)
1. MVP: agentler + bir paýlaýn (programmalar), esasy daşbordlar, PII redaksiýa.
2. Giňeltmek: tor/infra-loglar, SLO aladalary, ýollar bilen baglanyşyk.
3. FinOps: retenshn-matrisa, baha hasabaty, bellikleri/indeksleri optimizirlemek.
4. Köp tenant: giňişlikler, RBAC, sarp ediş billing.
5. Ygtybarlylygy: HA, disaster-drills, Legal Hold.
20) Önüme goýbermegiň çek-sanawy
- JSON formaty we ähli hyzmatlarda hökmany meýdanlar.
- PII-ni agentde gizlemek/ingest.
- Retenşna/ILM ýa-da bucket-lifecycle syýasaty.
- RBAC/boşluklar/tenantlar.
- SLO ingest/search & alerts.
- Kanar akymlary we ýük synagy.
- Bahanyň daşbordlary we hyzmatlaryň eýeleri boýunça hasabat.
- Runbooks: "ingest/gözleg haýal/toplar gyzyl düşse näme etmeli".
21) Mini-FAQ
Näme saýlamaly - ELK ýa-da Loki?