GH GambleHub

Бақылау стегі

1) Бақылау стегі не үшін қажет

Жылдам RCA және MTTR төмендеуі: симптомнан себебіне минутына.
SLO-басқару: қателерді/жасырындылықты өлшеу, қате бюджет бойынша алертинг.
Релиздерді бақылау: канареялық құрылғылар, авто-rollback өлшемдері бойынша.
Қауіпсіздік және аудит: қол жеткізу жолдары, аномалиялар, Legal Hold.
ФинОпс-ашықтық: сақтау/сұрау құны, cost-per-SLO.

Әдіснамалар: Golden Signals (latency/traffic/errors/saturation), RED, USE.

2) Стектің базалық сәулеті

Қабаттар бойынша компоненттер

Жинау/агенттер: Exporters, Promtail/Fluent Bit, OTel SDK/Auto-Instr, Blackbox-probes.
Шина/ingest: Prometheus remote_write → Mimir/Thanos, Loki distributors/ingesters, Tempo/Jaeger ingesters.
Сақтау орындары: объектілік S3/GCS/MinIO (ұзақ суық), SSD (ыстық қатарлар).
Сұраулар/визуализация: Grafana (панельдер, SLO-виджеттер), Kibana (егер ELK болса).
Басқару: Alertmanager/Графана-алерты, сервис-каталог, RBAC, құпия-менеджер.

Орналастыру үлгілері

Managed (Grafana Cloud/бұлтты сервистер) - көлемде жылдам және қымбат.
Self-hosted in K8s - толық бақылау, пайдалануды қажет және FinOps.

3) Деректер стандарттары: бірыңғай «бақылау схемасы»

3. 1 Өлшемдер (Prometheus/OpenMetrics)

Міндетті лейблдер: 'env', 'region', 'cluster', 'namespace', 'service', 'version', 'tenant' (егер мульти-тенант болса), 'endpoint'.
Атауы: 'snake _ case', '_ total', '_ seconds', '_ bytes' суффикстері.
Гистограммалар: бекітілген 'buckets' (SLO-бағытталған).
Түбірлігі: 'user _ id', 'request _ id' лейблдерге қосылмайды.

3. 2 Логтар

Пішімі: JSON; міндетті өрістер 'ts', 'level', 'service', 'env', 'trace _ id', 'span _ id', 'msg'.
PII: агентте бүркемелеу (PAN, токендер, e-mail және т.б.).
Loki-лейблдер: тек төменгі кардиналдылық ('app', 'namespace', 'level', 'tenant').

3. 3 Трассалар

OTEL семантикасы: 'service. name`, `deployment. environment`, `db. system`, `http.`.
Сэмплинг: мақсатты жолдар p99 - 'always _ on '/tail-sampling, қалғаны -' parent/ratio '.
ID ендіру: 'trace _ id/span _ id' дегенді логиндер мен өлшемдерге (labels/fields) тастаңыз.

4) M-L-T корреляциясы (Metrics/Logs/Traces)

Алерт кестесінен (метрика) → сүзілген логтар бойынша 'trace _ id' → нақты трасса.
Трассадан (баяу спан) → спан аралығындағы нақты бэкендтің метрикасын сұрату.
Айнымалыларды ('$env', '$service', '$trace_id') алмастырумен «логтар» және «трассалар» панелдеріндегі Drilldown түймешіктері.

5) OpenTelemetry Collector: эталондық пайплайн

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 және multi-burn

Идея: алертим «CPU> 80%» деңгейінде емес, Error Budget тұтынуында.

PromQL үлгілері:
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%, capacity, белсенді оқиғалар.
10_Services - RPS, p95/p99, қателер, релиздер (аннотациялар) сервистері бойынша.
20_Infra - K8s/нодтар/сторидж/желі, etcd, бақылаушылар.
30_DB/Queues — PostgreSQL/Redis/Kafka/RabbitMQ.
40_Edge/DNS/CDN/WAF - ingress, LB, WAF ережелері.
50_Synthetic - аптайм және headless-сценарийлер.
60_Cost/FinOps - сақтау, сұрау салу, ыстық/суық, болжам.

Әрбір тақтасы: сипаттамасы, бірліктері, иесі, runbook-сілтемесі, drilldown.

8) Логи: LogQL практикум

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) Трассалар: TraceQL және фокустар

Ең баяу ұйқыларды табу:

{ service. name = "api" }      duration > 500ms
«Баяу сұраныстағы баяу SQL» сэндвичі:

{ name = "HTTP GET /order" }      child. span. name = "SELECT" & child. duration > 50ms

10) Синтетика және аптайм

Blackbox-exporter: ≥ 3 аймақтан HTTP/TCP/TLS/DNS сынамалары/ASN.
Headless: кесте бойынша login/deposit сценарийі.
Quorum-алерты: егер 2 өңірдің ≥ істен шыққанын көрсе іске қосылу.
Статус-бет: автоматты жаңартулар + қолмен түсініктемелер.

11) Сақтау және ретеншн

Метрика: ыстық 7-30 күн (жылдам қатарлар), downsampling/recording rules, суық - объектілік сақтау орны (айлар).
Логи: ыстық 3-7 күн, содан кейін - индексі бар S3/GCS (Loki chunk store/ELK ILM).
Трассалар: 3-7 күн 'always _ on' + іріктемелер үшін ұзақ сақтау (tail-sampled/жарамсыз).

Ұсынымдар:
  • Өлшемі мен уақыты бойынша ролловер; сұрау салуларға арналған бюджет (квоталар/лимиттер).
  • prod/stage және қауіпсіздік деректеріне арналған жеке саясаттар.

12) Мульти-тенанттық және қол жетімділік

'tenant '/' namespace '/Spaces, индекс-үлгілер және рұқсаттар бойынша бөліңіз.
Биллинг үшін ресурстарды таңдаңыз: 'tenant', 'service', 'team'.
Импорттық дашбордтар/алерттар - нақты командалар кеңістігінде.

13) Қауіпсіздік және комплаенс

Агенттерден бекендтерге дейін TLS/mTLS, жеке денсаулық үшін HMAC.
RBAC оқуға/жазуға, барлық сұрау салулар мен тәуекелдерді аудиттеуге арналған.
PII - шетіндегі редакция; логтарда құпияларға тыйым салу; DSAR/Legal Hold.
Оқшаулау: сезімтал домендер үшін жеке кластерлер/неймспейстер.

14) ФинОпс: бақылау құны

Ингест (сұрауларда емес) лейблдер мен логиканың түбегейлігін төмендетеміз.
Сыни жолдар үшін трассалар + мақсатты always-on сэмплингі.
Ауыр агрегациялар үшін Downsampling/recording rules.
Суық объектіге сирек қол жеткізуді мұрағаттау.
Метрики: `storage_cost_gb_day`, `query_cost_hour`, `cost_per_rps`, `cost_per_9`.

15) CI/CD және бақылау тестілері

CI-дегі метриктердің/логтардың линтингі: кардиналдылықтың «жарылысына» тыйым салу, гистограммаларды/бірліктерді тексеру.
Contract-бақылау тестілері: міндетті метриктер/логтардың өрістері, 'trace _ id' middleware.
Canary: бағандардағы релиздердің аңдатпалары, SLO-авто-rollback.

16) Мысалдар: жылдам сұраулар

Қателер бойынша топ-эндпоинттер:
promql topk(10, sum by (route) (rate(http_requests_total{status=~"5.."}[5m])))
CPU throttling:
promql sum by (namespace, pod) (rate(container_cpu_cfs_throttled_seconds_total[5m])) > 0
Kafka lag:
promql max by (topic, group) (kafka_consumergroup_lag)

(Loki → Tempo): 'trace _ id' дегенді Tempo UI/дэшбордқа сілтеме ретінде беріңіз.

17) Стек сапасы: чек-парақ

  • Метрикалардың/логтардың/трассалардың және өлшем бірліктерінің келісілген схемалары.
  • 'trace _ id' логтар мен метриктерде, панельдерден drilldown.
  • Multi-burn SLO-флаппингсіз алерталар (quorum/multi-window).
  • Downsampling, сұрау квоталары, қадам/диапазон лимиттері.
  • Ретеншн және сақтау сыныптары құжатталған және қолданылады.
  • RBAC/аудит/PII-редакция қосылған.
  • Дашбордтар: иесі, runbooks, ≤ 2-3 экран, жылдам жауап.
  • ФинОпс-дашборд (көлемі, құны, топ-сөйлеушілер).

18) Енгізу жоспары (3 итерация)

1. MVP (2 апта): Prometheus → Mimir, Loki, Tempo; OTel Collector; базалық дашбордтар және SLO-алерттар; blackbox-сынамалар.
2. Scale (3-4 апта): tail-sampling, downsampling, мульти-аймақ ingest, RBAC/Spaces, FinOps-дашбордтар.
3. Pro (4 + апта): SLO бойынша auto-rollback, негізгі жолдардың headless-синтетикасы, Legal Hold, SLO портфелі және есептілік.

19) Қарсы үлгілер

«SLO жоқ әдемі графиктер» - әрекет жоқ → пайда жоқ.
Кардиналдылығы жоғары лейблдер ('user _ id', 'request _ id') - жадының және құнының жарылысы.
JSON жоқ және 'trace _ id' жоқ логтар - корреляция жоқ.
Ресурстар бойынша алерталар симптомдардың орнына - шу және on-call күйуі.
Ретеншн-саясаттың болмауы - шығындардың бақылаусыз өсуі.

20) Mini-FAQ

Не таңдау керек: Loki немесе ELK?
Күрделі іздеу/фасеттер үшін ELK; Loki - grep-ұқсас сценарийлер үшін арзан және жылдам. Гибридті жиі қолданады.

Барлығына трассалар керек пе?
Иә, ең болмағанда негізгі жолдарда (login, checkout, payments) tail-sampling - бұл RCA-ны күрт жылдамдатады.

Нөлден қалай бастауға болады?
OTel Collector → Mimir/Loki/Tempo → базалық SLO және blackbox-сынамалар → содан кейін дашбордтар мен burn-алерталар.

Жиынтығы

Бақылау стегі - шашыраңқы құралдар жиынтығы емес, келісілген жүйе: бірыңғай деректер стандарттары → M-L-T корреляциясы → SLO-алертинг және синтетика → қауіпсіздік және FinOps. Сызбаларды, лейблдер мен ретеншн тәртібін бекітіңіз, OTel қосыңыз, drilldown және auto-rollback қосыңыз - және сіз түсінікті құнмен басқарылатын сенімділікке ие боласыз.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.