GH GambleHub

Լոգարանների փոխակրիչները ՝ ELK և Loki

1) Ինչո՞ ւ և երբ ՝ տրամաբանության նպատակները

Դիտարկումը և RCA-ն 'դեբագի արագացումը, փոստի մորտը, SLO/SLA վերահսկողությունը։

Անվտանգությունն ու աուդիտը 'մուտքի, անոմալիայի, հետազոտության հետքեր։

Բիզնես մետրիկները 'փոխարկումներ, հիբրիդային ֆլոու, PBS սխալներ, օգտագործողների վարքագիծը։

Կոմպլենսը 'պահեստավորում, դիմակավորում PII, ռեթենշնի քաղաքականություն, Legal Hold։

Լոգարանների տեսակները 'պլաստիկ, ենթակառուցվածքային (kubelet, kube-proxy, CNI, ingress), ցանցային, երկրորդային, վեբ իրադարձություններ, Nginx/Envoy, BD։

2) Բարձր մակարդակի ճարտարապետություններ

A տարբերակը 'ELK

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

B տարբերակը ՝ Loki

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

Հիբրիդ

ELK-ը փնտրելու ամբողջական տեքստ/ֆասետներ, Loki-ը էժան մասշտաբային պահեստավորման և արագ grand-նման հարցումների համար։ կորոլիկ/հետքերով Grafana-ում։

3) Տվյալների հոսքը և վերամշակման մակարդակը

1. Հավաքումը 'կրկնվող ֆայլեր, journald, www.slog, stdout բեռնարկղեր, HTTP։

2. Հարստացում ՝ timestamp նորմալացում, host/pod/namespace, env (105/stage), rele.ru, commit SHA, trace/windid։

3. Պարսինգը 'JSON no flat fields; grok/regex; Nginx/Envoy 2019; հիբրիդային սխեմաները (PSA սխալների բարձրացում)։

4. Ֆիլտրը/խմբագրությունը 'կտրել PII (PAN, CVV, e-mail, 108), գաղտնիքները, հոսանքները։

5. Ռոուտինգը 'ten.ru/71/log մակարդակում; hot/warm/cold; S3/օբյեկտի պահեստ։

6. Պահպանումը և վերականգնումը 'TTL քաղաքականությունը տվյալների դասարաններում։

7. Մուտք/Alerta/Alerta.

4) ELK 'հիմնական լուծումները

4. 1 Logstash/Beats

Օգտագործեք Beats/Fluent Bit-ը թեթև հավաքածուի համար, Logstash-ը որպես կենտրոնական ETL (spork, sport, mutate, geoip, translate)։

Puls Logstash: ingest-ETL, 71-ETL, payments-ETL - բեռների մեկուսացման համար։

4. 2 Elasticsearch

Շարդինգը 'կենտրոնացեք 20-50 ԳԲ-ի վրա գնդակի վրա։ խուսափեք «գնդակի պայթյունից»։

Ինդեքսների ռազմավարությունը ' - -YYYY։ MM. DD 'կամ ամսաթվերը; rollover չափսերով/ժամանակ։

ILM (hot/warm/cold/frozen):
  • hot: SSD, 1-7 օր; warm: HDD, 7-30 օր; cold: ծավալային; frozen 'նվազագույն արժեքը ավելի դանդաղ հասանելիությամբ։
  • Mappings 'կոշտ տիպի դաշտեր, սահմանափակեք «fielddata» և ստեղծեք դինամիկ դաշտեր։
  • Քեշը և հարցումները 'keyword-220 մ ֆիլտրեր, ագրեգատները' կոկիկ։ pin-to-hot բարձր հաճախականության որոնման համար։

4. 3 Kibana

Տարածքներ (Spaces) մուլտֆիլմի տենանտիզմի համար։

Saved searches, Lens/TSVB, threshold/metric-ալերտներ։

RBAC ինդեքսը («logs-tenanta»)։

5) Loki 'հիմնական լուծումները

5. 1 Պիտակների մոդել

Լեյբլները Loki-ի «ինդեքսն» են։ Օգտագործեք ցածր կարդինալություն '«cluster», «namespace», «app», «level», «env», «tenae»։

Բարձր կարդինալությամբ դաշտերը (uid, request _ id) - տողում։ խնդրեք LoGQL '105 = "," www.json "," www.regexp "։

5. 2 Բաղադրիչներ

Promtail: сбор stdout, files, journald; Պարսերներ (JSON, regex, cri)։

Distributor/Ingester/Querier/Query-frontend: մեծացում դերերով; հարցումների հավաքագրումը։

Object storage (S3/GCS/MinIO) երկարատև պահեստավորման համար։

5. 3 LogQL ընդունելություններ

Արագ grep: <

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

Փոխարկումը մետրերի հետ '«rate (

6) ELK vs Loki (կարճ)

Որոնումը/ագրեգացիան 'ELK-ն ավելի ուժեղ է բարդ ամբողջական և ճակատային հարցումների համար։ Loki-ը grep-like է, արագ և էժան։

Արժեքը ՝ Loki-ը հաճախ ավելի էժան է մեծ ծավալի վրա (օբյեկտի պահեստ + փոքր ինդեքսը)։

Գործողության բարդությունը 'ELK-ը պահանջում է ինդեքսներ/ILM, Ջավու-հիպամ։ Loki-ը պիտակների կարգապահություններ են։

Փոխակերպումը մետրիկների/հետքերի հետ. Loki-ը բնականաբար ինտեգրվում է Grafana/OTel ապակու հետ։ ELK-ը նույնպես գիտի, բայց ավելի հաճախ 'միգրանտների միջոցով։

7) Անվտանգություն և ընկերակցություն

PII խմբագրությունը եզրին (shipper) 'դիմակավորված PAN, e-mail, հեռախոսը, կոդավորումը, հոսանքները։

TMS-transit, mTRC գործակալների և անվադողերի միջև։

RBAC: per-tenae ինդեքսներ/պիտակներ; նեյրոսպեյսների/տարածությունների մեկուսացում։

Secrets hygiene: Windows առանց գաղտնիքների, առանձին գաղտնի ղեկավարներ։

Legal Hold 'հատվածների/ինդեքսների սառեցման մեխանիզմ; write-once հակասական ժամանակահատվածների համար։

Հեռացում/retenshn: TTL քաղաքականությունները տվյալների դասարաններում (108/stateful/վճարումներ/աուդիտ)։

Audit-treils մուտք։

8) Մոսկվան և կարողությունը

Բուֆերիզացիա և backpressure 'տեղական ֆայլեր/սկավառակներ գործակալների մոտ; trai էքսպոնենցիալ backoff.

Idempotency: «ingest _ id »/« log _ id» դաշտերը կրկնապատկելու համար։

HA 'առնվազն 3 նոդա ES-վարպետների/Loki-ի ինգեստերների համար։ antiaffinity по AZ.

Քվոտաները և rate-limits tenae/2019; պաշտպանություն «փոթորիկներից» լոգարիթմից։

Լոգարանների մակարդակի սխեման '«ERROR» սահմանափակ է, «DEBUG» միայն ժամանակավորապես դինամիկ դրոշների միջոցով։

9) Արտադրողականությունը և թյունինգը

ELK:
  • JVM heap 50 տոկոսը RAM (սակայն 30-32 GB nodu), page cache կարևոր է։
  • Խելացի rollover (20-50 GB/shard), «refresh _ interval» -ը ingest ինդեքսների համար։
  • Logstash-ում խուսափեք «ծանր» գլյուկից։ հնարավորության դեպքում JSON տրամաբանությունը աղբյուրի վրա։
Loki:
  • Ճիշտ պիտակը արագության բանալին է։
  • Մեծ չանկերը ավելի էժան են պահպանվում, բայց ավելի թանկ է հիշողությունը ingester-ում։ հավասարակշռեք։
  • Query-frontend + kash (mem/Redis) կրկնակի հարցումների համար։

10) Ֆինոպս լոգարանների համար (արժեքը)

Դաշտերի/պիտակների կարդինալության նվազումը։

Sampling DEBUG-ը և դինամիկ «log-swichi» -ը։

Ռոտացիան 'կարճ hot, երկար կոլդ օբյեկտի մեջ։

Դեդուպլիկացիան և համախմբված հաղորդագրությունները (batch)։

Հազվադեպ օգտագործվող լոգարանների արխիվացումը պահեստային դասարաններում։

Արժեքի Դաշբորդ 'ծավալ/ամսաթվերը/պիտակները/ինդեքսները/տենանտները։

11) Հարաբերակցություն մետրիկների և հետքերի հետ (Observability 3-v-1)

Trace-ID/International-ID յուրաքանչյուր լոգում (middleware API դռների և ծառայությունների վրա)։

OpenTelemetry: Մեկ ենթատեքստ; Tempo/Jaeger, Prometheus/Mimir-ում, Loki/ELK-ում։

Արագ սցենարներ. <

12) Multi-tenanty-ը և մեկուսացումը

Namespace-based մեկուսացում (K8s labels), առանձին պաթերտներ/պիտակներ 'tenae'։

Alerts/dashbords/retenshen բաժանումը տենանտով։

Billing 'ingest, storage, հարցումներ։

13) Մոսկվա և SLO փոխակրիչի համար

SLO ingest: «99. 9 տոկոսը առաքվել է

SLO որոնումներ ՝ «p95 հարցումներ

Տեխնոլոգիական մետրերը ՝ queue depth, dropped logs, reprocess rate, error rate parser, ingester/ES nood։

14) Տիպային սխեմաներ

Managed: Elasticsearch Service/Opensearch, Grafana Cloud Loki.

Winf-hosted K8s: StatefullSets-ը ES/Loki-ի համար, AZ-affinity-ը, PersistentVolumes-ը, օբյեկտի պահեստ։

Edge-2019 (ծրագրեր տարածաշրջաններում) 'տեղական բուֆեր + TSA ալիքը կենտրոնական ingest-ի վրա։

15) Միգրացիայի օրինակներ

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 և դիմակավորում)

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 և dashbords (ձևանմուշներ)

Ошибки API: `rate({app="api",level="error"}[5m]) > threshold` → PagerDuty/Telegram.

5xx-ի աճը Nginx/Envoy-ում։ dw.ingest գործակալների մոտ; latency որոնման աճը։

Դաշբորդները

Ծառայությունների/տենանտների լոգարանների ծավալը։

Լավագույն սխալները (կոդ/բացառություն/endpoint)։

Ռենտենի/դասարանների արժեքը։

17) Որակի ստուգում (լոգ-QA)

Լոգանքի պայմանագրերը 'JSON ձևաչափը, պարտադիր դաշտերը («ts», «level», «dive», «env», «trace _ id», «www.g»)։

Linter logs CI-ում 'նոր դաշտերի արգելումը բարձր կարդինալությամբ առանց համաձայնության։

Կանարյան ծառայությունները 'ստանդարտ լոգարանների արտադրություն ռեգրեսիայի վաղ հայտնաբերման համար։

18) Հաճախակի սխալներ և հակատիպեր

Loki-ի պիտակները բարձր կարդինալությամբ («user _ id», «request _ id») ցույց են տալիս հիշողության պայթյունը։

ES-ում դինամիկ դաշտերը առանց մեպինգների բացատրվում են «ինդեքսների պայթյուն»։

DEBUG-ը «ընդմիշտ» վաճառքում։ Միացրեք դրոշներին և TTL-ի հետ։

PII-2019-ի բացակայությունը։

Մեկ ընդհանուր «մոնոլիտ» փոխակրիչը ամենալավ հատվածն է։

19) Իրականացման պլանը (իտերացիաներ)

1. MVP: 108 + մեկ pline (ծրագրեր), հիմնական dashbords, PII խմբագրություն։

2. Ընդլայնումը 'ցանցային/infra-loga, SLO-ի ալտերտերը, ուղիների կորլացիան։

3. Ֆինոպս 'ռենտեն մատրիցա, արժեքի հաշվետվություն, պիտակների/ինդեքսների օպտիմիզացում։

4. Multi-tenant: տարածք, RBAC, սպառման բիլինգ։

5. Մոսկվա: HA, wwww.aster-medills, Legal Hold.

20) Չեկի Թիթեռի թուղթը։

  • JSON ձևաչափը և պարտադիր դաշտերը բոլոր ծառայություններում։
  • PII դիմակավորում գործակալությունում/ingest.
  • Retenshn/ILM կամ bucket-lifecycle։
  • RBAC/տարածք/տենանտներ։
  • SLO ingest/որոնումներ և ալտերտեր։
  • Կանարյան լույսեր և թեստային ծանրաբեռնվածություն։
  • Արժեքի և ծառայությունների սեփականատերերի զեկույցը։
  • Runbooks: «Ի՞ նչ անել, եթե ingest-ը ընկավ/փնտրել դանդաղ/գնդակներ կարմիր»։

21) Mini-FAQ

Ի՞ նչ ընտրել 'ELK կամ Loki։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։