Қубурҳои сабти ном: ELK ва Loki
1) Чаро ва кай: сабти ҳадафҳо
Мушоҳида ва RCA: Суръатбахшии Debag, пас аз марг, назорати SLO/SLA.
Амният ва аудит: нишонаҳои дастрасӣ, аномалия, тафтишот.
Нишондиҳандаҳои тиҷорат: табдили, ҷараёни пардохт, хатогиҳои PSP, рафтори корбар.
Мувофиқат: нигоҳдорӣ, ниқоби PII, сиёсати нигоҳдорӣ, нигоҳдории ҳуқуқӣ.
Намудҳои гузоришҳо: барнома, инфрасохтор (кубелет, кубе-прокси, CNI, ingress), шабака, аудит, пардохт, чорабиниҳои веб, Nginx/Envoy, пойгоҳи додаҳо.
2) Меъмории сатҳи баланд
Варианти A: ELK
Истеҳсолкунандагон → Logshipper (Filebeat/Fluent Bit/Vector) → Logstash/Beats intup → Elasticsearch → Kibana/Alerting
Варианти B: Loki
Истеҳсолкунандагон → Promtail/Fluent Bit → паҳнкунандаи Loki/ingester/querier → Grafana/Alerting
Гибрид
ELK барои ҷустуҷӯи пурраи матн/паҳлӯ, Loki барои нигаҳдории миқёси арзон ва дархостҳои ба монанди графикӣ зуд; робита бо ченакҳо/пайҳо дар Графана.
3) Сатҳи ҷараён ва коркарди маълумот
1. Маҷмӯа: файлҳои думи байт, маҷалла, syslog, контейнерҳои stdout, HTTP.
2. Ғанисозӣ: нормализатсияи вақт, мизбон/pod/фазои ном, env (prod/stage), озодкунӣ, содир кардани SHA, пайгирӣ/фосила.
3. Коркард: JSON → майдонҳои ҳамвор; grok/regex; Форматҳои Nginx/Envoy; схемаҳои пардохт (рамзҳои хатогии PSP).
4. Филтр/таҳрир: буридани PII (PAN, CVV, почтаи электронӣ, суроғаҳо), асрори, токенҳо.
5. Масир: аз рӯи сатҳи иҷорагир/хидмат/журнал; гарм/гарм/хунук; ба S3/object нигаҳдорӣ.
6. Нигоҳдорӣ ва нигоҳдорӣ: Сиёсати TTL аз ҷониби синфи маълумот.
7. Дастрасӣ/Таҳлил/Огоҳиҳо.
4) ELK: қарорҳои асосӣ
4. 1 Logstash/Beats
Beats/Fluent Bit -ро дар гиреҳҳо барои интихобкунандаи осон истифода баред, Logstash ҳамчун ETL марказӣ (grok, dissect, mutate, geoip, translate).
Ҳавзҳои Logstash: inest-ETL, security-ETL, пардохтҳо-ETL - барои ҷудо кардани сарборӣ.
4. 2 Elasticsearch
Sharding: тамаркуз ба ~ 20-50 ГБ барои як шард; аз "таркиши шард" канорагирӣ кунед.
Стратегияи индексатсия: 'logs- <иҷорагир> - <service> -YYYY. ММ. ҷараёнҳои DD 'ё маълумот; ғелонда аз рӯи андоза/вақт.
- гарм: SSD, 1-7 рӯз; гарм: HDD, 7-30 рӯз; хунук: ҳаҷмӣ; яхкардашуда: арзиши ҳадди аққал бо дастрасии сусттар.
- Харитаҳо - Майдонҳои навъи сахт, майдонҳои майдонро маҳдуд мекунанд ва майдонҳои динамикӣ эҷод мекунанд.
- Кэш ва дархостҳо: филтрҳо аз рӯи майдонҳои калимаҳои калидӣ, агрегатҳо - дақиқ; pin-to-hot барои ҷустуҷӯи басомади баланд.
4. 3 Кибана
Ҷойҳо барои бисёрҳуҷрагӣ.
Ҷустуҷӯҳои захирашуда, линзаҳо/TSVB, ченакҳои ҳадди/ҳушдор.
RBAC аз рӯи индексатсия ('logs-tenant-').
5) Локи: қарорҳои асосӣ
5. 1 Модели нишона
Тамғакоғазҳо индекси Loki мебошанд. "Кардинализатсияи пастро истифода баред: 'кластер', 'фазои ном', 'барнома', 'сатҳ', 'env', 'иҷорагир'.
Майдонҳои дорои кардиналии баланд (уид, request_id) - дар як саф; ҳангоми пурсидани '| =', '| json', '| regexp' -ро пайдо кунед.
5. 2 ҷузъҳо
Promtail: sbor stdout, файлҳо, журналальд; parsers (JSON, regex, cri).
Дистрибютор/Ингестер/Querier/Query-frontend: миқёс аз рӯи нақш; кэшкунии дархост.
Нигоҳдории объект (S3/GCS/MinIO) барои нигаҳдории дарозмуддати гузоришҳои порча.
5. 3 Техникаи Log-QL
Grep зуд: '{app = "пардохтҳо", сатҳи =" хато"} | = "рад"
Парсинг JSON: ' {app =" api"} | json | code =" 5xx" | давомнокии пӯшида | avg ()'
Таносуб бо ченакҳо: 'меъёр ({app = "nginx"} | = "200" [5m])'
6) Муқоисаи ELK vs Loki (мухтасар)
Ҷустуҷӯ/ҷамъбаст: ELK барои дархостҳои мураккаби матнӣ ва амудӣ қавитар аст; Loki - мисли grep, зуд ва арзон.
Арзиш: Loki аксар вақт дар ҳаҷми калонтар арзонтар аст (нигоҳдории объект + индекси хурдтар).
Мураккабии амалиётӣ: ELK интизомро дар индексатсияҳо/ILM, Javu-hips талаб мекунад; Loki - фанҳои тамғакоғазҳо.
Таносуб бо ченакҳо/нишонаҳо: Loki табиатан бо стеки Grafana/OTel ҳамгиро мешавад; ELK инчунин медонад, ки чӣ тавр, аммо бештар тавассути ҳамгироӣ.
7) Бехатарӣ ва риояи
Нашри PII дар канор (интиқолдиҳанда): ниқоби PAN, почтаи электронӣ, телефон, суроғаҳо, нишонаҳо.
TLS in-transit, MTLS байни агентҳо ва автобусҳо.
RBAC: индексатсияҳо/тамғакоғазҳо барои ҳар як иҷорагир; ҷудокунии neimspaces/фазо.
Асрори гигиена: тағйирёбандаҳои муҳити зист бидуни асрор, менеҷерони махфии инфиродӣ.
Нигоҳдории ҳуқуқӣ: механизми яхкунонии сегмент/индекс; як маротиба барои давраҳои баҳснок нависед.
Нест кардан/нигоҳ доштан: Сиёсати TTL аз рӯи синфи маълумот (prod/staturefly/пардохтҳо/аудит).
Роҳҳои аудити дастрасӣ ба журнал.
8) Эътимоднокӣ ва интиқол
Буферинг ва backpressure: файлҳо/дискҳои маҳаллӣ барои агентҳо; ақибнишинӣ бо ақибнишинии экспоненсиалӣ.
Idempotency: 'infest _ id '/' log _ id' fields барои пешгирӣ кардани такрори ҳангоми нусхабардорӣ.
HA: ҳадди аққал 3 гиреҳ барои устоҳо/воридкунандагони Loki ES; антиқа po AZ.
Квотаҳо ва меъёрҳо аз ҷониби иҷорагир/хизматрасонӣ; муҳофизат аз буридани "тӯфонҳо".
Нақшаи сатҳи сабти ном: 'ХАТО' маҳдуд аст, 'DEBUG' танҳо муваққатан тавассути парчамҳои динамикӣ.
9) Иҷро ва танзими
ELK:- JVM 50% хотираи оперативӣ (аммо 30-32 ГБ дар як гиреҳ), кэши саҳифа муҳим аст.
- Rollover Smart (20-50 ГБ/шард), 'refresh _ interval' → барои ворид кардани индексатсияҳо.
- Дар Logstash, аз "вазнин" канорагирӣ кунед; агар имконпазир бошад, JSON ба манбаъ ворид мешавад.
- Маҷмӯи дурусти нишона калиди суръат аст.
- Қисмҳои калон → нигоҳдории арзонтар, аммо хотираи гаронтар дар ingester; мувозинат.
- Дархост-frontend + кэш (meme/Redis) барои дархостҳои такрорӣ.
10) Финҳо барои гузоришҳо (арзиш)
Кам кардани кардинализатсия дар майдонҳо/тамғакоғазҳо.
Интихоби DEBUG ва "калидҳои сабти динамикӣ".
Гардиш: кӯтоҳ гарм, хунук дароз ба объект.
Deduplication ва паёмҳои муттаҳидшуда (партия).
Бойгонӣ гузоришҳоро ба синфҳои арзон кам истифода мекард.
Панели арзиш: ҷараёни ҳаҷм/маълумот/тамғакоғазҳо/индексатсияҳо/иҷорагирон.
11) Риояи 3-дар-1
Trace-ID/Span-ID ба ҳар як журнал (миёнаравӣ дар дарвозаҳо ва хидматҳои API).
Open-Telemetry: контексти ягона; содиркунандагон ба Tempo/Jaeger, ченакҳо ба Prometheus/Mimir, гузоришҳо ба Loki/ELK.
Сенарияҳои зуд: "ҳушдордиҳӣ бо метрикӣ → ба гузоришҳои мувофиқ ворид шавед → ба суруд ворид шавед".
12) Бисёрҳуҷрагӣ ва ҷудоӣ
Ҷудокунии ба фазо асосёфта (K8s тамғакоғазҳо), намунаҳои алоҳидаи индексатсия/тамғакоғазҳо 'иҷорагир'.
Ҷудокунии огоҳиҳо/панелҳои панелӣ/ретенщна аз ҷониби иҷорагир.
Ҳисобкунии истеъмол: ҳаҷми воридкунӣ, нигоҳдорӣ, дархостҳо.
13) Мониторинг ва SLO барои худи конвейер
SLO inest: "99. 9% гузоришҳо Ҷустуҷӯи SLO: "p95 дархост <Y sec". 14) Схемаҳои муқаррарии ҷойгиркунӣ Идора карда мешавад: Хадамоти Elasticsearch/Opensearch, Grafana Cloud Loki. 15) Намунаҳои конфигуратсия 15. 1 Promtail (K8s, CRI JSON) 15. 2 Logstash (ворид ва ниқоб) 16) Огоҳӣ ва панели панелҳо (қолабҳо) Oshibki API: 'rate ({app = "api ", level =" хатогӣ"} [5m])> остонаи '→ Pager .Duty/Telegram. 17) Санҷиши сифат (log-QA) Шартномаҳои сабти ном: формати JSON, майдонҳои зарурӣ ('ts', 'сатҳ', 'хидмат', 'env', 'trace _ id', 'msg'). 18) Хатогиҳои зуд-зуд ва зидди намунаҳо Тамғакоғазҳои Loki бо кардиналии баланд ('user _ id', 'request _ id') → таркиши хотира. 19) Нақшаи амалисозӣ (такрорӣ) 1. MVP: агентҳо + як лӯла (барномаҳо), панелҳои асосӣ, нашри PII. 20) Рӯйхати санҷиши оғоз ба истеҳсолот 21) Мини-FAQ Чиро интихоб кардан лозим аст - ELK ё Loki?
Андозагирии техникӣ: чуқурии навбат, гузоришҳои партофташуда, суръати коркард, суръати хатои таҳлилгар, нокомии гиреҳ/ES.
Худмаблағгузории K8s: Statureful-Sets for ES/Loki, зиддият ба AZ, Persistent-Volumes, нигаҳдории объект.
Агентҳои канорӣ (барномаҳо дар минтақаҳо): буфери маҳаллӣ + канали TLS ба даромадгоҳи марказӣ.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: noderuby 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}"
}
}
5xx лаппиш дар Nginx/Фиристанда; тарки агентҳо; афзоиши ҷустуҷӯи дермонӣ.
Сабтҳои Linter дар CI: манъи майдонҳои нав бо кардинали баланд бидуни мувофиқа.
Хадамоти канарӣ: тавлиди гузоришҳои истинод барои ташхиси барвақти регрессия.
Майдонҳои динамикӣ дар ES бидуни харитасозӣ → "таркиши индексатсия".
DEBUG дар фурӯш "то абад. "Бо парчамҳо ва бо TTL фурӯзон шавед.
Набудани таҷдиди PII.
Як лӯлаи маъмулии "монолитӣ" барои ҳама чиз - сегментҳои беҳтар аз рӯи домен.
2. Васеъшавӣ: шабака/инфра-гузоришҳо, огоҳиҳои SLO, таносуб бо роҳҳо.
3. Финҳо: матритсаи нигоҳдорӣ, ҳисоботи хароҷот, оптимизатсияи тамғакоғазҳо/индексатсия.
4. Бисёр иҷорагир: ҷойҳо, RBAC, биллинги истеъмолӣ.
5. Эътимоднокӣ: HA, машқҳои офатҳои табиӣ, нигоҳдории ҳуқуқӣ.