Senario
Sebuah platform e-dagang mengalami kelewatan permintaan yang berselang-seli pada kluster Kubernetes. Pemantauan tradisional (CPU, memori) gagal mengaitkan jejak aplikasi dengan metrik infrastruktur. Pasukan SRE memutuskan untuk menggunakan OpenTelemetry untuk menyatukan jejak, metrik, dan log, dan menggabungkannya dengan Prometheus dan Grafana untuk membina platform pemerhatian yang menyeluruh.
Gejala
- Pengguna melaporkan muat halaman lambat, tetapi penggunaan nod Prometheus kelihatan normal.
- Papan pemuka Grafana menunjukkan lonjakan kependaman P99 untuk beberapa perkhidmatan, tetapi tidak mempunyai konteks punca utama.
- Sukar untuk menentukan sama ada isu itu adalah pertanyaan pangkalan data lambat atau kegemparan rangkaian.
Diagnosis
- Sahkan pod OpenTelemetry Collector:
kubectl get pods -n opentelemetry. - Periksa status sasaran Prometheus: Dalam UI Prometheus, pastikan semua sasaran UP.
- Uji sambungan sumber data Grafana: Pergi ke konfigurasi Grafana dan uji sumber data Prometheus.
- Semak log OpenTelemetry Collector untuk ralat eksport:
kubectl logs -n <namespace> <collector-pod>.
Arahan
# Pasang OpenTelemetry Operator
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm upgrade --install opentelemetry-operator open-telemetry/opentelemetry-operator --namespace opentelemetry --create-namespace
# Deploy OpenTelemetry Collector (konfigurasi tersuai)
kubectl apply -f - <<EOF
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel-collector
namespace: opentelemetry
spec:
config: |
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
batch:
exporters:
prometheus:
endpoint: 0.0.0.0:8889
namespace: otel
service:
pipelines:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheus]
EOF
# Konfigurasikan Prometheus untuk mengikis metrik OpenTelemetry
# Dalam konfigurasi Prometheus tambah:
# - job_name: 'otel-collector'
# static_configs:
# - targets: ['otel-collector.opentelemetry:8889']
# But semula Prometheus atau guna Helm upgrade
helm upgrade --install prometheus prometheus-community/prometheus --namespace monitoring --set extraScrapeConfigs="- job_name: 'otel-collector'
static_configs:
- targets: ['otel-collector.opentelemetry:8889']"
Kawalan Risiko
- Pengasingan ruang nama: Gunakan ruang nama berasingan untuk OpenTelemetry, Prometheus, dan Grafana (cth., opentelemetry, monitoring) bagi mengelakkan konflik sumber.
- Had sumber: Tetapkan had CPU/memori untuk OpenTelemetry Collector (cth., 500m/512Mi) bagi mengelakkan lonjakan trafik menyesakkan kluster.
- Sandaran konfigurasi: Sebelum mengubah suai Prometheus atau Grafana, sandarkan volum Prometheus sedia ada dan pangkalan data Grafana.
- Penggunaan kanari: Sahkan konfigurasi OpenTelemetry dalam kluster bukan pengeluaran sebelum digulir ke pengeluaran.
Pemulihan
# Pemulihan OpenTelemetry Collector ke versi sebelumnya
kubectl delete -f otel-collector.yaml # jika menggunakan fail
helm rollback opentelemetry-operator 0 # guna Helm rollback ke revisi sebelumnya
# Pemulihan konfigurasi Prometheus
kubectl delete configmap prometheus-server -n monitoring # mungkin perlu dibina semula
# atau helm rollback prometheus 1
Pengesahan
- Sahkan Pod OpenTelemetry Collector sedang berjalan:
kubectl get pods -n opentelemetry -l app.kubernetes.io/name=opentelemetry-collector. - Periksa sasaran Prometheus: Lawati UI Prometheus, cari job="otel-collector" dan pastikan status UP.
- Dalam Grafana, import papan pemuka contoh (cth., "OpenTelemetry Collector Metrics") dan lihat data siri masa.
- Simulasikan pertanyaan lambat dengan menyuntik kependaman ke perkhidmatan ujian; perhatikan metrik OTel dikemaskini dalam masa nyata.
Bila Menghantar Tiket OpsGlobal
- Langkah diagnosis di atas tidak menyelesaikan isu, dan bantuan pakar diperlukan untuk menyesuaikan konfigurasi OpenTelemetry Collector.
- Pengikisan Prometheus gagal walaupun dasar rangkaian betul, menunjukkan isu kluster yang mendasari.
- Papan pemuka Grafana tersuai diperlukan untuk mengaitkan jejak, metrik, dan log, tetapi pasukan kekurangan pengalaman.
- Kemerosotan prestasi selepas penggunaan kanari dalam pengeluaran; pengembalian segera dan analisis punca diperlukan.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Observability dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Pelajari cara menyediakan timbunan pemerhatian hujung-ke-hujung menggunakan OpenTelemetry untuk pengumpulan data, Prometheus untuk penyimpanan metrik, dan Grafana untuk visualisasi, dengan langkah penyelesaian masalah praktikal untuk pasukan SRE.
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.