GH GambleHub

Metrikler koleksiyonu: Prometheus, Grafana

Metrikler koleksiyonu: Prometheus, Grafana

1) Amaç ve çerçeve

Metrik döngüsünün görevi, zaman serilerini güvenilir bir şekilde toplamak ve depolamak, RCA, SLO uyarıları ve anlaşılır panolar için hızlı PromQL vermektir. Temel çift: Prometheus (kazıma> mağaza> sorgu) ve Grafana (görselleştirme, uyarılar, sürüm açıklamaları). Uzun depolama ve global sorgu için - Thanos/Cortex/Mimir.

2) Veri modeli ve semantik

Seri = metrik adı + etiket kümesi (anahtar = değer).
Türleri: sayaç, gauge, histogram, özet (prod - daha sık histogram).

Anlambilim:
  • RED (API): 'rate', 'errors', 'duration' (histograms).
  • KULLANIM (ресурсы): Kullanım, Doygunluk, Hatalar (CPU/RAM/Disk/Net).
  • Adlandırma: 'namespace _ subsystem _ metric _ unit' (örneğin, 'http _ server _ requests _ total', 'db _ connections _ current').

Anti-kardinalite: farklı etiket değerlerini en aza indirin (etikette user_id request_id yok).

3) Pozlama ve hizmet keşfi

İhracatçılar: node_exporter, kube-state-metrics, cAdvisor, DB/Queues (postgres_exporter, redis_exporter, kafka_exporter).
Yerel hizmetler: istemci kütüphaneleri (Go/Java/Node/Python) -'/metrikler '.
Hizmet Keşfi: Kubernetes, EC2/ASG, Consul, statik dosyalar.

Temel 'prometheus. yml '(snippet):
yaml global:
scrape_interval: 15s evaluation_interval: 15s scrape_configs:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs: [{ role: node }]
relabel_configs:
- action: labelmap regex: __meta_kubernetes_node_label_(.+)
- job_name: 'apps'
kubernetes_sd_configs: [{ role: pod }]
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep regex: "true"
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
target_label: __metrics_path__
regex: (.+)
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port]
target_label: __address__
regex: (.+)
replacement: $1
Bölmelerin ek açıklamaları:
yaml prometheus. io/scrape: "true"
prometheus. io/path: /metrics prometheus. io/port: "8080"

4) Histogramlar ve gecikme süresi

SLO'larınız için açık kovalar kullanın:
  • Web/API: '[10ms, 25,50,100,200,400,800,1600]'
  • Ödemeler/ödemeler: 5-10'lara kuyruk ekleyin.
PromQL p95:
promql histogram_quantile(0. 95,
sum by (le) (rate(http_request_duration_seconds_bucket[5m]))
)
Exemplars ile (etkinse):
promql histogram_quantile(0. 95,
sum by (le, route) (rate(traces_spanmetrics_duration_bucket{route="/withdraw"}[5m]))
)

5) Kayıt kuralları

Ağır istekleri azaltın, SLI'yi standartlaştırın.

yaml groups:
- name: api_sli interval: 30s rules:
- record: job:http:success_ratio:rate5m expr: sum(rate(http_requests_total{status!~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
- record: job:http:duration_p95:5m expr: histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))

6) SLO ve uyarılar (çoklu pencere yanması)

SLO 99. %9 Başarılı Requests/30d.

yaml groups:
- name: slo_burn rules:
- alert: ErrorBudgetBurnHighShort expr: (1 - job:http:success_ratio:rate5m) > (1 - 0. 999) 14 for: 5m labels: { severity: critical }
annotations: { summary: "Fast burn >14x for 5m" }

- alert: ErrorBudgetBurnHighLong expr: (1 - job:http:success_ratio:rate5m) > (1 - 0. 999) 6 for: 1h labels: { severity: critical }
annotations: { summary: "Long burn >6x for 1h" }
Alertmanager (basitleştirilmiş):
yaml route:
receiver: pager group_by: ["service"]
receivers:
- name: pager slack_configs:
- channel: "#oncall"
send_resolved: true

7) Etiket-hijyen ve ekonomi

Etiket adları kararlı ve standarttır: 'hizmet', 'env', 'bölge', 'rota', 'kod', 'sürüm'.
Kardinaliteyi sınırla: 'Rota'ile metrikler' http 'desenini kullanmalıdır. route '(tam URL değil).
Mantık örneklemesi - izde; Metriklerde - user_id yok.
Sürüm özellikleri ('hizmeti. ') sürümü eski/yeni sürümleri karşılaştırmak için kullanışlıdır.

8) Ölçeklendirme ve HA

Prometheus - dikey olarak ve kazıma hedefiyle:
  • İki Prometheus (A/B) aynı hedefleri kazır (HA - uyarılar çoğaltılır).
  • Thanos: Her Prometheus için Sidecar, global sorgular ve uzun süreli depolama (S3/GCS) için Store + Query.
  • Alternatif: Cortex/Mimir (uzaktan yazma, çoklu kiracılık, yatay ölçeklendirme).
Uzaktan yazma (örnek):
yaml remote_write:
- url: https://mimir. example. com/api/v1/push basic_auth: { username: tenantA, password: $MIMIR_TOKEN }
Yerel TSDB Tutma:
yaml
--storage. tsdb. retention. time=15d
--storage. tsdb. max-block-duration=2h

9) Grafana: gösterge panoları, uyarılar, ek açıklamalar

Standart panolar:

1. Platforma Genel Bakış (SLO/RED, hata bütçesi).

2. API by Route (RPS/5xx/p95, karşılaştırma 'sürümü').

3. K8s Küme/Düğümler (kontrol düzlemi, doygunluk).

4. DB/Önbellek/Kuyruklar (lag/locks/hit ratio/backlog).

5. Serbest Bırakma Başına (CI'dan önce/sonra, serbest bırakma ek açıklamaları).

Grafana Uyarı: PromQL'deki tetikleyiciler, çağrı dönüşleri, sessiz zamanlar "serbest bırakma pencereleri".

Ek Açıklamalar: CI, 'commit','image'ile bir sürüm olayı ekler. Tag ', boru hattına bir gönderme.

10) Kubernetes: ne ölçülür

Denetim düzlemi: 'apiserver _ request _ total', etcd lideri/fsync, zamanlayıcı gecikmesi.
İş yükleri: yeniden başlatır, 'container _ cpu _ cfs _ throttled _ seconds _ total', OOM, Bekleyen/Tahliye, PDB ihlalleri.
Ağ: düşer, conntrack, 'kube-proxy' hataları.
Kotalar/limitler: İstekler vs Limitler, HPA/VPA, düğüm doygunluğu.

11) DB/önbellekler/kuyruklar: anahtar sinyaller

PostgreSQL/MySQL: 'connections', 'locks', 'deadlocks _ total', 'xact _ commit/rollback', replication lag.
Redis: isabet oranı, 'tahliyeler', gecikme 'anlık _ ops _ per _ sec'.
Kafka/RabbitMQ: tüketici gecikmesi, paketlenmemiş, ISR, disk kullanımı.

PromQL örnekleri:
promql
Queue backlog sum by (topic) (kafka_consumergroup_lag)> 1000

Postgres replication lag max(pg_replication_lag_seconds) > 2

12) Güvenlik ve çoklu kiracılık

Prometheus/Grafana RBAC, veri kaynağı-permishens.
Giriş/bileşenler arasında TLS/mTLS zinciri.
Kiracı izolasyonu: Cortex/Mimir'de ayrı Prometheus veya kiracı etiketi; seri ve talep limitleri.
Uyarılar/bildirimlerdeki sırlar - yasaktır (PII değil bilet kimliği kullanın).

13) Sürümler ve otomatik geri dönüşlerle entegrasyon

SLO kuralları - AnalysisTemplate (Argo Rollouts) veya CI-gate.
Yanma uyarıları tetiklendiğinde - duraklatma/geri alma kanaryası; log/annotation - serbest bırakma için bir bağlantı.
Stabil ve kanarya versiyonlarının "versiyon" etiketi ile karşılaştırılması.

14) Tipik hatalar (anti-desenler)

Etiketlerin kontrolsüz kardinalitesi (user_id, url. tam, dinamik anahtarlar).
Prod karıştırın ve 'env' label olmadan aynı kümede sahne.
KIRMIZI/KULLANIM olmadan sadece ölçer; P95/p99 histogramları olmadan.
SLO'ya bağlanmadan donanımda uyarılar - gürültü.
Kayıt kurallarının eksikliği - üretim olaylarında'ağır "istekler.
Hiçbir sürüm ek açıklaması yoktur - değişiklikleri ve bozulmayı karşılaştırmak zordur.

15) Uygulama kontrol listesi (0-45 gün)

0-10 gün

Node/kube-state/cAdvisor ihracatçıları; Hizmetlerde'/metrikler '.
Temel KIRMIZI/KULLANIM panoları; Standart histogram kovaları.
CI'dan yayın ek açıklamaları ekleyin.

11-25 gün

SLI için kayıt kuralları; Çoklu pencere yakma uyarıları.
HA Prometheus (çift kazıma), GitOps yapılandırmalarının yedeklenmesi.
Alertmanager: rotalar/sessiz mod/çağrı üzerine rotasyonlar.

26-45 gün

Uzaktan yazma Thanos/Cortex/Mimir, uzun süreli depolama.
Kardinalite optimizasyonu, seri limitleri, istekler.
SLO-gating sürümleri ve otomatik geri alma entegrasyonu.

16) Olgunluk metrikleri

Kilit hizmetler için RED/USE kapsamı %95 ≥.
Kayıt kuralları nedeniyle'ağır "PromQL <2 s (p95) gerçekleştirmek için ortalama süre.
Yararlı/gürültülü uyarıların oranı> 3:1'dir.
Kontrol altında kardinalite: Küme başına <10M aktif partiler, sivri yok.
Yayınların %100'ü Grafana'da açıklanmıştır ve önce/sonra ilişkili metrikler.

17) Yararlı snippet'ler

Versiyona göre kararlı vs kanarya karşılaştırması

promql histogram_quantile(0. 95,
sum by (le, version) (rate(http_request_duration_seconds_bucket{version=~"stable    canary"}[5m]))
)

5xx Rotaya Göre Hatalar

promql topk(5,
sum by (route) (rate(http_requests_total{status=~"5.."}[5m]))
)

konteyner CPU doygunluğu

promql rate(container_cpu_cfs_throttled_seconds_total[5m]) > 0. 1

Parçalarla metrik ilişkisi (Örnekler etkin)

promql sum (rate (http_request_duration_seconds_bucket[5m])) by (le) # clickable to the track

18) Sonuç

Prometheus + Grafana metrikler için fiili standarttır. Anlambilim ve disiplin kazanır: KIRMIZI/KULLANIM, düzgün etiketler, SLO için histogramlar, kayıt kuralları ve SLO uyarıları. HA ve uzun vadeli depolama, sürüm ek açıklamaları ve otomatik geri dönüşlerle entegrasyon ekleyin; satışlarda karar vermenize yardımcı olan hızlı, ölçeklenebilir ve ekonomik bir metrik döngünüz olur.

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.