Tempah Konsultasi Hantar Tiket

Membina Kebolehcerapan Bersatu: Panduan Praktikal dengan OpenTelemetry, Prometheus, dan Grafana dalam Kubernetes

Post blog ini mengupas senario dunia sebenar integrasi OpenTelemetry, Prometheus, dan Grafana untuk menyelesaikan masalah kependaman tinggi dalam kluster Kubernetes. Merangkumi simptom, diagnosis, arahan, kawalan risiko, rollback, pengesahan, dan bila perlu menghantar tiket OpsGlobal.

Membina Kebolehcerapan Bersatu: Panduan Praktikal dengan OpenTelemetry, Prometheus, dan Grafana dalam Kubernetes
Observability 6min 36 paparan 2026-07-06
KubernetesOpenTelemetryPrometheusGrafanaKebolehcerapan

Senario

Sebuah platform e-dagang menjalankan mikroservis di Kubernetes. Pengguna melaporkan muatan halaman lambat. Pasukan operasi melihat kependaman p99 melonjak dari 200ms ke 2s, tetapi Prometheus dan Grafana sedia ada hanya mengumpul metrik CPU/memori. Mereka memutuskan untuk menggunakan OpenTelemetry (OTel) untuk penjejakan teragih, metrik, dan log.

Simptom

  • Papan pemuka Grafana menunjukkan kependaman p99 >1.5s untuk beberapa perkhidmatan.
  • Log aplikasi tiada ralat, tetapi respons HTTP 503 meningkat.
  • Penggera Prometheus "HighLatencyCritical" diaktifkan.

Diagnosis

Persediaan semasa kekurangan perkaitan antara panggilan perkhidmatan. - Prometheus mengikis metrik asas melalui kube-state-metrics. - Tiada pustaka penjejakan dalam aplikasi. - Tiada pengagregatan log berpusat.

Kesimpulan: Ketiadaan penjejakan teragih menghalang pengenalpastian kesesakan.

Penyelesaian: Integrasi OpenTelemetry

  1. Gunakan OpenTelemetry Collector sebagai sidecar pada setiap pod perkhidmatan, mengumpul jejak dan mengeksport ke Prometheus (melalui tulis jauh) dan Grafana Tempo.
  2. Instrument kod aplikasi dengan OTel SDK (auto atau manual).
  3. Konfigurasi Grafana dengan sumber data Prometheus dan Tempo; buat papan pemuka untuk butiran jejak.

Arahan

Langkah 1: Guna OTel Collector (Sidecar)

Buat ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: otel-collector-conf
data:
  config.yaml: |
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    exporters:
      prometheus:
        endpoint: 0.0.0.0:8889
      otlp:
        endpoint: tempo-sample:4317  # anggap perkhidmatan Tempo
    service:
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
        metrics:
          receivers: [otlp]
          exporters: [prometheus]

Masukkan sidecar ke Deployment:

spec:
  template:
    spec:
      containers:
      - name: myapp
        image: myapp:latest
        env:
        - name: OTEL_EXPORTER_OTLP_ENDPOINT
          value: http://localhost:4317
      - name: otel-collector
        image: otel/opentelemetry-collector-contrib:latest
        args: ["--config=/conf/config.yaml"]
        volumeMounts:
        - name: otel-collector-config-vol
          mountPath: /conf
        ports:
        - containerPort: 4317
        - containerPort: 4318
        - containerPort: 8889
      volumes:
      - name: otel-collector-config-vol
        configMap:
          name: otel-collector-conf

Langkah 2: Konfigurasi Tulis Jauh Prometheus

Dalam konfigurasi Prometheus:

remote_write:
  - url: http://prometheus-server:9090/api/v1/write

Nota: Gunakan titik akhir tulis jauh khusus dalam pengeluaran.

Langkah 3: Persediaan Grafana

Tambah sumber data Prometheus (http://prometheus-server:9090) dan Tempo (http://tempo:3100). Buat Papan Pemuka: query span, contoh kind=SPAN_KIND_SERVER.

Kawalan Risiko

  • Kesan prestasi: Sidecar menggunakan ~50MB memori setiap satu. Untuk aplikasi throughput tinggi, kurangkan kadar persampelan (cth 10%).
  • Keselamatan data: Data jejak mungkin mengandungi maklumat sensitif. Gunakan pemproses OTel untuk menapis/mengaburkan.
  • Keserasian versi: Pastikan versi OTel Collector sepadan dengan SDK.

Pelan Rollback

Jika masalah timbul: 1. Gulung balik Deployment aplikasi: kubectl rollout undo deployment/myapp. 2. Padam ConfigMap OTel: kubectl delete configmap otel-collector-conf. 3. Alih keluar sumber data baharu dalam Grafana; pulihkan papan pemuka lama.

Pengesahan

  1. Periksa jejak: Dalam Grafana Explore, query jejak – seharusnya melihat rangkaian panggilan lengkap.
  2. Metrik: Prometheus mempunyai metrik tersuai seperti service_latency_seconds.
  3. Ujian beban: Gunakan hey untuk simulasi trafik; kependaman p99 seharusnya normal.

Bila Hantar Tiket OpsGlobal

  • Hadapi ralat konfigurasi OTel Collector (cth data hilang).
  • Perlu bantuan mengoptimumkan strategi pensampelan atau menskala storan Tempo.
  • Perundingan reka bentuk Papan Pemuka Grafana.

Pakar SRE kami respons dalam masa 15 minit, menyediakan penyelesaian kebolehcerapan hujung-ke-hujung.

Senario Penggunaan

Sesuai untuk pasukan yang menyelesaikan isu Observability dan memerlukan aliran kerja yang jelas.

Latar Belakang Masalah

Post blog ini mengupas senario dunia sebenar integrasi OpenTelemetry, Prometheus, dan Grafana untuk menyelesaikan masalah kependaman tinggi dalam kluster Kubernetes. Merangkumi simptom, diagnosis, arahan, kawalan risiko, rollback, pengesahan, dan bila perlu menghantar tiket 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.

Tiket Hubungi WhatsApp Konsultasi