GH GambleHub

Gözlenebilirlik yığını

1) Neden bir gözlemlenebilirlik yığınına ihtiyacınız var

Hızlı RCA ve azaltılmış MTTR: semptomdan dakikalar içinde neden olur.
SLO yönetimi: hataların/gecikmelerin ölçümü, hatalı bütçeyle uyarı.
Serbest bırakma kontrolü: kanarya hesaplamaları, metriklere göre otomatik geri alma.
Güvenlik ve Denetim: Erişim Yolları, Anomaliler, Yasal Bekletme.
FinOps şeffaflığı: depolama maliyeti/istekleri, SLO başına maliyet.

Metodolojiler: Altın Sinyaller (gecikme/trafik/hatalar/doygunluk), KIRMIZI, KULLANIM.

2) Temel yığın mimarisi

Katmanlara Göre Bileşenler

Koleksiyon/ajanlar: Ihracatçılar, Promtail/Fluent Bit, OTel SDK/Auto-Instr, Blackbox-problar.
Шина/ingest: Prometheus remote_write - Mimir/Thanos, Loki distribütörleri/ingesters, Tempo/Jaeger ingesters.
Depolar: nesne S3/GCS/MinIO (uzun soğuk), SSD (sıcak satırlar).
Sorgular/görselleştirme: Grafana (paneller, SLO widget'ları), Kibana (ELK ise).
Yönetim: Alertmanager/Graphana uyarıları, servis kataloğu, RBAC, gizli yönetici.

Dağıtım modelleri

Yönetilen (Grafana Cloud/bulut hizmetleri) - hacimlerde hızlı ve daha pahalı.
K8s'da kendi kendine barındırılan - tam kontrol, ihtiyaç duyulan operasyon ve FinOps.

3) Veri standartları: birleşik "gözlemlenebilirlik şeması"

3. 1 Metrikler (Prometheus/OpenMetrics)

Gerekli etiketler: 'env', 'region', 'cluster', 'namespace', 'service', 'version', 'tenant' (if multi-tenant), 'endpoint'.
Adlandırma: 'snake _ case', sonekler '_ total', '_ seconds', '_ bytes'.
Çubuk grafikler: sabit 'kovalar' (SLO odaklı).
Kardinalite: etiketlere 'user _ id', 'request _ id' eklemeyin.

3. 2 Günlükleri

Biçim: JSON; Gerekli alanlar 'ts', 'level', 'service', 'env', 'trace _ id', 'span _ id', 'msg'.
PII: Aracı üzerinde maskeleme (PAN, belirteçler, e-posta, vb.).
Loki etiketleri: sadece düşük kardinalite ('app', 'namespace', 'level', 'tenant').

3. 3 Parça

OTel semantiği: 'hizmet. Name ',' dağıtım. Çevre ',' db. sistem ',' http. '.
Örnekleme: p99 hedef yolları 'always _ on'/kuyruk örneklemesidir, gerisi'ana/oran'dır.
ID gömme: günlüklere ve metriklere (etiketler/alanlar) 'trace _ id/span _ id' tuşuna basın.

4) M-L-T korelasyonu (Metrikler/Günlükler/İzler)

Uyarı grafiğinden (metrik) - 'trace _ id'ile filtrelenmiş günlükler - belirli bir iz.
İzlemeden (yavaş yayılma alanı), yayılma alanı aralığındaki belirli bir arka ucun metrikleri için bir istek -.
Panellerde drilldown düğmeleri: Değişken yerine koyma ile "günlüklere've" izlere "('$ env', '$ service', '$ trace _ id').

5) OpenTelemetri Toplayıcı: Referans Boru Hattı

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) Uyarı: SLO ve çoklu yanma

Fikir: alertim "CPU> %80" seviyesinde değil, Hata Bütçesi tüketiminde.

PromQL şablonları:
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
Gecikme (histogramlar):
promql latency_p95 =
histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))

7) Panolar: klasör yapısı

00_Overview - platform: SLO, p95, 5xx %, kapasite, aktif olaylar.
10_Services - hizmetlere göre: RPS, p95/p99, hatalar, sürümler (ek açıklamalar).
20_Infra - K8s/nodes/story/network, etcd, kontrolörler.
30_DB/Queues - PostgreSQL/Redis/Kafka/RabbitMQ.
40_Edge/DNS/CDN/WAF - giriş, LB, WAF kuralları.
50_Synthetic - çalışma süresi ve başsız komut dosyaları.
60_Cost/FinOps - Depolama, Sorgulama, Sıcak/Soğuk, Tahmin.

Her panel: açıklama, birimler, sahibi, runbook bağlantısı, drilldown.

8) Günlükler: LogQL atölyesi

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) Parçalar: TraceQL ve püf noktaları

En yavaş açıklıkları bulun:

{ service. name = "api" }      duration > 500ms
Yavaş sorguda yavaş SQL sandviç:

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

10) Sentetikler ve çalışma süresi

Blackbox-exporter: ≥3 bölgelerden/ASN'den HTTP/TCP/TLS/DNS örnekleri.
Başsız: oturum açma/para yatırma zamanlanmış komut dosyaları.
Quorum uyarıları: bölgesel ≥2 bir hata görürse tetiklenir.
Durum sayfası: otomatik güncellemeler + manuel yorumlar.

11) Depolama ve saklama

Metrikler: sıcak 7-30 gün (hızlı sıralar), altörnekleme/kayıt kuralları, soğuk nesne depolama (aylar).
Günlükler: 3-7 gün boyunca sıcak, daha sonra bir dizin ile S3/GCS (Loki yığın deposu/ELK ILM).
İzler: 3-7 gün 'always _ on' + örnekler için uzun süreli depolama (kuyruk örneklenmiş/reddedilmiş).

Öneriler:
  • Boyut ve zamanda rollover; Talepler için bütçe (kotalar/limitler).
  • Prod/stage ve güvenlik verileri için ayrı politikalar.

12) Çoklu kiracılık ve erişimler

'Kiracı'/' ad alanı'/Boşluklar, dizin desenleri ve çözünürlüklerle ayırın.
Faturalandırma için kaynakları etiketleyin: 'kiracı', 'hizmet', 'ekip'.
Panoları/uyarıları içe aktarın - belirli ekiplerin alanlarında.

13) Güvenlik ve uyumluluk

Ajanlardan arka uçlara TLS/mTLS, özel sağlık için HMAC.
Okumak/yazmak, tüm istekleri ve uyarıları denetlemek için RBAC.
Kenarda PII sürümü; Kayıtlardaki sırların yasaklanması; DSAR/Yasal Bekletme.
İzolasyon: Hassas alanlar için ayrı kümeler/nymspaces.

14) FinOps: gözlemlenebilirlik maliyeti

Yerken etiketlerin ve mantığın kardinalitesini azaltırız (isteklerde değil).
Kritik yollar için örneklemeyi izleme + hedef her zaman açık.
Ağır toplama işlemleri için altörnekleme/kayıt kuralları.
Soğuk nesneye nadir erişim arşivleniyor.
Метрики: 'storage _ cost _ gb _ day', 'query _ cost _ hour', 'cost _ per _ rps', 'cost _ per _ 9'.

15) CI/CD ve gözlemlenebilirlik testleri

CI'de linting metrikleri/günlükleri: kardinalitenin "patlamasının" yasaklanması, histogramların/birimlerin doğrulanması.
Gözlemlenebilirlik sözleşme testleri: gerekli metrikler/log alanları, ara katman yazılımlarında 'trace _ id'.
Kanarya: grafiklerde bültenlerin ek açıklamaları, SLO-otomatik geri alma.

16) Örnekler: hızlı sorgular

Hataya göre en iyi uç noktalar:
promql topk(10, sum by (route) (rate(http_requests_total{status=~"5.."}[5m])))
CPU kısma:
promql sum by (namespace, pod) (rate(container_cpu_cfs_throttled_seconds_total[5m])) > 0
Kafka lag:
promql max by (topic, group) (kafka_consumergroup_lag)

Günlüklerden parçalara (Loki - Tempo): Tempo UI/panosuna bir bağlantı olarak 'trace _ id'i geçin.

17) Yığın kalitesi: kontrol listesi

  • Kabul edilen metrik/log/izleme şemaları ve birimleri.
  • günlüklerde ve metriklerde 'trace _ id', panellerden delinme.
  • Çırpmadan çok yanmalı SLO uyarıları (quorum/multi-window).
  • Aşağı örnekleme, talep kotaları, adım/aralık sınırları.
  • Saklama ve depolama sınıfları belgelenir ve uygulanır.
  • RBAC/Denetim/PII revizyonu dahil.
  • Panolar: sahibi, runbook'lar, ≤2 -3 ekranlar, hızlı yanıt.
  • FinOps-dashboard (hacimler, maliyet, en iyi konuşmacılar).

18) Uygulama planı (3 yineleme)

1. MVP (2 hafta): Prometheus - Mimir, Loki, Tempo; OTel Toplayıcı; Temel gösterge panoları ve SLO uyarıları; Blackbox örnekleri.
2. Ölçek (3-4 hafta): kuyruk örnekleme, altörnekleme, çok bölgeli alım, RBAC/Spaces, FinOps-gösterge tabloları.
3. Pro (4 + hafta): SLO'da otomatik geri alma, anahtar yolların başsız sentetikleri, Legal Hold, SLO portföyü ve raporlama.

19) Anti-desenler

"SLO'suz güzel grafikler" - eylem yok - fayda yok.
Yüksek kardinalite etiketleri ('user _ id', 'request _ id') - bellek ve maliyet patlaması.
JSON'suz ve 'trace _ id'siz günlükler - korelasyon yok.
Belirtiler yerine kaynak uyarıları - gürültü ve çağrı üzerine tükenmişlik.
Saklama politikalarının eksikliği - kontrolsüz maliyet artışları.

20) Mini-SSS

Ne seçilir: Loki veya ELK?
Karmaşık arama/fasetler için ELK; Loki, grep benzeri senaryolar için daha ucuz ve daha hızlıdır. Genellikle hibrit kullanılır.

Herkesin izlere ihtiyacı var mı?
Evet, en azından kuyruk örneklemeli anahtar yollarda (giriş, ödeme, ödemeler) - bu, RCA'yı önemli ölçüde hızlandırır.

Sıfırdan nasıl başlanır?
OTel Collector - Mimir/Loki/Tempo - temel SLO ve blackbox örnekleri - daha sonra panolar ve yanık uyarıları.

Toplam

Gözlemlenebilirlik yığını bir dizi farklı araç değil, tutarlı bir sistemdir: tekdüze veri standartları - M-L-T korelasyonu - SLO uyarısı ve sentetikler - güvenlik ve FinOps. Şematikleri, etiket disiplinini ve elde tutmayı yakalayın, OTel'i bağlayın, sondaj ve otomatik geri alma ekleyin - ve anlaşılır bir maliyetle yönetilebilir güvenilirlik elde edersiniz.

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!

Telegram
@Gamble_GC
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.