Кондукторлор: ELK жана Loki
1) Эмне үчүн жана качан: Логин максаттары
байкоо жана RCA: тездетүү Дебаг, Post-Мортем, SLO/SLA контролдоо.
Коопсуздук жана аудит: кирүү издери, аномалиялар, тергөө.
Бизнес-метрика: конверсия, төлөм флоу, PSP каталары, колдонуучулардын жүрүм-туруму.
Комплаенс: сактоо, PII жаап-жашыруу, Retenshn саясаты, Legal Hold.
Логдордун түрлөрү: тиркемелик, инфраструктуралык (kubelet, kube-proxy, CNI, ingress), тармактык, аудитордук, төлөм, веб-окуялар, Nginx/Envoy, DD.
2) Жогорку даражалуу архитектура
Вариант А: 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 үчүн арзан масштабдуу сактоо жана тез grep сыяктуу суроолор; Графанадагы метриктер/жолдор менен корреляция.
3) маалымат агымы жана иштетүү деңгээл
1. Чогултуу: Биткойн tail файлдар, journald, syslog, stdout контейнерлер, HTTP.
2. Байытуу: timestamp нормалдаштыруу, host/pod/namespace, env (prod/stage), release, commit SHA, trace/span id.
3. Парсинг: JSON → flat fields; grok/regex; Nginx/Envoy форматтары; төлөм схемалары (PSP ката коддору).
4. чыпкалоо/өзгөртүү: PII кесип (PAN, CVV, электрондук почта, даректер), сырлар, токендер.
5. Роутинг: tenant/service/лог-деңгээл боюнча; hot/warm/cold; S3/объект сактоо.
6. Сактоо жана retenshn: маалымат класстары боюнча TTL саясаты.
7. Access/Analytics/Alerty.
4) ELK: негизги чечимдер
4. 1 Logstash/Beats
Колдонуңуз Beats/Fluent Bit үчүн жеңил жыйноочу, Logstash - борбордук ETL (grok, dissect, mutate, geoip, translate).
Logstash Pool: ingest-ETL, security-ETL, payments-ETL - жүктөрдү изоляциялоо үчүн.
4. 2 Elasticsearch
Charding: ~ 20-50 GB боюнча багыт; "шард жарылуудан" качыңыз.
Индекс стратегиясы: 'logs- <tenant> - <service> -YYYY. MM. DD 'же маалымат агымдары; rollover көлөмү/убактысы боюнча.
- hot: SSD, 1-7 күн; warm: HDD, 7-30 күн; cold: көлөмдүк; frozen: жай кирүү менен минималдуу наркы.
- Mappings: катуу талааларды типтештирүү, чектөө 'fielddata' жана динамикалык талааларды түзүү.
- Кэш жана суроолор: keyword-талаа чыпкалар, агрегаттар - кылдат; жогорку жыштыктагы издөө үчүн pin-to-hot.
4. 3 Kibana
Мейкиндиктер (мейкиндиктер) көп тенанттуулук үчүн.
Сакталган searches, Lens/TSVB, threshold/metric-alert.
индекс-үлгүлөрү боюнча RBAC ('logs-tenant-').
5) Loki: негизги чечимдер
5. 1 этикеткалар модели
Лейблдер Loki "индекси" болуп саналат. Төмөнкү кардиналдуулукту колдонуңуз: 'cluster', 'namespace', 'app', 'level', 'env', 'tenant'.
Жогорку кардиналдуу талаалар (uid, request_id) - сапта; LogQL '=', '| json', '| regexp' аркылуу суроо-талапты алып салыңыз.
5. 2 компоненттери
Promtail: сбор stdout, files, journald; Parsers (JSON, regex, cri).
Distributor/Ingester/Querier/Query-frontend: ролдору боюнча масштабдоо; суроо-талаптарды кэш.
Object storage (S3/GCS/MinIO) узак мөөнөттүү чанк сактоо үчүн.
5. 3 LogQL ыкмалары
Тез grep: '{app = "payments", level =" error"} | = "declined"'
Парсинг JSON: `{app="api"} | json | code="5xx" | unwrap duration | avg()`
Метриктер менен корреляция: 'rate ({app = "nginx"} | = "200" [5m])'
6) Салыштыруу ELK vs Loki (кыскача)
Издөө/бириктирүү: ELK татаал толук текст жана фасет суроо үчүн күчтүү; Loki - grep-like, тез жана арзан.
Баасы: Loki көп учурда чоң көлөмдө арзан (объект сактоо + аз индекси).
Иштөө татаалдыгы: ELK индекстер/ILM, Javu-хипстер боюнча тартипти талап кылат; Loki - этикеткалар боюнча сабактар.
Метриктер/жолдор менен корреляция: Loki табигый Grafana/OTel айнек менен бириктирет; ELK да билет, бирок көбүнчө интеграция аркылуу.
7) Коопсуздук жана комплаенс
PII-түзөтүү четинде (shipper): PAN, электрондук почта, тел, даректери, токендерди жашыруу.
TLS in-transit, mTLS агенттер жана шиналар ортосунда.
RBAC: per-tenant индекстер/лейблдер; неймспейстерди/мейкиндиктерди изоляциялоо.
Secrets hygiene: сырсыз чөйрөнүн өзгөрмөлөрү, жеке жашыруун менеджерлер.
Legal Hold: сегменттерди/индекстерди тоңдуруу механизми; талаштуу мезгилдер үчүн write-once.
Алып салуу/retenshn: маалымат класстары боюнча TTL саясаты (prod/stateful/төлөмдөр/аудит).
Логторго кирүү үчүн аудит трейлерлери.
8) Ишенимдүүлүк жана кубаттуулугу
Буферизация жана backpressure: агенттердин жергиликтүү файлдары/дисктери; экспоненциалдык backoff менен retrains.
Idempotency: 'ingest _ id '/' log _ id' талаалары кайталанганда дубль болбош үчүн.
HA: ES-мастерлери/Loki Ингестерлери үчүн кеминде 3 Nodes; antiaffinity по AZ.
tenant/service боюнча квота жана rate-limits; "бороон-чапкындан" коргоо.
Логдордун деңгээлинин схемасы: 'ERROR' чектелген, 'DEBUG' динамикалык желектер аркылуу гана убактылуу.
9) аткаруу жана тюнинг
ELK:- JVM heap 50% RAM (бирок ≤ ~ 30-32 ГБ), page cache маанилүү.
- акылдуу rollover (20-50 ГБ/шард), 'refresh _ interval' ↑ ingest-индекстери үчүн.
- Logstash "оор" grok качуу; мүмкүн болсо, JSON-Логин булагы.
- Туура белги топтому - ылдамдыктын ачкычы.
- Big Чанк → арзан сактоо, бирок Ingester үчүн кымбат эс; баланс.
- Query-frontend + кэш (мем/Redis) үчүн кайталап суроо.
10) Логдор үчүн FinOps (наркы)
Талаалардын/лейблдердин кардиналдуулугун төмөндөтүү.
DEBUG Самплинг жана динамикалык "лог-кызылча".
Rotation: кыска Hot, объектиге узун cold.
Дедупликация жана консолидацияланган билдирүүлөр (batch).
Арзан сактоо класстарына сейрек колдонулган логдорду архивдөө.
Дашборд наркы: көлөмү/data-агымдар/лейблдер/индекстер/тенанттар.
11) Метриктер жана жолдор менен байланыш (Observability 3-жылы-1)
Ар бир журналда Trace-ID/Span-ID (API шлюздарында жана кызматтарында орто эсеп).
OpenTelemetry: бирдиктүү контекст; Tempo/Jaeger экспортерлор, Prometheus/Mimir метриктер, Loki/ELK Логи.
Fast Scripts: "Метрика боюнча алерт → тиешелүү Логи секирүү → трассага секирүү".
12) Көп-тенанттык жана изоляция
Namespace-негизделген изоляция (K8s labels), өзүнчө индекс-үлгүлөрү/' tenant 'лейблдери.
Алерттердин/дашборддордун/ретеншндун тенант боюнча бөлүнүшү.
Керектөө боюнча биллинг: ingest көлөмү, storage, суроолор.
13) Conveyor өзү үчүн мониторинг жана SLO
SLO ingest: «99. 9% логдор жеткирилди <X сек".
SLO издөө: "p95 суроолор <Y сек".
Техникалык көрсөткүчтөр: queue depth, dropped logs, reprocess rate, error rate parsers, ingester/ES nod.
14) типтүү жайгаштыруу схемалары
Managed: Elasticsearch Service/Opensearch, Grafana Cloud Loki.
Self-hosted K8s: StatefulSets үчүн ES/Loki, anti-affinity боюнча AZ, PersistentVolumes, объект сактоо.
Edge агенттери (региондордогу тиркемелер): жергиликтүү буфер + TLS канал боюнча борбордук 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) Алертинг жана дашборддор (шаблондор)
Ошибки API: `rate({app="api",level="error"}[5m]) > threshold` → PagerDuty/Telegram.
Nginx/Envoy боюнча 5xx Splash; Ингест агенттер; издөө latency өсүшү.
- Сервистер/тенанттар боюнча логдордун көлөмү.
- Жогорку ката үлгүлөрү (код/өзгөчөлүк/endpoint).
- Ретеншн/сактоо класстары боюнча баасы.
17) Сапатын текшерүү (лог-QA)
Логин келишимдери: JSON форматы, милдеттүү талаалар ('ts', 'level', 'service', 'env', 'trace _ id', 'msg').
CI Logs Linter: макулдашуу жок жогорку кардиналдуу менен жаңы талааларды тыюу.
Канарейка кызматтары: регрессияны эрте аныктоо үчүн эталондук логдорду түзүү.
18) Тез-тез каталар жана анти-үлгүлөрү
Жогорку кардиналдуу Loki лейблдери ('user _ id', 'request _ id') → эс жарылуу.
ES-жылы динамикалык талаалар эч кандай мэппинг → "индекстер жарылуу".
DEBUG "түбөлүккө". желектер жана TTL менен күйгүзүү.
PII редакциясынын жоктугу.
Бардык үчүн бир жалпы "монолиттүү" конвейер - домендердин мыкты сегменттери.
19) Ишке ашыруу планы (итерация)
1. MVP: агенттер + бир пайплайн (тиркемелер), базалык дашборддор, PII-чыгаруу.
2. Кеңейтүү: тармактык/инфра-логи, SLO алерттери, жолдор менен кореляция.
3. FinOps: retenshn-матрица, нарк отчету, этикеткаларды/индекстерди оптималдаштыруу.
4. Multitenant: мейкиндик, RBAC, керектөө боюнча биллинг.
5. Ишенимдүүлүк: HA, disaster-drills, Legal Hold.
20) Чек-тизмесин ишке киргизүү
- JSON форматы жана бардык кызматтарда милдеттүү талаалар.
- Агент/ingest боюнча PII жашыруу.
- Retenshn/ILM же bucket-lifecycle саясаты.
- RBAC/мейкиндик/тенанттар.
- SLO ingest/издөө жана алерталар.
- Канар жана сыноо жүгүрүү.
- Дашборд наркы жана кызмат ээлери боюнча отчет.
- Runbooks: "ingest түшүп/жай издөө/кызыл шарлар болсо эмне кылуу керек".
21) Mini-FAQ
Эмне тандоо керек - ELK же Loki?