Middle
Mikroservislerin doğru çalıştığını nasıl belirleyebiliriz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bunu izleme, günlük kaydı ve izleme yoluyla belirleyebilirsiniz.
İzleme
- Sağlık metrikleri: Erişilebilirlik durumu (uptime), yanıt gecikmesi, hata oranı, kaynak kullanımı (CPU, bellek, disk G/Ç).
- İş metrikleri: Başarılı işlemler sayısı, kullanıcı etkinliği.
- Araçlar: Prometheus, Grafana, Nagios, Zabbix.
Günlük Kaydı (Logging)
- Merkezi günlük toplama: Tüm mikroservislerden günlüklerin toplanması, hataların, arızaların ve anormal davranışların bulunması.
- Yapılandırılmış günlükler: JSON veya diğer ayrıştırılabilir yapıdaki günlükler, analizi kolaylaştırmak için.
- Araçlar: ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Loki.
İzleme (Distributed Tracing)
- İstek takibi: Bir isteğin birçok mikroservis üzerinden izlenmesi, dar boğazların ve hataların tespiti.
- Görselleştirme: İsteğin akışını diyagram şeklinde gösterme.
- Araçlar: Jaeger, Zipkin, OpenTelemetry.
Hazırlık ve canlılık kontrolleri (Readiness and Liveness Probes)
- Canlılık kontrolleri (Liveness probes): Konteynerin çalışıp çalışmadığını belirler. Kontrol başarısız olursa, kubelet konteyneri yeniden başlatır.
- Hazırlık kontrolleri (Readiness probes): Konteynerin trafik almaya hazır olup olmadığını belirler. Kontrol başarısız olursa, kubelet trafiği bu pod'a yönlendirmez.
Otomatik testler
- Birim ve entegrasyon testleri: Bireysel bileşenlerin ve etkileşimlerinin doğru çalıştığını doğrular.
- Yük testleri: Sistem performansını yüksek yük altında değerlendirir.
- Kaos mühendisliği (Chaos Engineering): Sistem arızalarını simüle ederek dayanıklılığını test eder.
Hatalı çalışma belirtileri:
- Günlüklerde veya izleme araçlarında hata sıklığında artış.
- Yanıt gecikmesinde artış.
- İşlem kapasitesinde azalma.
- Anormal kaynak kullanımı.
- İş süreçlerinde arızalar.
Kubernetes'te hazırlık kontrolü ayarına örnek:
# Konteyner için hazırlık kontrolü tanımı
readinessProbe:
httpGet:
path: /health # Hazır olma durumunu döndüren HTTP uç noktası yolu
port: 8080 # Servis portu
initialDelaySeconds: 5 # İlk kontrol öncesi gecikme
periodSeconds: 10 # Kontroller arasındaki süre