Анбори мушоҳида
1) Чаро ба шумо стеки мушоҳида лозим аст
RCA-и босуръат ва кам кардани MTTR: аз аломат то ба дақиқа.
Идоракунии SLO: андозагирии хатогиҳо/дермонӣ, ҳушдор бо буҷаи хато.
Назорати озодкунӣ: ҳисобҳои канарӣ, баргардонидани худкор аз рӯи ченакҳо.
Амният ва аудит: Роҳҳои дастрасӣ, аномалияҳо, нигоҳдории ҳуқуқӣ.
Шаффофияти FIN: арзиши нигаҳдорӣ/дархостҳо, арзиши як SLO.
Методология: Сигналҳои тиллоӣ (ниҳонӣ/трафик/хатогиҳо/пуррагӣ), RED, USE.
2) Меъмории асосии стек
Ҷузъҳо аз рӯи қабат
Ҷамъоварӣ/агентҳо: Содиркунандагон, Promtail/Fluent Bit, OTel SDK/Auto-Instr, Blackbox-probes.
Shina/inest: Prometheus remote_write → Mimir/Thanos, дистрибюторҳо/воридкунандагони Loki, воридкунандагони Tempo/Jaeger.
Анборҳо: объекти S3/GCS/MinIO (сарди дароз), SSD (сатрҳои гарм).
Дархостҳо/визуализатсия: Графана (панелҳо, виджетҳои SLO), Кибана (агар ELK).
Идоракунӣ: Огоҳиҳои Alertmanager/Graphana, каталоги хидматҳо, RBAC, менеҷери махфӣ.
Намунаҳои густариш
Идорашаванда (хидматҳои абрии Grafana Cloud/) - аз рӯи ҳаҷм зуд ва гаронтар.
Худмаблағгузорӣ дар K8s - назорати пурра, ба амалиёт ва FIN ниёз дорад.
3) Стандартҳои маълумот: "нақшаи ягонаи мушоҳида"
3. 1 Метрика (Прометей/Метрикаи кушод)
Тамғакоғазҳои талабшаванда: 'env', 'минтақа', 'кластер', 'фазои ном', 'хидмат', 'версия', 'иҷорагир' (агар иҷорагир бошад), 'нуқтаи ниҳоӣ'.
Номгузорӣ: 'snake _ case', суффиксҳои '_ total', '_ seconds', '_ bytes'.
Диаграммаҳои сатил: 'сатил' -и собит (SLO-нигаронидашуда).
Кардинал: 'корбар _ ид', 'дархост _ ид' -ро дар тамғакоғазҳо дохил накунед.
3. 2 Гузоришҳо
Формат: JSON; майдонҳои зарурӣ 'ts', 'сатҳ', 'хидмат', 'env', 'trace _ id', 'span _ id', 'msg'.
PII: ниқоб дар агент (PAN, токенҳо, почтаи электронӣ ва ғайра).
Тамғакоғазҳои Loki: танҳо кардинали паст ('барнома', 'фазои ном', 'сатҳ', 'иҷорагир').
3. 3 Роҳҳо
Семантикаи OT bel: 'хидмат. ном ',' ҷойгиркунӣ. муҳит ',' db. система ',' http. '.
Интихоб: Роҳҳои мақсадноки p99 'ҳамеша _ on '/думи-интихоб, боқимонда' волидайн/таносуб 'мебошанд.
Ҷобаҷогузории ID: flick 'trace _ id/span _ id' ба гузоришҳо ва ченакҳо (тамғакоғазҳо/майдонҳо).
4) Таносуби M-L-T (Metrics/Logs/Traces)
Аз графикаи ҳушдор (метрикӣ) → гузоришҳои филтршуда аз ҷониби 'trace _ id' → пайгирии мушаххас.
Аз пайгирӣ (фосилаи суст) дархост барои ченакҳои як пушти мушаххас дар фосилаи фосила § аст.
Тугмаҳои пармакунӣ дар панелҳо: "ба гузоришҳо" ва "пайгирӣ" бо ивазкунии тағйирёбанда ('$ env', '$ service', '$ trace _ id').
5) Коллектори Open-Telemetry: Лӯлаи истинод
yaml receivers:
otlp:
protocols: { http: {}, grpc: {} }
prometheus:
config:
scrape_configs:
- job_name: kube-nodes static_configs: [{ targets: ['kubelet:9100'] }]
processors:
batch: {}
memory_limiter: { check_interval: 1s, limit_mib: 512 }
attributes:
actions:
- key: deployment. environment value: ${ENV}
action: insert tail_sampling:
decision_wait: 5s policies:
- name: errors type: status_code status_code: { status_codes: [ERROR] }
- name: important-routes type: string_attribute string_attribute: { key: http. target, values: ["/payments","/login"] }
- name: probabilistic type: probabilistic probabilistic: { sampling_percentage: 10 }
exporters:
otlphttp/mimir: { endpoint: "https://mimir/api/v1/push" }
otlphttp/tempo: { endpoint: "https://tempo/api/traces" }
loki:
endpoint: https://loki/loki/api/v1/push labels:
attributes:
env: "deployment. environment"
service: "service. name"
service:
pipelines:
metrics: { receivers: [prometheus, otlp], processors: [memory_limiter, batch], exporters: [otlphttp/mimir] }
logs: { receivers: [otlp], processors: [batch], exporters: [loki] }
traces: { receivers: [otlp], processors: [memory_limiter, attributes, tail_sampling, batch], exporters: [otlphttp/tempo] }
6) Огоҳӣ: SLO ва бисёрқабата
Идея: alertim на дар сатҳи "CPU> 80%", балки дар бораи истеъмоли буҷети хатогӣ.
Қолибҳои Prom- QL:promql
5-minute error rate err_ratio_5m =
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m]))
Quick burn (1m window)
(err_ratio_1m / (1 - SLO)) > 14. 4
Slow burn (30m)
(err_ratio_30m / (1 - SLO)) > 2
Таъхир (гистограмма):
promql latency_p95 =
histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))
7) Панели панелҳо: сохтори папка
00_Overview - платформа: SLO, p95, 5xx%, қобилият, ҳодисаҳои фаъол.
10_Services - аз рӯи хидматҳо: RPS, p95/p99, хатогиҳо, релизҳо (эзоҳҳо).
20_Infra - K8s/nodes/story/network ва ғайра, контроллерҳо.
30_DB/Queues - Postgre .SQL/Redis/Kafka/RabbIT MQ.
40_Edge/DNS/CDN/WAF - ingress, LB, қоидаҳои WAF.
50_Synthetic - скриптҳои бефосила ва бефоида.
60_Cost/FinOps - Захира, дархост, гарм/хунук, дурнамо.
Ҳар як панел: тавсиф, воҳидҳо, соҳиб, истиноди дафтар, пармакунӣ.
8) Сабтҳо: Семинари Log-QL
logql
API errors
{app="api", level="error"} = "Exception"
Nginx 5xx in 5 minutes
{app="nginx"} json status=~"5.." count_over_time([5m])
Extract Fields
{app="payments"} json code!="" unwrap duration avg()
9) Трекҳо: Trace QL ва ҳиллаҳо
Фосилаҳои сусттаринро ёбед:
{ service. name = "api" } duration > 500ms
Сэндвичи SQL-ро дар дархости суст:
{ name = "HTTP GET /order" } child. span. name = "SELECT" & child. duration > 50ms
10) Синтетика ва вақти корӣ
Содиркунандаи Blackbox: намунаҳои HTTP/TCP/TLS/DNS аз 3 минтақа/ASN.
Сарлавҳа: скриптҳои ба нақша гирифташудаи вуруд/амонат.
Огоҳии кворум: агар дар минтақа ≥ 2 ба нокомӣ дучор шавад.
Саҳифаи ҳолат: навсозиҳои худкор + шарҳҳои дастӣ.
11) Нигоҳдорӣ ва нигоҳдорӣ
Нишондиҳандаҳо: гарм 7-30 рӯз (қатори тез), қоидаҳои пасткунӣ/сабт, хунук - нигоҳдории ашё (моҳҳо).
Гузоришҳо: 3-7 рӯз гарм, баъд бо индекс (мағозаи Loki chunk/ELK ILM).
Нишонаҳо: 3-7 рӯз 'ҳамеша _ on' + нигоҳдории дарозмуддат барои намунаҳо (интихобшуда/радшуда).
- Андозаи вақт ва вақт; барои дархостҳои буҷа (квотаҳо/маҳдудиятҳо).
- Сиёсати ҷудогона барои маълумот/марҳила ва амният.
12) Иҷораи бисёр ва дастрасӣ
Ҷудо аз ҷониби 'иҷорагир '/' фазои ном '/Фосилаҳо, намунаҳо ва қарорҳои индексатсионӣ.
Захираҳои теги барои биллинг: 'иҷорагир', 'хидмат', 'гурӯҳ'.
Панели панелҳо/огоҳиҳо - дар ҷойҳои гурӯҳҳои мушаххас.
13) Бехатарӣ ва риояи
TLS/MTLS аз агентҳо ба пуштибонӣ, HMAC барои саломатии хусусӣ.
RBAC барои хондан/навиштан, санҷиши ҳама дархостҳо ва огоҳиҳо.
Нашри PII дар канор; манъ кардани асрори гузоришҳо; DSAR/Нигоҳдории ҳуқуқӣ.
Ҷудокунӣ: кластерҳои алоҳида/nymspaces барои доменҳои ҳассос.
14) Финҳо: арзиши мушоҳида
Мо кардинализатсияи тамғакоғазҳо ва мантиқро дар ворид кардан кам мекунем (ва на дар дархостҳо).
Интихоби интихоб + ҳадаф ҳамеша барои роҳҳои муҳим.
Қоидаҳои Downsampling/сабти барои агрегатҳои вазнин.
Бойгонӣ дастрасии нодир ба объекти хунук.
Метрикӣ: 'storage _ cost _ gb _ day', 'query _ cost _ hour', 'cost _ per _ rps', 'cost _ per _ 9'.
15) Санҷишҳои CI/CD ва мушоҳида
Ҷойгиркунии ченакҳо/гузоришҳо дар CI: манъи "таркиш" -и кардинализм, санҷиши гистограмма/воҳидҳо.
Санҷишҳои шартномаи мушоҳида: ченакҳои зарурӣ/майдонҳои сабти, 'trace _ id' дар нармафзори миёна.
Канария: эзоҳи релизҳо дар графикҳо, SLO-auto-rollback.
16) Намунаҳо: дархостҳои зуд
Нуқтаҳои болоӣ бо хатогӣ:promql topk(10, sum by (route) (rate(http_requests_total{status=~"5.."}[5m])))
Тарроҳии CPU:
promql sum by (namespace, pod) (rate(container_cpu_cfs_throttled_seconds_total[5m])) > 0
Қафои Кафка:
promql max by (topic, group) (kafka_consumergroup_lag)
Аз гузоришҳо ба роҳҳо (Loki → Tempo): гузаред 'пайгирӣ _ id' ҳамчун пайванд ба Tempo UI/панели панел.
17) Сифати анбор: рӯйхати назоратӣ
- Схемаҳо ва воҳидҳои мувофиқашудаи метрикӣ/log/trace.
- 'trace _ id' дар гузоришҳо ва ченакҳо, пармакунӣ аз панелҳо.
- Огоҳии бисёрҷанбаи SLO бидуни парпеч (кворум/бисёр тиреза).
- Коҳиш додан, квотаҳо дархост кардан, маҳдудиятҳои қадам/диапазон.
- Синфҳои нигоҳдорӣ ва нигоҳдорӣ ҳуҷҷатгузорӣ ва татбиқ карда мешаванд.
- Таҷдиди RBAC/Audit/PII дохил карда шудааст.
- Панели панелҳо: соҳиб, дафтарчаҳо, ≤ 2 -3 экран, вокуниши зуд.
- Панели назоратӣ (ҳаҷм, арзиш, гуфтугӯи боло).
18) Нақшаи амалисозӣ (3 такрорӣ)
1. MVP (2 ҳафта): Прометей → Мимир, Локи, Темпо; Коллектор ОТ жел; панелҳои асосӣ ва огоҳиҳои SLO; намунаҳои blackbox.
2. Ҷадвал (3-4 ҳафта): интихоби думҳо, камонварӣ, воридкунии бисёр минтақа, RBAC/ҷойҳо, панелҳои Fin
3. Pro (4 + ҳафта): бозгашти худкор ба SLO, синтетикаи бефосилаи роҳҳои асосӣ, Hold Legal, портфели SLO ва ҳисобот.
19) Анти-намунаҳо
"Графикаи зебо бе SLO" - ягон амал → фоида надорад.
Тамғакоғазҳои баландсифат ('user _ id', 'request _ id') - таркиши хотира ва арзиш.
Сабтҳо бе JSON ва бидуни 'trace _ id' - ҳеҷ гуна робита надоранд.
Огоҳии захираҳо ба ҷои аломатҳо - садо ва сӯхтани занг.
Набудани сиёсати нигоҳдорӣ - хароҷоти беназорат меафзояд.
20) Мини-FAQ
Чӣ бояд интихоб кард: Loki ё ELK?
ELK барои ҷустуҷӯ/паҳлӯҳои мураккаб; Loki барои сенарияҳои ба монанди grep арзонтар ва тезтар аст. Гибрид аксар вақт истифода мешавад.
Оё ба ҳама роҳҳо лозиманд?
Бале, ҳадди аққал дар роҳҳои калидӣ (вуруд, кассир, пардохт) бо интихоби дум - ин RCA-ро ба таври назаррас суръат мебахшад.
Чӣ тавр аз сифр сар кардан мумкин аст?
OTEel Collector → Mimir/Loki/Tempo → намунаҳои асосии SLO ва blackbox → пас панели панелҳо ва ҳушдорҳо месӯзанд.
Ҷамъ
Маҷмӯи мушоҳидаҳо маҷмӯи абзорҳои нобаробар нест, балки системаи муттасил аст: стандартҳои якхелаи маълумот → таносуби M-L-T → ҳушдори SLO ва синтетика → бехатарӣ ва FIN. Схемаҳо, интизоми тамғакоғазҳо ва нигоҳдорӣ, OTel-ро пайваст кунед, пармакунӣ ва худкорро илова кунед - ва шумо эътимоднокии идорашавандаро бо арзиши фаҳмо ба даст меоред.