Senario
Pasukan anda menjalankan mikrosistem di Kubernetes dan telah menggunakan OpenTelemetry Collector untuk mengumpulkan jejak (traces), metrik dan log. Prometheus mengikis metrik dari Collector, dan Grafana memaparkan papan pemuka. Namun, anda perasan peningkatan masa tindak balas untuk perkhidmatan tertentu, metrik hilang dalam panel Grafana, dan ralat kerap dalam jejak teragih.
Gejala
- Pengguna melaporkan kependaman respons API melebihi 5 saat.
- Panel Grafana untuk "Kependaman Permintaan" menunjukkan data kosong atau tidak lengkap.
- Jejak span dalam Jaeger atau Grafana Tempo menunjukkan status ralat.
- Sasaran Prometheus menunjukkan
upsebagai 0 atau kegagalan separa.
Diagnosis
- Periksa Status OpenTelemetry Collector: Gunakan
kubectl get pods -n observabilityuntuk melihat sama ada Pod Collector berjalan. Periksa log:kubectl logs -n observability <collector-pod> --tail=50untuk sebarang ralat eksport atau isu konfigurasi. - Sahkan Konfigurasi Pengikisan Prometheus: Periksa
scrape_configsdalam konfigurasi Prometheus untuk memastikan titik akhir Collector disertakan. Jalankanpromtool check config /etc/prometheus/prometheus.ymljika ada. - Uji Titik Akhir Metrik Collector: Curl titik akhir /metrics Collector untuk mengesahkan metrik format Prometheus terdedah. Contoh:
kubectl exec -n observability <collector-pod> -- curl localhost:8888/metrics | head - Periksa Sumber Data Grafana: Pastikan sumber data Prometheus dikonfigurasi dengan betul dan uji sambungan.
- Analisis Jejak: Dalam Grafana Explore, gunakan sumber data Tempo atau Jaeger untuk menanyakan jejak terkini, fokus pada span ralat dan span induk.
Arahan (Contoh)
# Lihat status Pod Collector
kubectl get pods -n observability -l app=otel-collector
# Lihat log Collector
LOG=$(kubectl logs -n observability --tail=100 -l app=otel-collector)
echo "$LOG" | grep -i error
# Curl metrik dari Collector
METRIK=$(kubectl exec -n observability deploy/otel-collector -- curl -s localhost:8888/metrics)
echo "$METRIK" | grep -E "(otelcol|go_|process_)" | head -20
# Periksa konfig Prometheus dengan promtool (jika dipasang)
promtool check config /etc/prometheus/prometheus.yml 2>&1 || true
# Query status sasaran Prometheus
kubectl port-forward svc/prometheus-server 9090:80 -n monitoring &
curl -s http://localhost:9090/api/v1/targets | jq '.data.activeTargets[] | {job: .labels.job, health: .health}'
Kawalan Risiko
- Tiru isu dalam persekitaran bukan pengeluaran sebelum membuat perubahan.
- Sandarkan
config.yamlCollector sebelum mengubahnya. - Gunakan bendera
--web.enable-lifecyclePrometheus untuk muat semula panas, tetapi lebih baik kemas kini melalui ConfigMap dalam pengeluaran. - Jangan edit konfigurasi Prometheus atau Collector secara langsung; gunakan kawalan versi (Git).
Langkah Undur
- Jika perubahan pada konfig Collector menyebabkan masalah, pulihkan ConfigMap sebelumnya:
kubectl apply -f backup-otel-collector-config.yaml, kemudian reboot Pod. - Untuk konfig Prometheus, rollback ConfigMap dan cetus muat semula:
kubectl exec -n monitoring prometheus-server -- kill -HUP 1. - Dalam Grafana, gunakan sejarah versi papan pemuka untuk kembali ke konfigurasi panel atau sumber data sebelumnya.
Pengesahan
- Pastikan semua Pod berjalan dan sedia:
kubectl get pods -n observability. - Periksa sasaran Prometheus semuanya UP.
- Muat semula papan pemuka Grafana; metrik sepatutnya dipaparkan dengan betul.
- Lakukan ujian jejak hujung ke hujung: gunakan pelanggan contoh untuk menghantar permintaan dan lihat jejak lengkap dalam Grafana Tempo.
Bila Menghantar Tiket OpsGlobal
Hantar tiket jika: - Pemeriksaan konfigurasi asas tidak menyelesaikan isu, dan anda mengesyaki masalah keserasian antara Collector dan Prometheus. - OpenTelemetry Collector terus dimulakan semula atau menunjukkan kebocoran memori. - Sambungan sumber data Grafana berjaya tetapi tiada data muncul, sedangkan Prometheus mempunyai data. - Anda perlu mengkonfigurasi ciri lanjutan (contohnya, dasar persampelan, pengeksport berbilang hujung) dan kurang berpengalaman.
Semasa menghantar, sertakan: - Log Pod yang relevan dan output deskribe. - Fail konfigurasi untuk Prometheus dan Collector (tanpa rahsia). - Model JSON papan pemuka Grafana. - Langkah khusus untuk menghasilkan semula isu.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Observability dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Dalam persekitaran mikrosistem Kubernetes, mengintegrasikan Prometheus, Grafana dan OpenTelemetry meningkatkan kebolehcerapan. Artikel ini membimbing melalui senario sebenar, mendiagnosis isu data hilang dan kependaman, dengan arahan, kawalan risiko, langkah undur, dan bila melibatkan 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.