GH GambleHub

დაკვირვება: ლოგოები, მეტრიკები, ტრეკები

დაკვირვება: ლოგოები, მეტრიკები, ტრეკები

1) რატომ არის ეს აუცილებელი?

დაკვირვება - სისტემის უნარი უპასუხოს დაუგეგმავ კითხვებს მათი მდგომარეობის შესახებ. იგი ეყრდნობა სამ მთავარ სიგნალს:
  • მეტრიკა - კომპაქტური ერთეული SLI/SLO და ალერტინგი სიმპტომების მიხედვით.
  • ტრეკები - მიზეზობრივი მოთხოვნის ჯაჭვები (end-to-end).
  • Logs არის დეტალური მოვლენები გამოძიებისა და აუდიტის მიზნით.

მიზანი: სწრაფი RCA, პრევენციული ალერტები და კონტროლირებადი საიმედოობა error budget- ის ფარგლებში.

2) არქიტექტურის პრინციპები

ერთი კონტექსტი: ყველგან ვსეირნობთ 'trace _ id', 'spant _ id', 'tenant _ id', 'request _ id', 'user _ agent', 'client _ ip _ hash'.
სტანდარტები: OpenTelemetry (OTel) SDK/აგენტებისთვის, ლოგოების JSON ფორმატი (კანონიკური, სქემით).
სიმპტომები> მიზეზები: ალერტიმი მომხმარებლის სიმპტომების მიხედვით (ლატენტობა/შეცდომები), და არა CPU- ს მიხედვით.
სიგნალის კავშირი: მეტრიკიდან - სპანამდე (ექსპლუატაციაში) - სპეციფიკურ ლოგოებში „trace _ id“.
უსაფრთხოება და კონფიდენციალურობა: PII შენიღბვა ლოგოებში, დაშიფვრა in transit/at rest, უცვლელი აუდიტის ჟურნალები.
მრავალფეროვნება: სახელების/გასაღებების/პოლიტიკის სივრცეების გამიჯვნა.

3) სიგნალებისა და სქემების ტაქსონომია

3. 1 მეტრიკა

RED (Rate, Errors, Duration) მომსახურებისა და USE (Utilization, Saturation, Errors) ინფრასტრუქტურისთვის.
Типы: counter, gauge, histogram/summary. ლატენტობისთვის - histogram ფიქსირებული bucket 'ami.
Exemplars: ბმული 'trace _ id' ჰისტოგრამის „ცხელ“ ბინებში.

მეტრიკის მინი სქემა (ლოგიკური. მოდელი):

name: http_server_duration_seconds labels: {service, route, method, code, tenant}
type: histogram buckets: [0. 01, 0. 025, 0. 05, 0. 1, 0. 25, 0. 5, 1, 2, 5]
exemplar: trace_id

3. 2 ტრეკები

სპანი = ოპერაცია 'name', 'start/end', 'attributes', 'events', 'status'.
W3C Trace Context ტოლერანტობისთვის.
სიმულაცია: ძირითადი (head) + დინამიური (tail) + „მნიშვნელობის“ წესები (შეცდომები, მაღალი p95).

3. 3 ლოგიკა

მხოლოდ სტრუქტურირებული JSON; დონე: DEBUG/INFO/WARN/ERROR.
სავალდებულო ველები: 'ts _ utc', 'level', 'მესიჯი', 'trace _ id', 'spank _ id', 'tenant _ id', 'env', 'service', 'region', 'host', 'labels {'.
აკრძალულია: საიდუმლოებები, ნიშნები, PAN, პაროლები. PII - მხოლოდ ტოკნიზირებული/შენიღბული.

ლოგიკის სტრიქონის მაგალითი (JSON):
json
{"ts":"2025-10-31T12:05:42. 123Z","level":"ERROR","service":"checkout","env":"prod",
"trace_id":"c03c...","span_id":"9ab1...","tenant_id":"t-42","route":"/pay",
"code":502,"msg":"payment gateway timeout","retry":true}

4) შეკრება და ტრანსპორტი

აგენტები/ექსპორტიორები (daemonset/sidecar) - ბუფერი საბურავების/ინგესტის კვანძზე (TLS/mTLS) სიგნალის საცავი.
მოთხოვნები: უკუკავშირი, რესტავრაცია, დედუპლიკაცია, კარდინალობის შეზღუდვა (labels!), დაცვა „log storms“ - სგან.

მეტრიკი: pull (Prometheus თავსებადი) ან push OTLP- ით.
ტრეკები: OTLP/HTTP (gRPC), tail-samplers კოლექციონერზე.
Logs: ადგილობრივი შეგროვება (journald/docker/stdout) - პარსერი და ნორმალიზატორი.

5) შენახვა და გადაკეთება (tiered)

მეტრიკა: ცხელი TSDB 7-30 დღე (downsample- ით), აგრეგატები უფრო გრძელი ვადით (90-365 დღე).
ტრეკები: 1-7 დღე სავსეა, შემდეგ აგრეგატები/„ მნიშვნელოვანი “სერვისები; შეინახეთ ინდექსები 'სერვისის', 'status', 'error'.
ლოგოები: ცხელი ინდექსი 7-14 დღე, თბილი 3-6 თვე, არქივი 1-7 წლამდე (შესაბამისობა). აუდიტი - WORM.

ხარჯების ოპტიმიზაცია: downsampling, DEBUG ფილტრაცია გაყიდვაში, ეტიკეტის კვოტები, ბილიკების სიმულაცია.

6) SLI/SLO, ალერტინგი და მოვალეობა

SLI: ხელმისაწვდომობა (% წარმატებული მოთხოვნა), ლატენტობა (p95/p99), 5xx წილი, მონაცემთა სიახლე, წარმატებული ჯობების წილი.
SLO: მიზანი SLI- ში (მაგალითად, 99. წარმატებული 9% 400 ms).
Error budget: 0. 1% „შეცდომის უფლება“ არის ფიჩფრიზის/ექსპერიმენტების წესები.

სიმპტომების ალერტინგი (მაგალითი):
  • `ALERT HighLatency` если `p99(http_server_duration_seconds{route="/pay"}) > 1s` 5мин.
  • `ALERT ErrorRate` если `rate(http_requests_total{code=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0. 02`.
  • Silos Alerty (CPU/Disk) - მხოლოდ როგორც დამხმარე, paging გარეშე.

7) სიგნალების კორელაცია

მეტრიკა "წითელი" კლიშე ექსპროპლარში - კონკრეტული 'trace _ id "ჩვენ ვუყურებთ" ნელი "სპანს და ვხსნით ლოგებს იმავე" trace _ id "მიხედვით.
კორელაცია გამოშვებებთან: 'ვერსიის' ატრიბუტები, 'image _ sha', 'feature _ flag'.
მონაცემებისთვის/ETL: 'dataset _ urn', 'run _ id', კავშირი ხაზთან (იხ. შესაბამისი სტატია).

8) სემპლაცია და კარდინალობა

მეტრიკა: ჩვენ ვზღუდავთ ეტიკეტს ('user _ id', 'session _ id'); კვოტები/შესაბამისობა რეგისტრაციაში.
ტრეკები: შევაერთოთ head-sample (შესასვლელში) და tail-sample (კოლექციონერზე) წესებით: „ყველაფერი, რაც 5xx, p99, შეცდომები - 100%“.
ლოგიკა: დონე და დაშლა; ხშირი განმეორებითი შეცდომებისთვის - საერთო მოვლენები (dedupe გასაღები).

მაგალითი tail-sampling (კონცეფციურად, OTel Collector):
yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_code: ERROR rate_allocation: 1. 0
- type: latency threshold_ms: 900 rate_allocation: 1. 0
- type: probabilistic hash_seed: 42 sampling_percentage: 10

9) უსაფრთხოება და კონფიდენციალურობა

Transit/At Rest: დაშიფვრა (TLS 1. 3, AEAD, KMS/HSM).
PII/საიდუმლოებები: გაგზავნამდე მედესანტეები, ტოკენიზაცია, შენიღბვა.
წვდომა: ABAC/RBAC კითხვისთვის; როლების გამიჯვნა producers/readers/admins.
აუდიტი: ლოგოების/ტრეკების დაშვების უცვლელი ჟურნალი; ექსპორტი - დაშიფრული ფორმით.
მრავალფეროვნება: namespaces/tenant-labels პოლიტიკოსებთან; დაშიფვრის გასაღებების იზოლაცია.

10) კონფიგურაციის პროფილები (ფრაგმენტები)

Prometheus (HTTP + Alerting მეტრიკა):
yaml global: { scrape_interval: 15s, evaluation_interval: 30s }
scrape_configs:
- job_name: 'app'
static_configs: [{ targets: ['app-1:8080','app-2:8080'] }]
rule_files: ['slo. rules. yaml']
slo. rules. yaml (RED მაგალითი):
yaml groups:
- name: http_slo rules:
- record: job:http_request_duration_seconds:p99 expr: histogram_quantile(0. 99, sum(rate(http_server_duration_seconds_bucket[5m])) by (le,route))
- alert: HighLatencyP99 expr: job:http_request_duration_seconds:p99{route="/pay"} > 1 for: 5m
OpenTelemetry SDK (ფსევდო კოდი):
python provider = TracerProvider(resource=Resource. create({"service. name":"checkout","service. version":"1. 8. 3"}))
provider. add_span_processor(BatchSpanProcessor(OTLPExporter(endpoint="otel-collector:4317")))
set_tracer_provider(provider)
with tracer. start_as_current_span("pay", attributes={"route":"/pay","tenant":"t-42"}):
business logic pass
პროგრამის Logs (stdout JSON):
python log. info("gw_timeout", extra={"route":"/pay","code":502,"trace_id":get_trace_id()})

11) მონაცემები/ETL და ნაკადი

SLI მონაცემებისთვის: სიახლე (max lag), სისრულე (rows vs expectation), „ხარისხი“ (შემსრულებლები/დუპლიკატები).
ალერტები: ფანჯრის გამოტოვება, კონსუმერის ლაგი, DLQ ზრდა.
კორელაცია: 'run _ id', 'dataset _ urn', ხაზის მოვლენები; კვალი plines (span batch/partition).
Kafka/NATS: მეტრიკის მწარმოებელი/კონსუმერი, lag/უარყოფა; headers ტრეკები (მათ შორის 'traceparent').

12) პროფილირება და eBPF (დამატებითი სიგნალი)

დაბალი დონის ცხელი გზები CPU/alloc/IO; პროფილები ინციდენტისთვის.
eBPF ტელემეტრია (ქსელის შეფერხებები, DNS, სისტემური გამოწვევები) 'trace _ id '/PID მითითებით.

13) დაკვირვების ტესტირება

სიგნალის ხელშეკრულება: მეტრული/ეტიკეტის/ჰისტოგრამების ექსპორტის შემოწმება CI- ში.
სინთეზური პარამეტრები: RUM/სიმულაციური მომხმარებლები გარე SLI- სთვის.
Chaos/Fire drills: დამოკიდებულების გამორთვა, დეგრადაცია - ჩვენ ვხედავთ, თუ როგორ რეაგირებენ ალერტები და მოვალეობები.
Smoke გაყიდვაში: პოსტ-დამატებითი შემოწმება, რომ ახალ endpoints- ს აქვს მეტრიკა და ტრეკები.

14) მოცულობის ღირებულება და კონტროლი

ბიუჯეტები სიგნალზე/გუნდში; deschboard „cost per signal“.
ბიუჯეტის კარდინალობა (SLO cardinality), ახალი ეტიკეტის ლიმიტები.
Downsampling, მონაცემთა კლასების რეცენზიები, „ცივი“ არქივები და WORM აუდიტი.

15) სადამკვირვებლო პლატფორმის ოპერაცია და SLO

SLO პლატფორმა: 99. წარმატებული ინგესტების 9%; შეფერხება მეტრიკის ინდექსამდე 30 წმ, ლოგოები - 2 წუთი, ბილიკები - 1 წთ.
პლატფორმის ალერტები: ინჟესტის ლაქი, ფრჩხილების ზრდა, ხელმოწერის/დაშიფვრის შეცდომა, ბუფერების გადინება.
DR/HA: მრავალმხრივი, რეპლიკაცია, კონფიგურაციის/წესების სარეზერვო ასლები.

16) ჩეკის ფურცლები

გაყიდვამდე:
  • ყველგან არის გადაყრილი 'trace _ id '/' span _ id'; JSON ლოგები სქემით.
  • RED/USE მეტრი ჰისტოგრამებით; ექსპლარის ბილიკი.
  • Tail-sampling შედის; წესები 5xx/p99 = 100%.
  • ალერტები სიმპტომების მიხედვით + რუნიბუკი; მშვიდი საათი/anti-flap.
  • მედდა PII; დაშიფვრა at rest/in transit; WORM აუდიტისთვის.
  • რეტენციები და ბიუჯეტები მოცულობის/კარდინალობისთვის.
ოპერაცია:
  • ალერტების ყოველთვიური მიმოხილვა (ხმაური/სიზუსტე), ბარიერების tuning.
  • მოხსენება error budget- ის შესახებ და მიღებული ზომები (ფიჩფრიზი, ჰარდენინგი).
  • კრიტიკული ბილიკებისთვის დაშბორდის/ლოგოების/მარშრუტების დაფარვის შემოწმება.
  • სასწავლო ინციდენტები და runbook- ის განახლება.

17) Runbook’и

RCA: ზრდა p99/ანაზღაურება

1. გახსენით RED dashbourd 'checkout'.
2. ექსპლარის გასწვრივ გადასვლა - ნელი ბილიკი - „ვიწრო სპანის“ იდენტიფიცირება (მაგ., 'gateway. call`).
3. 'trace _ id' - ის ლოგოების გახსნა.
4. ჩართეთ უკან დაბრუნების დროშა/RPS ლიმიტი, აცნობეთ დამოკიდებულების მფლობელებს.
5. სტაბილიზაციის შემდეგ - RCA, ოპტიმიზაციის თიკეტები, რეპროდუქციის ტესტი.

ანომალია მონაცემებში (lag DWH):

1. SLI „ახალი“ წითელი ჯობის გზატკეცილი არის სწრაფი ნაბიჯი.

2. შეამოწმეთ ბროკერის/DLQ, კონექტორის შეცდომები.

3. დაიწყეთ reprocess, აცნობეთ მომხმარებლებს (BI/პროდუქტი) სტატუს არხის საშუალებით.

18) ხშირი შეცდომები

ლოგოები სქემის გარეშე და 'trace _ id' გარეშე. გამოძიება რამდენჯერმე გადაიდო.
ინფრასტრუქტურის ალერტები სიმპტომების ნაცვლად. Paging მიდის „რძეში“.
მეტრიკის შეუზღუდავი კარდინალობა. ხარჯების აფეთქება და არასტაბილურობა.
ყველა მარშრუტი 100%. ძვირია და არ არის საჭირო; ჩართეთ ჭკვიანი ნიმუშები.
PII/საიდუმლოებები ლოგებში. ჩართეთ ექთნები და „წითელი სიები“.
„მუნჯი“ ფიჩები. ახალი კოდი მეტრიკის/ტრასების/ლოგოების გარეშე.

19) FAQ

გ: უნდა შევინარჩუნოთ ნედლეულის ტექსტი?
ო: დიახ, მაგრამ რეტენციით და არქივებით; ალერტებისა და SLO- სთვის საკმარისია აგრეგატები. აუდიტი - WORM- ში.

გ: რა უნდა აირჩიოთ ტრასებისთვის - head ან tail sampling?
O: კომბინაცია: head-probabilistic + tail-rules ძირითადი დაფარვისთვის შეცდომებისა და ანომალიებისთვის.

გ: როგორ დააკავშიროთ მომხმარებლის მეტრიკა და ტექნიკური?
O: ზოგადი 'trace _ id' და ბიზნეს ეტიკეტების საშუალებით ('მარშრუტი', 'tenant', 'plan'), ასევე პროდუქტის (კონვერტაციის) მოვლენების საშუალებით ტრასების კორელაციასთან.

გ: როგორ არ დაიხრჩო ალერტებში?
O: სიმპტომების ბიტი, შემოიტანეთ მშვიდი საათი, დედაპლაცია, ჯგუფი, SLO პრიორიტეტი და ნაგულისხმევი მფლობელი თითოეული ალერტისთვის.

დაკავშირებული მასალები:
  • „აუდიტი და უცვლელი ჟურნალები“
  • „დაშიფვრა In Transit/At Rest“
  • საიდუმლო მენეჯმენტი
  • „მონაცემთა წარმოშობა (Lineage)“
  • «Privacy by Design (GDPR)»
  • „ვებ ჰუკების მიწოდების გარანტიები“
Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.