GH GambleHub

Müşahidə: log, metrika, izləmə

Müşahidə: log, metrika, izləmə

1) Niyə lazımdır

Müşahidə - sistemin vəziyyəti haqqında planlaşdırılmamış suallara cavab vermək qabiliyyəti. Üç əsas siqnala əsaslanır:
  • Metriklər - simptomlara görə SLI/SLO və alertinq üçün kompakt aqreqatlar.
  • Tracking - səbəb-nəticə sorğu zəncirləri (end-to-end).
  • Logi - araşdırma və audit üçün ətraflı hadisələr.

Məqsəd: sürətli RCA, qabaqlayıcı risklər və error budget çərçivəsində idarə olunan etibarlılıq.

2) Memarlıq prinsipləri

Vahid kontekst: hər yerə 'trace _ id', 'span _ id', 'tenant _ id', 'request _ id', 'user _ agent', 'client _ ip _ hash' atırıq.
Standartlar: SDK/agentlər üçün OpenTelemetry (OTel), JSON-log formatı (kanonik, sxemli).
Simptomlar> səbəblər: CPU-ya görə deyil, istifadəçi simptomlarına görə alertim (gecikmə/səhv).
Siqnalların əlaqəsi: metrikadan → spana (exemplars) → 'trace _ id' -ə qədər.
Təhlükəsizlik və məxfilik: loqlarda PII maskalama, in transit/at rest şifrələmə, audit üçün dəyişməz jurnallar.
Multi-icarə: ad/açar/siyasət boşluqlarının ayrılması.

3) Siqnalların taksonomiyası və sxemləri

3. 1 Metrika

Xidmətlər üçün RED (Rate, Errors, Duration) və infrastruktur üçün USE (Utilization, Saturation, Errors).
Типы: counter, gauge, histogram/summary. Latentlik üçün - sabit bucket ilə histogram.
Exemplars: «isti» histoqram binalarında 'trace _ id' linki.

Metrikanın mini sxemi (məntiq. model):

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 Tracking

Span = 'name', 'start/end', 'attributes', 'events', 'status' ilə əməliyyat.
Dözümlülük üçün W3C Trace Context.
Nümunə: əsas (head) + dinamik (tail) + «əhəmiyyət» qaydaları (səhvlər, yüksək p95).

3. 3 Logi

Yalnız strukturlaşdırılmış JSON; səviyyələri: DEBUG/INFO/WARN/ERROR.
Məcburi sahələr: 'ts _ utc', 'level', 'message', 'trace _ id', 'span _ id', 'tenant _ id', 'env', 'service', 'region', 'host', 'labels {}'.
Qadağandır: sirlər, tokenlər, PAN, şifrələr. PII - yalnız tokenləşdirilmiş/maskalanmış.

Giriş sətri nümunəsi (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) Yığım və nəqliyyat

Agentlər/ixracatçılar (daemonset/sidecar) → düyün bufer → şin/ingest (TLS/mTLS) → siqnallar saxlama.
Tələblər: back-pressure, retrajlar, deduplikasiya, kardinallığın məhdudlaşdırılması (labels!), «log storms» -dan qorunma.

Metrik: pull (Prometheus uyğun) və ya OTLP vasitəsilə push.
Tracking: OTLP/HTTP (gRPC), kollektor tail-samplers.
Log: lokal toplama (journald/docker/stdout) → parser → normallaşdırıcı.

5) Saxlama və retensiya (tiered)

Metrik: isti TSDB 7-30 gün (downsample ilə), daha uzun müddət üçün aqreqatlar (90-365 gün).
Tracking: 1-7 gün tam, sonra aqqreqatlar/span «vacib» xidmətlər; indeksləri saxlamaq üçün 'service', 'status', 'error'.
Logi: isti indeks 7-14 gün, isti 3-6 ay, arxiv qədər 1-7 il (komplayens). Audit - WORM.

Xərclərin optimallaşdırılması: downsampling, DEBUG filtrasiya, etiket kvotaları, trass üçün sampling.

6) SLI/SLO, alertinq və vəzifə

SLI: əlçatanlıq (% uğurlu sorğular), gecikmə (p95/p99), 5xx payı, məlumatların təzəliyi, uğurlu gob payı.
SLO: SLI hədəfi (məsələn, 99. 9% uğurlu ≤ 400 ms).
Error budget: 0. 1% «səhv hüququ» → fichfries/eksperimentlər qaydaları.

Simptomlara görə alertinq (nümunə):
  • `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-alertlər (CPU/Disk) - yalnız paging olmadan köməkçi kimi.

7) Siqnalların korrelyasiyası

Metrika «qırmızı» → tıklayın exemplar → konkret 'trace _ id' → baxın «yavaş» span → açın log eyni 'trace _ id'.
Relizlərlə korrelyasiya: 'version', 'image _ sha', 'feature _ flag' atributları.
/ ETL məlumatları üçün: 'dataset _ urn', 'run _ id', lineage ilə əlaqə (müvafiq məqaləyə baxın).

8) Sampling və kardinallıq

Metriklər: etiketləri məhdudlaşdırın ('user _ id', 'session _ id' olmadan); qeydiyyat zamanı kvotalar/validasiya.
Tracking: head-sample (girişdə) və tail-sample (kollektorda) qaydaları ilə birləşdirin: «hər şey 5xx, p99, səhvlər - 100%».
Log: səviyyələri və drosselizasiya; tez-tez təkrarlanan səhvlər üçün - yığma hadisələr (dedupe açarı).

Tail-sampling nümunəsi (konseptual olaraq, 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) Təhlükəsizlik və məxfilik

In Transit/At Rest: şifrələmə (TLS 1. 3, AEAD, KMS/HSM).
PII/sirləri: göndərilmədən əvvəl dezinfeksiyaedici, tokenizasiya, maskalanma.
Giriş: ABAC/RBAC oxu; rolların bölünməsi producers/readers/admins.
Audit: log/trass dəyişməz giriş jurnalı; ixrac - şifrələnmiş formada.
Multi-icarə: siyasətçilərlə namespaces/tenant-labels; şifrələmə açarları izolyasiya.

10) Konfiqurasiya profilləri (fraqmentlər)

Prometheus (ölçülər 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 nümunəsi):
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 (psevdokod):
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
Proqram qeydləri (stdout JSON):
python log. info("gw_timeout", extra={"route":"/pay","code":502,"trace_id":get_trace_id()})

11) Data/ETL və axın

Məlumatlar üçün SLI: təzəlik (max lag), tamlıq (rows vs expectation), «keyfiyyət» (validatorlar/duplicatlar).
Alertlər: pəncərə keçidi, konsumer gecikməsi, DLQ böyüməsi.
Korrelyasiya: 'run _ id', 'dataset _ urn', lineage hadisələri; payplayns üçün izlər (batch/partition üçün span).
Kafka/NATS: metrik prodüser/konsumer, lag/imtina; headers izləri (o cümlədən 'traceparent').

12) Profil və eBPF (əlavə siqnal)

Aşağı səviyyəli isti CPU/alloc/IO yolları; hadisə profilləri.
eBPF-telemetriya (şəbəkə gecikmələri, DNS, sistem zəngləri) 'trace _ id '/PID ilə əlaqələndirilir.

13) Müşahidə testləri

Siqnalların müqaviləsi: CI-yə metrik/etiket/histoqramların ixracının yoxlanılması.
Synthetic probes: RUM ssenariləri/xarici SLI üçün simulyasiya müştərilər.
Chaos/Fire drills: asılılığın söndürülməsi, deqradasiya - alertlərin və növbətçilərin necə reaksiya verdiyinə baxın.
Prod Smoke: Yeni end nöqtələrinin metrik və izləri olduğunu post-deploy yoxlama.

14) Dəyəri və həcminə nəzarət

Siqnal/əmr üzrə büdcələr; dashboard «cost per signal».
Büdcə altında kardinallıq (cardinality SLO), yeni etiketlərə limitlər.
Downsampling, məlumat sinifləri, «soyuq» arxivlər və audit üçün WORM.

15) Əməliyyat və SLO müşahidə platforma

SLO platformaları: 99. 9% uğurlu ingestlər; metrik indeksə qədər gecikmə ≤ 30 s, log ≤ 2 dəq, trek ≤ 1 dəq.
Platformanın alertləri: enjest laqası, damcıların böyüməsi, imza/şifrələmə xətası, buferlərin aşması.
DR/HA: multi-zonallıq, replikasiya, konfiqurasiya/qaydaların ehtiyat surətləri.

16) Çek vərəqləri

Məhsuldan əvvəl:
  • Hər yerdə 'trace _ id '/' span _ id'; sxemi ilə JSON-log.
  • Histoqramlarla RED/USE metrikası; exemplar → trass.
  • Tail-sampling daxildir; 5xx/p99 = 100% qaydaları.
  • Simptomlara görə alertlər + Runibuki; sakit saat/anti-flap.
  • PII dezinfeksiyaedicilər; at rest/in transit şifrələmə; Audit üçün WORM.
  • Həcm/kardinallıq üçün retensiyalar və büdcələr.
Əməliyyat:
  • Aylıq Alert Review (səs-küy/dəqiqlik), eşik sazlama.
  • Error budget hesabatı və görülən tədbirlər (fichfries, hardening).
  • Kritik yollar üçün dashboard/log/trass örtüklərinin yoxlanılması.
  • Təlim hadisələr və runbook yeniləmə.

17) Runbook’и

RCA: p99/pay artımı

1. 'checkout' üçün RED dashboard açın.
2. exemplar → yavaş trek → «dar span» (məsələn, 'gateway. call`).
3. 'trace _ id' → vasitəsilə qeydləri açın.
4. RPS-in geri qaytarılması/limiti, asılılıq sahiblərini xəbərdar edin.
5. Sabitləşmədən sonra - RCA, optimallaşdırma biletləri, oynatma testi.

Məlumatlarda anomaliya (DWH):

1. SLI «təravət» qırmızı → cob track → failing addım.

2. Broker lag/DLQ, bağlayıcı səhvləri yoxlayın.

3. status kanalı vasitəsilə istehlakçıları (BI/məhsul) xəbərdar reprocess başlayın.

18) Tez-tez səhvlər

Sxem olmadan və 'trace _ id' olmadan qeydlər. Araşdırmalar xeyli uzanır.
simptomlar əvəzinə infrastruktur alertlər. Paging «süd» gedir.
Metriklərin sonsuz kardinallığı. Xərclərin partlaması və qeyri-sabitlik.
Bütün marşrutlar 100% təşkil edir. Bahalı və lazım deyil; ağıllı sempleme daxil edin.
PII/log sirləri. Sanitizatorları və «qırmızı siyahıları» daxil edin.
«Dilsiz» fiçlər. Metrik/trass/log olmadan yeni kod.

19) FAQ

S: Xam log mətnini saxlamaq lazımdırmı?
A: Bəli, lakin retensiya və arxiv ilə; alert və SLO üçün kifayət qədər aqreqat var. Audit - WORM-də.

S: Yollar üçün nə seçmək lazımdır - head və ya tail sampling?
A: Kombinasiya: əsas örtük üçün head-probabilistic + səhvlər və anomaliyalar üçün tail-rules.

S: Xüsusi metrika və texniki əlaqə necə?
A: Ümumi 'trace _ id' və biznes etiketləri ('route', 'tenant', 'plan'), eləcə də məhsul hadisələri (dönüşümlər) ilə yollara korrelyasiya.

S: Alertlərdə boğulmamaq üçün necə?
A: Simptomlara görə döymək, səssiz saatlar, deduplikasiya, qruplaşma, SLO prioritetləşdirmə və hər bir alert üçün default sahibi.

Əlaqəli materiallar:
  • «Audit və dəyişməz jurnallar»
  • «Transit/At Rest şifrələmə»
  • «Sirlərin menecmenti»
  • «Məlumatların mənşəyi (Lineage)»
  • «Privacy by Design (GDPR)»
  • «Webhook çatdırılma zəmanətləri»
Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.