GH GambleHub

Бөлүштүрүлгөн тректер

Бөлүштүрүлгөн Tracking

1) Эмне үчүн жана эмне

Бөлүштүрүлгөн Tracking - бул суроо-жол боюнча операцияларды байланыштыруу жолу: фронт → API-шлюз → микросервистер → DB/кэш → брокерлер → джобдор/payplayns.
Натыйжа - ар бир спан атрибуттары, окуялары жана статусу менен компоненттин иштешин жаздырган спан (span) трейси. Бул RCA тездетет, SLO сактоо жана MTTR азайтуу жардам берет.

Негизги максаттары:
  • Оор жолдун жана "тар жерлердин" көрүнүшү.
  • Симптомдордун (метриканын) себептер (спаналар) жана деталдар (логилер) менен байланышы.
  • Retrains талдоо, кезек, DLQ, күйөрмандар, "араа" жашыруун.

2) Tracking маалыматтар модели

Trace - 'trace _ id' менен чалуулар тилкеси.
Span — операция: `name`, `kind` (SERVER/CLIENT/PRODUCER/CONSUMER/INTERNAL), `start/end`, `status`, `attributes`, `events`, `links[]`.
Attributes - ачкыч мааниси (route, db. system, messaging. system, cloud. аймак ж.б.).
Events - span ичиндеги заматта белгилер (мисалы, 'retry', 'cache _ miss').
Span Links - "ата-бала" (батчи, retrailer, fan-in/out) тышкары байланыш.
Resource - процесстин/кызматтын метадеректери ('service. name ', версия, айлана-чөйрө).

3) Контекст жана сабырдуулук

3. 1 W3C Trace Context

Аталыштары:
  • 'traceparent': 'version-traceid-spanid-flags' (желектер sampling кирет).
  • 'tracestate': соодагердин өзгөчө абалы (минималдуу).
  • Багаж - бизнес контекстинин ачкычтары (чектелген, PII/сырлары жок).

3. 2 Контекст ыргытуу

HTTP: `traceparent`/`tracestate`; gRPC: метадеректер; WebSocket: жаңылоодо жана билдирүүлөрдө;

Билдирүүлөр: headers (Kafka/NATS/RabbitMQ) - өндүрүүчүдө баштапкы контекстти сактоо жана CONSUMER боюнча өткөрүп берүү.
Базалар: контекст "алып келбейт" - span (query, rows, db. system), бирок мааниси жок.

4) Семплирование: кантип банкрот болбош керек

Head sampling (кире бериште): ыктымалдык/эрежелер боюнча (route, tenant, endpoint).
Tail sampling (жыйноочу боюнча): "кызыктуу" соода сактап - каталар, узак p95/p99, сейрек жолдор.
Exemplars: гистограмманын метриктери конкреттүү 'trace _ id' шилтемелерин сактайт.
Сунуш: айкалыштыруу - башчысы 5-20% + tail эрежелери 100% үчүн 5xx/timeout/p99.

5) Атрибуттар жана таксономия (минималдуу милдеттүү)

Жалпы:
  • `service. name`, `service. version`, `deployment. environment`, `cloud. region`, `http. route`, `http. method`, `http. status_code`, `db. system`, `db. statement '(кыскача/маалыматсыз),' messaging. system`, `messaging. operation`, `peer. service`, `net. peer. name`, `tenant. id`, `request. id`.

Бизнес-белги: кылдат, PII жок. Мисал: 'order. segment`, `plan. tier`.

6) Асинхрондук жагдайлар, кезек жана батчи

PRODUCER → CONSUMER: контекстинде SPAN PRODUCER түзүү; билдирүүдө - headers (traceparent, baggage). CONSUMER өндүрүүчүгө шилтеме менен SERVER/CONSUMER-SPAN башталат (катуу иерархия жок болсо).
Fan-out: бир кирүү - көп outputs → туунду уктап же links.
Batch: CONSUMER ар бир messageId же 'links' боюнча 'events' менен бир SPAN N билдирүүлөр пакетин окуп жатат N өзүнчө контексттер.
DLQ: өзүнчө span 'messaging. dlq. publish` с reason и count.
Retry: 'event: retry' + 'retry. count 'атрибут; аракет үчүн жаңы CHILD-SPAN жакшыраак.

7) Логдор жана метриктер менен интеграция

Logi 'trace _ id '/' span _ id' → менен JSON жазабыз.
RED/USE параметрлери exemplars → p99 чокуларынан "жаман" уктоо кирет.
Жолдор окуялар аркылуу техникалык сигналдарды (көз карандылыктын каталарын) жана бизнес сигналдарды (конверсия) жаратат.

8) аткаруу жана наркы

Семплинг жана Trottling окуялар.
Атрибуттардын кардиналдуулугун кыскартуу (жок 'user _ id '/' session _ id' label катары!).
Кысуу/экспорттоочу батч; экспорттук таймауттардын чектери.
Сактоо: ысык 1-7 күн, андан ары - агрегаттар/гана "көйгөйлүү" соода.
чыгымдар категориялары: жыйноочулар, индекстер, сактоо, egress.

9) Коопсуздук жана купуялык

In Transit: TLS 1. 3/mTLS инкассатордук агент; At Rest: шифрлөө, өз ачкычтары (караңыз "In Transit/At Rest шифрлөө").
PII жана сырлар: атрибуттарды/окуяларды жазуу эмес; өндүрүүчүдө токенизация/маскировка.
Көп ижара: 'tenant. id 'ресурс-этикеткасы жана мейкиндикти изоляциялоо, окуу саясаты катары; издерге жеткиликтүүлүктү текшерүү ("Аудит жана өзгөрүлбөгөн журналдарды" караңыз).

10) Ишке ашыруу схемалары (референс)

10. 1 OpenTelemetry SDK (псевдокод)

python from opentelemetry import trace from opentelemetry. sdk. trace import TracerProvider from opentelemetry. sdk. resources import Resource from opentelemetry. sdk. trace. export import BatchSpanProcessor from opentelemetry. exporter. otlp. proto. grpc. trace_exporter import OTLPSpanExporter

provider = TracerProvider(resource=Resource. create({
"service. name":"checkout","service. version":"1. 12. 0","deployment. environment":"prod"
}))
provider. add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint="otel-collector:4317", insecure=True)))
trace. set_tracer_provider(provider)
tr = trace. get_tracer("checkout")

with tr. start_as_current_span("POST /pay", attributes={
"http. route":"/pay","http. method":"POST","tenant. id":"t-42"
}):
business logic, external API call and pass DB

10. 2 OTel Collector - tail sampling (фрагмент)

yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_codes: [ERROR]
- type: latency threshold_ms: 900
- type: probabilistic sampling_percentage: 10 exporters:
otlphttp: { endpoint: http://trace-backend:4318 }
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, tailsampling]
exporters: [otlphttp]

10. 3 Kafka - контекстти өткөрүп берүү (түшүнүк)

PRODUCER: headers 'traceparent', 'baggage' кошуу.
CONSUMER: эгерде билдирүү жаңы агымды баштаса - жаңы SERVER/CONSUMER-span headers контекстиндеги шилтемеден.

11) Data/ETL и ML

Үчүн батч-пайплайн: спан батч/partition с 'dataset. urn`, `run. id`, `rows. in/out`, `freshness. lag`.
ML үчүн: көнүгүү/inference уктап, модель версия, latency, feature store.
Lineage менен байланыш: 'run. id` и `dataset. urn 'трестен маалыматтардын келип чыгуу графасына өтүүгө мүмкүндүк берет.

12) SLO платформа Tracking

Accessibility ingestion: ≥ 99. 9%

Индекстөөгө чейин кечигүү: ≤ 60 менен p95

Head-sample каптоо: ≥ 5-10% негизги маршруттар

100% ERROR жана latency статусу менен соода сактоо> "критикалык жолдор" каталогу боюнча босого

Платформанын алерттери: тамчылардын өсүшү, экспорттун таймауттары, индексатордун артта калышы, кардиналдуулуктун ысып кетиши.

13) тестирлөө жана текшерүү

CIдеги трасса келишими: негизги эндпоинттерде спандардын болушу, милдеттүү атрибуттар, туура 'traceparent' шлюз/прокси аркылуу учат.
Synthetic/rum-үлгүлөрү: сырттан соода чогултуу.
Chaos/окуялар: көз карандылыкты өчүрүү, tail-семплер каталарды "тандайт" деп текшерүү.
продукт Smoke: бошотулгандан кийин - "уктап бар" жана exemplar → trace.

14) Чек-баракчалар

Азык-түлүктүн алдында

  • Бардык жерде W3C Trace Context; билдирүүлөр үчүн - headers.
  • Негизги баш-семплирлөө камтылган; 5xx/p99 үчүн tail эрежелери ылайыкташтырылган.
  • Милдеттүү атрибуттар: route, method, status, service. version, tenant. id.
  • JSON Логи 'trace _ id '/' span _ id', exemplars менен метрика.
  • PII санитайзерлер; жолдо/тынч шифрлөө; кирүү саясаты.
  • Дашборддор: "критикалык жол", "көз карандылыктын каталары", "ретраи/таймауттар".

Иштетүү

  • Ай сайын кардиналдык атрибуттарды карап чыгуу; квота.
  • Тюнинг tail-sampling SLO (аз ызы-чуу, бардык "ысык" - үлгү).
  • өткөөл метрика → exemplar → trace → логи менен RCA окутуу.
  • кезек үчүн каптоо текшерүү, DLQ, ETL-Jobs.

15) Runbook’и

RCA: өсүш p99 боюнча/төлөө

1. RED-dashboard ачуу; имараттан p99 exemplar менен соодага өтүү.
2. Табуу "тар" CLIENT-span (мисалы, 'gateway. call '), текшерүү' retry. count ', таймауттар.
3. Кызматтын/көз карандылыктын версияларын салыштыруу, аймак/аймак.
4. Деградацияны күйгүзүү (кэш жооп/RPS лимити), көз карандылыктын ээлерине кабарлоо.
5. Фикстен кийин - RCA жана оптималдаштыруу үчүн билеттер.

DLQ жарылуу

1. Трасса чыпкасы 'messaging. dlq. publish`.
2. Себептерин текшерүү (events), релизи менен байланышуу.
3. reprocess ишке киргизүү, убактылуу CONSUMER боюнча убакытты көбөйтүү, downstream ээлерине кабарлоо.

16) Көп каталар

шлюзы/брокерлер аркылуу эч кандай контекст. Чечим: Орто/интерсепторлор, бирдиктүү китепканалар.
Бардык соода 100%. Кымбат жана маанисиз - tail-семплинг колдонуңуз.
'trace _ id' жок логдор. Корреляция жоголот → MTTR ↑.
атрибуттарда PII. Masking/токендештирүү; техникалык контекстти гана сактаңыз.
"Дудук" өбөлгөлөр. батч/partition жана 'run боюнча уктап кошуу. id`.
Ар кандай аталыштар. Спан аттарынын жана атрибуттардын ачкычтарынын сөздүгүн киргизиңиз.

17) FAQ

S: Head же tail sampling жакшы?
A: айкалышы. Head негизги катмарын берет, tail аномалияларды/каталарды сактоого кепилдик берет.

S: катуу иерархия жок Kafka аркылуу кантип издөө керек?
A: PRODUCER жана CONSUMER ортосунда span шилтемелерди колдонуу; контекст - headers.

S: сезгич SQL менен эмне кылуу керек?
Жөнүндө: 'db. statement 'кыскартылган/нормалдаштырылган (маанисиз), же' db. operation '+ өлчөмдөрү/убактысы.

В: Бизнес-метриктер менен кантип байланышууга болот?
A: PII (plan/segment) жок домен атрибуттарын кошуу, span ичинде "бизнес этаптары" окуяларын колдонуу жана exemplar боюнча конверсиялык метриктерден өтүү.

Байланыштуу материалдар:
  • "Байкоо: Логи, метрика, трек"
  • "Аудит жана өзгөрүлбөгөн журналдар"
  • "In Transit/At Rest шифрлөө"
  • "Маалыматтардын келип чыгышы (Lineage)"
  • «Privacy by Design (GDPR)»
  • "Сыр менеджменти"
Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.