Senario
Sebuah kluster Kubernetes platform e-dagang mengalami lonjakan kependaman dalam perkhidmatan mikro order-service semasa waktu puncak, dari purata 200ms ke 2s, menyebabkan pesanan tamat masa. Pasukan telah menggunakan Prometheus + Grafana untuk pemantauan dan OpenTelemetry untuk pengesanan teragih.
Gejala
- Papan pemuka Grafana menunjukkan kependaman permintaan HTTP P99 untuk
order-servicemeningkat dari 200ms ke 2s - Penggunaan CPU Pod tidak meningkat dengan ketara, tetapi penggunaan memori semakin meningkat
- Surihan OpenTelemetry mendedahkan titik akhir
/checkoutadalah kesesakan, dengan panggilanpayment-gatewaymengambil 1.5s
Diagnosis
- Buka Grafana, periksa histogram
http_request_duration_secondsuntukorder-serviceuntuk mengesahkan kependaman P99 - Semak penggunaan sumber Pod:
kubectl top pod -n production -l app=order-service; memori semakin meningkat dan menghampiri had OOM - Dalam UI OpenTelemetry (contohnya Jaeger), pilih surihan
/checkout;payment-gatewaymenunjukkan 3 percubaan semula akibat tamat masa - Periksa metrik
payment-gateway: panel Grafana menunjukkan kadar ralat 5% dan kependaman P95 8s
Arahan
# Pertanyaan histogram kependaman (PromQL)
histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket{service="order-service", endpoint="/checkout"}[5m])) by (le))
# Semak sumber Pod
kubectl top pod -n production -l app=order-service
# Lihat 100 log terakhir
kubectl logs --tail=100 -n production deployment/order-service
echo "Pintu pembayaran perlahan; pertimbang pemutus litar"
Kawalan Risiko
- Pastikan amaran pertanyaan perlahan Grafana diaktifkan dan dimaklumkan kepada SRE sebelum perubahan
- Lumpuhkan pemutus litar automatik pada
payment-gatewayuntuk mengelakkan kegagalan berantai - Sandarkan ConfigMap:
kubectl get configmap -n production order-service-config -o yaml > /tmp/order-config-backup.yaml
Gulung Balik
Jika kependaman tidak bertambah baik selepas pembetulan:
kubectl rollout undo deployment/order-service -n production
kubectl rollout status deployment/order-service -n production
Jika konfigurasi berubah, pulihkan:
kubectl apply -f /tmp/order-config-backup.yaml
Pengesahan
- Jalankan ujian beban:
hey -z 30s -c 10 http://order-service.production/checkout - Sahkan Grafana menunjukkan kependaman P99 di bawah 300ms
- Semak surihan OpenTelemetry: panggilan
payment-gatewaydi bawah 500ms - Sahkan tiada log ralat baru
Bila Menghantar Tiket OpsGlobal
- Jika pasukan anda kekurangan pengesanan OpenTelemetry dan memerlukan bantuan penggunaan
- Apabila kegagalan berantai merentas pelbagai perkhidmatan tidak dapat diasingkan
- Untuk konfigurasi penggera lanjutan (contohnya penggera berasaskan SLO)
- Jika analisis kesesakan sumber kluster melebihi keupayaan pasukan
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Observability dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini membimbing anda melalui senario sebenar untuk mendiagnosis lonjakan kependaman mikroperkhidmatan menggunakan Prometheus, Grafana, dan OpenTelemetry, dengan arahan langkah demi langkah, kawalan risiko, dan prosedur gulung balik.
Langkah Penyelesaian
Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.
Contoh Arahan
Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.
Risiko
Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.
Pelan Rollback
Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.
Senarai Serahan
Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.
Perlu bantuan isu teknikal serupa?
Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.