GH GambleHub

Gözlemlenebilirlik: günlükler, metrikler, izler

Gözlemlenebilirlik: günlükler, metrikler, izler

1) Neden ihtiyacınız var

Gözlemlenebilirlik - Bir sistemin durumu hakkında planlanmamış soruları cevaplama yeteneği. Üç ana sinyale dayanır:
  • Metrikler, SLI/SLO ve semptom uyarısı için kompakt agregalardır.
  • İzler - uçtan uca sorgu zincirleri.
  • Günlükler - soruşturma ve denetimler için ayrıntılı olaylar.

Amaç: Hızlı RCA, önleyici uyarılar ve bir hata bütçesi içinde yönetilen güvenilirlik.

2) Mimarlık ilkeleri

Tek bağlam: attığımız her yerde 'trace _ id', 'span _ id', 'tenant _ id', 'request _ id', 'user _ agent', 'client _ ip _ hash'.
Standartlar: SDK/aracılar için OpenTelemetry (OTel), JSON log formatı (kanonik, şema ile).
Semptomlar> nedenler: CPU tarafından değil, kullanıcı semptomlarına göre uyarı (gecikme/hatalar).
Sinyal iletişimi: "trace _ id'tarafından belirli günlüklere" örneklemelere "" metrikten ".
Güvenlik ve gizlilik: Günlüklerde PII maskeleme, transit/dinlenme sırasında şifreleme, değişmez denetim günlükleri.
Çoklu kiracılık: ad alanlarının/anahtarların/politikaların ayrılması.

3) Sinyal taksonomisi ve şemaları

3. 1 Metrikler

Hizmetler için RED (Rate, Errors, Duration) ve altyapı için USE (Utilization, Saturation, Errors).
Типы: sayaç, ölçü, histogram/özet. Gecikme için, sabit kovalarla histogram.
Exemplars: "sıcak" histogram kutularındaki 'trace _ id'e referans.

Metriklerin mini şeması (mantık. 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 İzler

Span = 'name', 'start/end', 'attributes', 'events', 'status'ile işlem.
Tolere edilebilirlik için W3C İzleme Bağlamı.
Örnekleme: temel (kafa) + dinamik (kuyruk) + "önem" kuralları (hatalar, yüksek p95).

3. 3 Günlükleri

Sadece yapılandırılmış JSON; düzeyler: HATA AYıKLAMA/BİLGİ/UYARI/HATA.
Gerekli alanlar 'ts _ utc', 'level', 'message', 'trace _ id', 'span _ id', 'tenant _ id', 'env', 'service', 'region','host ',' labels {} '.
Yasak: sırlar, belirteçler, PAN, şifreler. PII - yalnızca tokenize/maskelenmiş.

Bir günlük dizesi örneği (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) Toplama ve taşıma

Agent/exporters (daemonset/sidecar) - veri yolu/giriş düğümü (TLS/mTLS) üzerinde bir tampon - sinyal deposu.
Gereksinimler: Geri basınç, geri alma, veri tekilleştirme, kardinalite kısıtlaması (etiketler!), "Günlük fırtınalarına" karşı koruma.

Metrikler: OTLP ile çekme (Prometheus uyumlu) veya itme.
İzler: OTLP/HTTP (gRPC), toplayıcıdaki kuyruk örnekleyicileri.
Günlükler: yerel koleksiyon (dergi/docker/stdout) - ayrıştırıcı - normalleştirici.

5) Depolama ve saklama (katmanlı)

Metrikler: Sıcak TSDB 7-30 gün (alt örnekle), daha uzun bir süre için toplanır (90-365 gün).
İzler: 1-7 gün tam, daha sonra "önemli" hizmetlerin toplamları/aralıkları; dizinleri 'hizmet', 'durum', 'hata' üzerinde saklayın.
Günlükler: sıcak indeks 7-14 gün, sıcak 3-6 ay, 1-7 yıla kadar arşiv (uyumluluk). Denetim - WORM.

Maliyet optimizasyonu: altörnekleme, satışlarda DEBUG filtreleme, etiket kotaları, parçalar için örnekleme.

6) SLI/SLO, uyarı ve görev

SLI: kullanılabilirlik (% başarılı istekler), gecikme süresi (p95/p99), 5xx paylaşımı, veri tazeliği, başarılı işlerin paylaşımı.
SLO: SLI'da hedef (örn. 99. %9 başarılı ≤ 400 ms).
Hata bütçesi: 0. 1 % "hata payı" - kurgu/deney kuralları.

Belirtilerle uyarı (örnek):
  • '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`.
  • Silo uyarıları (CPU/Disk) - yalnızca yardımcı olarak, çağrı yapmadan.

7) Sinyal korelasyonu

Metrik "kırmızı'dır - örneğe tıklayın - belirli bir 'trace _ id' -" yavaş "yayılma alanına bakın - günlükleri aynı 'trace _ id'ile açın.
Sürümlerle korelasyon: 'version','image _ sha ',' feature _ flag 'nitelikleri.
Veri/ETL için: 'dataset _ urn', 'run _ id', linke bağlantı (ilgili makaleye bakın).

8) Örnekleme ve kardinalite

Metrikler: etiketleri kısıtlayın ('user _ id', 'session _ id' olmadan); kayıt sırasında kota/geçerlilik.
İzler: Kafa örneğini (girişte) ve kuyruk örneğini (toplayıcıda) kurallarla birleştirin: "5xx, p99, hatalar - %100 olan her şey".
Günlükleri: seviyeleri ve kısma; Sık tekrarlanan hatalar için - olayları toplama (tekilleştirme anahtarı).

Örnek kuyruk örneklemesi (kavramsal olarak 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) Güvenlik ve gizlilik

Transit/At Rest: şifreleme (TLS 1. 3, AEAD, KMS/HSM).
PII/sırlar: sevkiyat, tokenizasyon, maskeleme öncesi dezenfektanlar.
Erişim: ABAC/RBAC okumak için; Üreticilerin/okuyucuların/yöneticilerin rollerinin ayrılması.
Denetim: Günlüklere/izlere erişimin değişmeyen günlüğü; dışa aktarma - şifreli biçimde.
Çoklu kiracılık: politikalarla ad alanları/kiracı etiketleri; Şifreleme anahtarı yalıtımı.

10) Yapılandırma profilleri (parçalar)

Prometheus (HTTP metrikleri + uyarı):
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. Kurallar. Yaml (örnek KIRMIZI):
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 (sözde kod):
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
Uygulama günlükleri (stdout JSON):
python log. info("gw_timeout", extra={"route":"/pay","code":502,"trace_id":get_trace_id()})

11) Veri/ETL ve akış

Veri için SLI: tazelik (maksimum gecikme), eksiksizlik (sıra vs beklenti), "kalite" (doğrulayıcılar/kopyalar).
Uyarılar: pencere atlama, tüketici gecikmesi, DLQ büyümesi.
Korelasyon: 'run _ id', 'dataset _ urn', soy olayları; Boru hatları için izler (parti/bölüm başına yayılma alanı).
Kafka/NATS: üretici/tüketici ölçütleri, gecikme/başarısızlık; Başlıklara göre izler ('traceparent' dahil).

12) Profilleme ve eBPF (ek sinyal)

Düşük seviyeli sıcak yollar CPU/alloc/IO; olay başına profiller.
'Trace _ id'/PID'ye bağlı eBPF telemetrisi (ağ gecikmeleri, DNS, sistem çağrıları).

13) Gözlemlenebilirlik testi

Sinyal Sözleşmesi - Metriklerin/etiketlerin/histogramların CI'ya aktarılmasını kontrol eder.
Sentetik problar: Harici SLI'ler için RUM senaryoları/simüle edilmiş istemciler.
Kaos/Yangın tatbikatları: bağımlılıkları devre dışı bırakma, bozulma - uyarıların ve görevlilerin nasıl tepki verdiğine bakarız.
Prod'da Duman: Dağıtım Sonrası, yeni uç noktaların metrikleri ve izleri olup olmadığını kontrol edin.

14) Maliyet ve hacim kontrolü

Sinyal/komut ile bütçeler; Gösterge tablosu "sinyal başına maliyet".
Bütçe altındaki kardinalite (kardinalite için SLO), yeni etiketlerdeki sınırlar.
Denetim için altörnekleme, veri sınıfı sunumları, soğuk arşivler ve WORM.

15) Gözlemlenebilirlik platformunun çalışması ve SLO'su

Platform SLO: 99. Başarılı alımların %9'u; Metrik indekste gecikme ≤ 30 s, günlükler ≤ 2 dakika, izler ≤ 1 dakika.
Platform uyarıları: enjeksiyon gecikmesi, düşme büyümesi, imza/şifreleme hatası, arabellek taşması.
DR/HA: çoklu alan, çoğaltma, yapılandırma/kural yedeklemeleri.

16) Kontrol listeleri

Satmadan önce:
  • Her yerde 'trace _ id'/' span _ id' atılır; JSON bir diyagramla kayıt yapar.
  • RED/USE metrikleri histogramlarla; Örnek - hizalama.
  • Kuyruk örneklemesi etkin; 5xx/p99 kuralları = %100.
  • Belirtilere göre uyarılar + Runybooks; Sessiz saatler/anti-flep.
  • PII dezenfektanları; Denetim için durgun/transit WORM'de şifreleme.
  • Retentions ve hacimler/kardinalite için bütçeler.
Operasyon:
  • Aylık uyarı incelemesi (gürültü/doğruluk), ayar eşikleri.
  • Hata bütçe raporu ve alınan eylemler (fichfreeze, sertleştirme).
  • Kritik yollar için gösterge tablosu/günlük/iz kaplamalarının kontrolü.
  • Eğitim olayları ve runbook güncellemeleri.

17) Runbook'и

RCA: p99/maaş zammı

1. 'Checkout' için RED panosunu açın.
2. Exemplar'a git - yavaş bir parça -'dar bir alan "ortaya çıkar (örn. 'Gateway. Çağrı ').
3. Günlükleri 'trace _ id' ile açın - zaman aşımlarını/geri yüklemeleri görüntüleyin.
4. Geri alma özelliğini/RPS sınırını etkinleştirin, bağımlılık sahiplerini bilgilendirin.
5. Stabilizasyondan sonra - RCA, optimizasyon biletleri, oynatma testi.

Verilerdeki anomali (log DWH):

1. SLI "tazelik" kırmızı - pist işi - başarısız saha.

2. Broker/DLQ günlüğünü, konektör hatalarını kontrol edin.

3. Yeniden işleme başlayın, tüketicileri (BI/ürün) durum kanalıyla bilgilendirin.

18) Sık yapılan hatalar

Şemasız ve 'trace _ id' olmadan günlükler. Soruşturmalar zaman zaman erteleniyor.
Belirtiler yerine altyapı ile ilgili uyarılar. Çağrı "süt içine" gider.
Metriklerin sınırsız kardinalitesi. Maliyet patlaması ve istikrarsızlık.
Tüm parçalar %100. Pahalı ve gereksiz; Akıllı örneklemeyi etkinleştirin.
PII/günlüklerdeki sırlar. Sterilizatörler ve kırmızı listeler ekleyin.
"Sessize Alma" özellikleri. Metrikler/izler/günlükler olmadan yeni kod.

19) SSS

S: Günlüklerin ham metnini saklamam gerekiyor mu?
C: Evet, ancak saklama ve arşivlerle; Uyarılar ve SLO'lar için, toplamlar yeterlidir. Denetim - WORM'de.

S: Parçalar için ne seçilir - kafa veya kuyruk örneklemesi?
A: Birleştirmek: basecoat için baş-olasılık + hatalar ve anomaliler için kuyruk kuralları.

S: Kullanıcı metriklerini ve teknik metrikleri nasıl bağlayabilirim?
C: Genel 'trace _ id've iş etiketleri (' rota ',' kiracı ',' plan ') ve ayrıca parçalarla korelasyon gösteren ürün etkinlikleri (dönüşümler) aracılığıyla.

S: Alarmlarda boğulmamak nasıl?
C: Belirtileri yendi, sessiz saatler, veri tekilleştirme, gruplama, SLO önceliklendirme ve uyarı başına varsayılan olarak sahip girin.

İlgili malzemeler:
  • "Denetim ve değişmez günlükler"
  • "Transit/Dinlenme Şifrelemesinde"
  • "Gizli yönetim"
  • "Veri Kökeni (Lineage)"
  • "Tasarıma Göre Gizlilik (GDPR)"
  • "Webhook teslimat garantisi"
Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.