Senario
Platform e-dagang dengan mikroservis di Kubernetes mengalami respons perlahan (P99 naik ke 2s). Pemantauan sedia ada hanya menunjukkan CPU/memori, tanpa pandangan peringkat perkhidmatan. Pasukan menggunakan OpenTelemetry untuk instrumentasi bersatu, Prometheus untuk metrik, dan Grafana untuk papan pemuka.
Gejala
- Latensi API Pesanan P99 meningkat dari 200ms ke 2s
- Tiada peningkatan kadar ralat, tetapi beberapa permintaan tamat masa
- Tiada korelasi antara metrik dan jejak permintaan
Diagnosis
Tambah instrumentasi automatik OpenTelemetry Java ke perkhidmatan. Gunakan OpenTelemetry Collector untuk menerima data OTLP, mengeksport metrik ke Prometheus dan jejak ke Jaeger/Tempo.
Arahan
1. Sebarkan OpenTelemetry Collector
kubectl apply -f - <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: otel-collector-conf
data:
config.yaml: |
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
exporters:
prometheus:
endpoint: "0.0.0.0:8889"
logging:
loglevel: debug
service:
pipelines:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheus, logging]
---
apiVersion: v1
kind: Service
metadata:
name: otel-collector
spec:
selector:
app: otel-collector
ports:
- name: otlp-grpc
port: 4317
targetPort: 4317
- name: otlp-http
port: 4318
targetPort: 4318
- name: prometheus
port: 8889
targetPort: 8889
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: otel-collector
spec:
replicas: 1
selector:
matchLabels:
app: otel-collector
template:
metadata:
labels:
app: otel-collector
spec:
containers:
- name: otel-collector
image: otel/opentelemetry-collector-contrib:0.96.0
args: ["--config=/conf/config.yaml"]
ports:
- containerPort: 4317
- containerPort: 4318
- containerPort: 8889
volumeMounts:
- name: otel-collector-config
mountPath: /conf
volumes:
- name: otel-collector-config
configMap:
name: otel-collector-conf
EOF
2. Konfigurasi Prometheus Scrape
Kemas kini prometheus.yml:
scrape_configs:
- job_name: 'otel-collector'
scrape_interval: 10s
static_configs:
- targets: ['otel-collector:8889']
3. Papan Pemuka Grafana
Tambah sumber data Prometheus, import papan pemuka (contohnya OTel Metrics Mixin).
Kawalan Risiko
- Sebarkan Collector dalam staging dahulu
- Tetapkan had sumber: CPU 200m, memori 512Mi
- Aktifkan pemproses batch
- Pantau log Collector melalui eksport logging
Pengembalian
- Padamkan Collector:
kubectl delete deployment otel-collector - Kembalikan konfigurasi scrape Prometheus
- Alih keluar instrumentasi dari aplikasi
Pengesahan
- Halaman sasaran Prometheus menunjukkan status UP
- Grafana menunjukkan metrik seperti
http_server_duration_ms - Jejak dalam UI Jaeger dengan span yang betul
Bila Menghantar Tiket OpsGlobal
- Instrumentasi tersuai menyebabkan kemerosotan prestasi atau kehilangan data
- Perlu bantuan untuk talaan metrik kardinaliti tinggi (cth. label user_id)
- Konfigurasi exemplar kompleks untuk korelasi metrik-jejak
- Collector menjadi bottleneck atau kehabisan memori
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Observability dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini menerangkan senario sebenar menggunakan OpenTelemetry untuk instrumentasi bersatu, Prometheus untuk storan metrik, dan Grafana untuk papan pemuka, lengkap dengan arahan, kawalan risiko, pengembalian, dan bila untuk menghubungi OpsGlobal.
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.