Senario
Aplikasi mikroperkhidmatan anda digunakan di Kubernetes dan mengalami kependaman serta peningkatan ralat yang sekejap. Anda kini menggunakan Prometheus dan Grafana untuk metrik, tetapi kekurangan penjejakan teragih dan perkaitan log, menjadikan analisis punca memakan masa.
Gejala
- Masa tindak balas API berubah-ubah dan kadar ralat meningkat secara berkala.
- Papan pemuka yang berbeza menunjukkan metrik yang bercanggah dan sukar dikaitkan.
- Log menunjukkan ralat tetapi tidak dapat dikesan kembali kepada permintaan dan laluan kod tertentu.
Diagnosis
- Metrik menunjukkan lonjakan penggunaan CPU dalam beberapa perkhidmatan tanpa log ralat yang sepadan.
- Data jejak hilang, menghalang visualisasi laluan permintaan.
- Log dan metrik mempunyai offset masa, menjadikan perkaitan tidak berkesan.
Perintah
- Pasang Operator dan Pengumpul OpenTelemetry:
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
- Gunakan konfigurasi Pengumpul OpenTelemetry:
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel-collector
spec:
config: |
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
exporters:
prometheus:
endpoint: "0.0.0.0:8889"
namespace: otel
logging:
service:
pipelines:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheus, logging]
- Konfigurasikan Prometheus untuk mengikis metrik Pengumpul OpenTelemetry:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: otel-collector
spec:
selector:
matchLabels:
app.kubernetes.io/name: otel-collector
endpoints:
- port: metrics
interval: 15s
- Tambah sumber data Prometheus di Grafana dan import papan pemuka sedia ada.
- Instrumen aplikasi anda dengan SDK OpenTelemetry untuk menghantar jejak dan metrik kepada Pengumpul.
Kawalan Risiko
- Sandarkan data Prometheus sedia ada menggunakan API snapshot sebelum penggunaan.
- Hadkan sumber CPU dan memori Pengumpul untuk mengelakkan kesan kepada pengeluaran.
- Laksanakan pensampelan untuk mengurangkan jumlah jejak, contohnya sampel 1 daripada 100 permintaan.
- Sahkan dalam persekitaran ujian kecil terlebih dahulu.
Pengembalian
- Padamkan Operator dan Pengumpul OpenTelemetry:
kubectl delete -f otel-collector.yaml. - Pulihkan konfigurasi Prometheus dengan mengalih keluar ServiceMonitor.
- Mulakan semula Pod yang terjejas untuk melumpuhkan SDK OpenTelemetry.
Pengesahan
- Periksa metrik Prometheus di Grafana untuk metrik otel_*.
- Hantar permintaan ujian dan sahkan jejak di Jaeger atau Zipkin.
- Sahkan log dikaitkan dengan ID jejak melalui agregasi log (contohnya Loki).
Bila Serahkan Tiket OpsGlobal
- Ketidakselarasan data atau kemerosotan prestasi selepas integrasi.
- Pengumpul OpenTelemetry ranap berulang atau OOM.
- Jejak hilang atau konfigurasi pensampelan tidak berfungsi.
- Perlukan bantuan pakar mengoptimumkan saluran paip atau papan pemuka tersuai.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Observability dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Pelajari cara mengintegrasikan Prometheus, Grafana, dan OpenTelemetry untuk pemantauan, penjejakan, dan pengelogan hujung-ke-hujung dalam persekitaran Kubernetes.
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.