Altyapı izleme
Altyapı İzleme
1) Hedefler ve çerçeve
Altyapı izleme, bir platformun sağlığı, performansı ve kullanılabilirliği hakkında bir sinyal sistemidir. Yapması gerekenler:- Kullanıcı çökmeden önce uyar (erken algılama).
- Kök nedenin teşhisini verin (semptomdan nedene).
- Sürümlerin ve otomatik geri dönüşlerin SLO geçişini destekleyin.
- Olay sonrası analizi besleyin (veri olarak kanıt).
Destekleyici ilkeler: Tasarımla gözlemlenebilir, daha az gürültü - daha fazla sinyal, reaksiyonların otomasyonu, tek bir gerçek paneli.
2) Gözlemlenebilirlik üçlüsü
Zaman çizelgeleri - Oran/Talep/Hata/Doygunluk (KULLANIM/KIRMIZI)
Günlükler: bağlamı olan olay detayı; Hiçbir sır/PII içermez.
İzler: nedensel ilişkileri olan dağıtılmış vakalar.
- Profilleme (CPU/heap/lock/io), sistem seviyesi için eBPF.
- Olaylar/denetim (K8s Olaylar, yapılandırmalardaki/sırlardaki değişiklikler).
3) SLI/SLO/SLA - kaliteli dil
SLI: 'availability', 'error _ rate', 'p95 _ latency', 'queue _ lag'.
SLO (hedef): "Başarılı istekler ≥ 99. 30 günde yüzde 9"
Hata Bütçesi: tolerans; Otomatik durdurma sürümleri için kullanılır.
SLO Örneği (YAML):yaml service: "api-gateway"
slis:
- name: success_rate query_good: sum(rate(http_requests_total{status!~"5.."}[5m]))
query_total: sum(rate(http_requests_total[5m]))
slo: 99. 9 window: 30d
4) Katmanları izleme haritası
1. Ana bilgisayarlar/VM/düğümler: CPU/Load/Steal, RAM/Swap, Disk IOPS/Latency, Dosya sistemi.
2. Ağ/LB/DNS: RTT, paketler/damlalar, backlog, SYN/Timeout, health-probs.
3. Kubernetes/Orchestrator: API sunucusu, etcd, denetleyiciler, zamanlayıcı; bölmeler/düğümler, bekleyen/tahliye edilen, kısma, kube-olayları.
4. Hizmetler/konteynerler: KIRMIZI (Oran/Hatalar/Süre), hazırlık/canlılık.
5. Veritabanları/önbellekler: QPS, kilit bekleme, çoğaltma gecikmesi, arabellek isabeti, yavaş sorgular.
6. Kuyruklar/otobüsler: tüketici gecikmesi, istek/ölü harf, verim.
7. Depolama/bulut: S3/Blob hataları ve gecikme, sağlayıcılardan 429/503.
8. Çevre sınırları: WAF/Oran Sınırları, rota ile 4xx/5xx, CDN.
9. Sentetikler: HTTP komut dosyası kontrolleri (deposit/output), TLS/sertifikalar.
10. Ekonomi/kapasite: hizmet başına maliyet, kullanım, boşluk.
5) Whitebox и Blackbox
Whitebox: hizmet içindeki ihracatçılar/SDK'lar (Prometheus, OpenTelemetry).
Blackbox: Farklı bölgelerden harici örnekler (kullanılabilirlik, gecikme, TLS sona ermesi).
Combine: "sign outside" + "diagnosis inside".
yaml modules:
https_2xx:
prober: http http:
method: GET preferred_ip_protocol: "ip4"
6) Kubernetes: anahtar sinyaller
Кластер: 'apiserver _ request _ total', 'etcd _ server _ has _ leader', etcd fsync.
Узлы: 'container _ cpu _ cfs _ throttled _ seconds _ total', 'node _ pressure'.
Pedler: Beklemede/CrashLoopBackOff, OOMKilled, yeniden başlatılır.
Planlar/Limitler: İstekler vs Limitler, PodDisruptionBudget, HPA/VPA.
Network: NetworkPolicy düşer, conntrack tükenmesi.
Дашборды: "Küme sağlığı", "İş yükü doygunluğu", "En iyi erroring hizmetleri".
7) DB ve kuyruklar
PostgreSQL/MySQL: çoğaltma gecikmesi, kilitlenmeler, yavaş sorgu %, denetim noktası I/O.
Redis/Memcached: isabet oranı, tahliyeler, reddedilen bağlantılar.
Kafka/RabbitMQ: tüketici gecikmesi, paketlenmemiş, requeue, broker ISR, disk kullanımı.
8) KIRMIZI/KULLANIM metrikleri ve iş korelasyonları
KIRMIZI: 'Oran' (RPS), 'hatalar' (4xx/5xx), 'süre' (p95/p99).
KULLANIM (kaynaklar için): Kullanım, Doygunluk, Hatalar.
Ürünle ilişkilendirin: para yatırma/ödeme başarısı, dolandırıcılık bayrakları, dönüşüm - bunlar kanarya serbest bırakılması için "muhafızlar'dır.
9) Uyarı yapısı
Tier-1 (sayfa): SLO'yu etkileyen olaylar (kullanılabilirlik, 5xx, gecikme, küme kritik bileşen hatası).
Tier-2 (bilet): kapasite düşüşü, SLO'yu etkilemeden hata artışı.
Tier-3 (bilgilendirme): eğilimler, tahmin kapasitesi, süresi dolan sertifikalar.
Eskalasyon kuralları: sessizlik zamanı/yinelenen sıkıştırma, çağrı üzerine dönüşler, güneşi takip etme.
Alertmanager rotaları örneği:yaml route:
group_by: ["service","severity"]
receiver: "pager"
routes:
- match: { severity: "critical" }
receiver: "pager"
- match: { severity: "warning" }
receiver: "tickets"
10) Prometheus Kuralı Örnekleri
10. 1 5xx SLO eşiği ile hatalar
yaml groups:
- name: api rules:
- alert: HighErrorRate expr:
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m])) > 0. 005 for: 10m labels: { severity: "critical", service: "api-gateway" }
annotations:
summary: "5xx > 0. 5% 10m"
runbook: "https://runbooks/api-gateway/5xx"
10. 2 Yazma hatası bütçesi (çoklu pencere yazma)
yaml
- alert: ErrorBudgetBurn expr:
(1 - (
sum(rate(http_requests_total{status!~"5.."}[1m])) /
sum(rate(http_requests_total[1m]))
)) > (1 - 0. 999) 14 for: 5m labels: { severity: "critical", slo: "99. 9" }
annotations: { summary: "Fast burn >14x for 5m" }
10. 3 Sistem Doygunluğu (CPU Azaltma)
yaml
- alert: CPUThrottlingHigh expr: rate(container_cpu_cfs_throttled_seconds_total[5m]) > 0. 1 for: 10m labels: { severity: "warning" }
annotations: { summary: "CPU throttling >10%" }
11) Günlükler: toplama, normalleştirme, tutma
Standardizasyon: JSON günlükleri: 'ts', 'level', 'service', 'trace _ id', 'user/tenant'.
Pipeline: agent (Fluent Bit/Vector) - buffer - index/storage.
Revizyon: PII/kenarında maskeleme sırları.
Saklama: Hızlı depolama sınıfı (7-14 gün), soğuk arşiv (30-180 gün).
Semantik: hata bütçeleri/kullanımdan kaldırılır - ayrı kanallar.
12) Yollar ve OpenTelemetry
Enstrüman giriş noktaları (ağ geçidi), kliyent> servis çağrıları, DB/önbellekler/kuyruklar.
Hızlı gezinme için metrikleri izleme niteliklerine (Örnekler) bağlayın.
Merkezi bir ağ geçidi olarak OTel Collector: filtreleme, örnekleme, seçilen arka uçlara dışa aktarma.
yaml receivers: { otlp: { protocols: { http: {}, grpc: {} } } }
processors: { batch: {}, tail_sampling: { policies: [ { name: errors, type: status_code, status_codes: [ERROR] } ] } }
exporters: { prometheus: {}, otlp: { endpoint: "traces. sink:4317" } }
service:
pipelines:
metrics: { receivers: [otlp], processors: [batch], exporters: [prometheus] }
traces: { receivers: [otlp], processors: [tail_sampling,batch], exporters: [otlp] }
13) Sentetik ve dış kontroller
HTTP iş senaryolarını çalıştırır (giriş, para yatırma, para çekme, satın alma).
TLS/Domain: sertifika terimi/CAA/DNS sağlığı.
Bölgesellik: Kilit ülkelerden/sağlayıcılardan örnekler (yönlendirme/blok listeleri).
Sentetikler, kullanıcı için mevcut değilse, yeşil dahili telemetri ile bile uyarılmalıdır.
14) Profilleme ve eBPF
Sürekli profilleme: sıcak fonksiyonların tanımlanması, kilitler.
EBpf: sistem olayları (syscalls, TCP yeniden iletimleri), minimum yük ile ürün üzerinde.
Profil, zorlamadan (biletler) ve serbest bırakıldıktan sonra regresyonlar için - geri alma sinyali olarak uyarır.
15) Gösterge panoları ve "gerçek paneli"
Minimum set:1. Platforma Genel Bakış: SLI/SLO by key services, error-budget, alerts.
2. API RED: Rotaya göre RPS/ERRORS/DURATION.
3. K8s Küme: kontrol düzlemi, узлы, kapasite boşluğu.
4. DB/Cache: lag/locks/slow query %, isabet oranı.
5. Kuyruklar: backlog/lag, fail/retry.
6. Sürüm başına: Önce/sonra metriklerin karşılaştırılması (kanarya pencereleri).
7. FinOps: Ad alanı/hizmet başına maliyet, boşta/büyük boy ресурсы.
16) Olaylar, uyarı gürültüsü ve tırmanma
Veri tekilleştirme - Hizmet/Neden Gruplama, Basamaklı Baskılama
Sessizlik/bakım: sürümler/geçişler her şeyi kırmızıya "boyamamalıdır".
Runbooks: tanılama adımları ve bir geri alma "düğmesi'ile her kritik uyarı.
Postmortem: zaman çizelgesi, öğrendikleri, hangi sinyallerin eklendiği/temizlendiği.
17) İzlemede güvenlik
Kuralları/veri kaynaklarını okumak/düzenlemek için RBAC.
Sırlar: İhracatçı/ajan belirteçleri - Secret Manager aracılığıyla.
İzolasyon: istemci/kiracı metrikleri - ayrı alanlara/sekmelere.
Bütünlük: aracıların/yapıların imzası, GitOps aracılığıyla yapılandırmalar (birleştirme incelemesi).
18) Finans ve Kapasite (FinOps)
Kotalar ve bütçeler; Anormal büyümeye karşı uyarır.
Sağ boyutlandırma: isteklerin/sınırların analizi, CPU/RAM kullanımı, kritik olmayan görevler için spot örnekler.
Performans KPI'ları olarak "talep/kiracı başına maliyet".
19) Anti-desenler
Yalnızca özel SLI'lar olmadan altyapı metrikleri.
100 +'her şey hakkında "uyarır - çağrı üzerine körlük.
Tek kaynak olarak günlükler (metrikler ve izleme olmadan).
Sürüm/inceleme olmadan değiştirilebilir panolar.
Sentetik eksikliği:'her şey yeşil ", ama ön mevcut değildir.
Sürümlerle bir bağlantı yoktur: "X anda ne değişti" sorusuna cevap vermek imkansızdır.
20) Uygulama kontrol listesi (0-60 gün)
0-15 gün
3-5 anahtar hizmet için SLI/SLO tanımlayın.
Temel ihracatçıları/acenteleri etkinleştirin, JSON kayıtlarını standartlaştırın.
Tier-1 uyarılarını yapılandırın (kullanılabilirlik, 5xx, p95).
16-30 gün
Kritik senaryolar için sentetikler ekleyin.
Girdi/kritik hizmetlerde OTel'i etkinleştirin.
Panolar "Serbest bırakma başına've hata bütçesi yakma kuralları.
31-60 gün
Gelişmiş sinyallerle DB/kuyrukları/önbelleği kapatın.
Yüksek CPU hizmetleri için eBPF/profilleme uygulayın.
Kurallar/gösterge panoları/uyarılar için GitOps, düzenli gürültü temizleme.
21) Olgunluk metrikleri
Kilit hizmetlerin SLO kapsamı %95 ≥.
MTTA/MTTR (hedef: dakika/dakika onlarca).
Otomatik işlem veya hızlı geri alma ile kapatılan Tier-1 uyarılarının oranı.
"Kullanışlı "/" gürültülü "uyarıların oranı> 3:1'dir.
Tüm "para" yollarının sentetik kapsamı = %100.
22) Uygulamalar: mini şablonlar
Prometheus - Durum Sınıfına Göre Kullanılabilirlik
yaml
- record: job:http:availability:ratio_rate5m expr: sum(rate(http_requests_total{status!~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
Grafana - kanaryalar için ipucu
expr: histogram_quantile(0. 95, sum(rate(http_request_duration_seconds_bucket{version=~"stable canary"}[5m])) by (le,version))
Alertmanager - görev ve sessizlik
yaml receivers:
- name: pager slack_configs:
- channel: "#oncall"
send_resolved: true inhibit_rules:
- source_match: { severity: "critical" }
target_match: { severity: "warning" }
equal: ["service"]
23) Sonuç
İzleme bir dizi grafik değil, SRE işletim sistemidir: Kalite sözleşmesi olarak SLI/SLO, doğruluk kaynağı olarak metrikler/yollar/günlükler, kontrollü bir sinyal olarak uyarılar, bir "kullanıcı sesi'olarak sentetikler, bir değişim disiplini olarak GitOps. Ana bilgisayardan API'ye tek bir döngü oluşturun, sürümlere ve geri dönüşlere bağlayın - platform öngörülebilir, hızlı ve ekonomiktir.