Tempah Konsultasi Hantar Tiket

Menguasai Pemerhatian dengan Prometheus, Grafana dan OpenTelemetry

Artikel ini membimbing senario sebenar membina pemerhatian hujung-ke-hujung untuk kluster Kubernetes menggunakan Prometheus, Grafana dan OpenTelemetry, merangkumi gejala, diagnosis, arahan penggunaan, kawalan risiko, pengembalian dan pengesahan.

Menguasai Pemerhatian dengan Prometheus, Grafana dan OpenTelemetry
Observability 7min 37 paparan 2026-07-12
KubernetesSREPrometheusGrafanaOpenTelemetryPemerhatian

Senario

Kluster Kubernetes platform e-dagang mengalami kependaman dan ralat berselang dalam pengeluaran. Pengguna melaporkan muat halaman perlahan, tetapi metrik CPU dan memori kelihatan normal. Pasukan SRE perlu mencari punca dengan cepat.

Gejala

  • Masa respons aplikasi meningkat dari 200ms ke 2s
  • Kadar ralat melonjak dari 0.1% ke 5%
  • Penggunaan sumber kluster rendah (CPU 30%, memori 50%)
  • Tiada anomali ketara dalam log

Diagnosis

Pemantauan sedia ada hanya meliputi metrik infrastruktur, tiada penjejakan teragih dan konteks perniagaan. Kita perlukan OpenTelemetry untuk penjejakan peringkat permintaan, Prometheus untuk metrik, dan Grafana untuk visualisasi bersatu.

Arahan Penggunaan

1. Gunakan Pengumpul OpenTelemetry

# otel-collector-daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: otel-collector
  namespace: observability
spec:
  selector:
    matchLabels:
      app: otel-collector
  template:
    metadata:
      labels:
        app: otel-collector
    spec:
      containers:
      - name: otel-collector
        image: otel/opentelemetry-collector-contrib:0.88.0
        ports:
        - containerPort: 4318
          name: otlp-http
        - containerPort: 4317
          name: otlp-grpc
        - containerPort: 8888
          name: metrics
        volumeMounts:
        - name: config
          mountPath: /etc/otelcol-contrib/config.yaml
          subPath: config.yaml
      volumes:
      - name: config
        configMap:
          name: otel-collector-config

2. Konfigurasi ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: otel-collector-config
  namespace: observability
data:
  config.yaml: |
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    processors:
      batch:
        timeout: 1s
        send_batch_size: 1024
    exporters:
      otlp:
        endpoint: "jaeger-collector.observability:4317"
        tls:
          insecure: true
      prometheus:
        endpoint: "0.0.0.0:8889"
        namespace: "app"
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [otlp]
        metrics:
          receivers: [otlp]
          processors: [batch]
          exporters: [prometheus]

3. Konfigurasi Pengikisan Prometheus

# prometheus-scrape-config.yaml
scrape_configs:
- job_name: 'otel-collector'
  static_configs:
  - targets: ['otel-collector.observability:8889']
- job_name: 'kubernetes-pods'
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    action: keep
    regex: true
  - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
    action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
    target_label: __address__

4. Gunakan Jaeger (untuk storan jejak)

kubectl create namespace observability
helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
helm install jaeger jaegertracing/jaeger -n observability --set storage.backend=elasticsearch --set storage.elasticsearch.host=elasticsearch-master.observability

5. Gunakan Grafana

helm repo add grafana https://grafana.github.io/helm-charts
helm install grafana grafana/grafana -n observability --set datasources."datasources\.yaml".apiVersion=1 --set datasources."datasources\.yaml".datasources[0].name=Prometheus --set datasources."datasources\.yaml".datasources[0].type=prometheus --set datasources."datasources\.yaml".datasources[0].url=http://prometheus-server.observability --set datasources."datasources\.yaml".datasources[0].access=proxy --set datasources."datasources\.yaml".datasources[0].isDefault=true

Kawalan Risiko

  • Kadar pensampelan: Tetapkan kadar pensampelan yang munasabah (cth., 10%) untuk mengelakkan beban prestasi daripada penjejakan penuh.
  • Label berkardinaliti tinggi: Elakkan menggunakan nilai unik seperti ID pengguna dalam label jejak atau metrik.
  • Perubahan konfigurasi: Sahkan dalam persekitaran ujian sebelum menolak ke pengeluaran.
  • Had sumber: Tetapkan had CPU/memori untuk Pengumpul untuk mengelakkan OOM.

Pengembalian

  1. Padam DaemonSet: kubectl delete -f otel-collector-daemonset.yaml
  2. Alihkan konfigurasi pengikisan Prometheus dan mulakan semula Prometheus.
  3. Padam carta helm Jaeger dan Grafana: helm delete jaeger -n observability && helm delete grafana -n observability
  4. Pulihkan konfigurasi pemantauan asal untuk aplikasi.

Pengesahan

  1. Jejak: Akses UI Jaeger, cari permintaan, lihat butiran span.
  2. Metrik: Kuari app_request_duration_seconds dalam Prometheus.
  3. Papan pemuka: Import papan pemuka yang telah ditetapkan dalam Grafana, sahkan kependaman dan kadar ralat menurun.
  4. Hujung ke hujung: Hantar permintaan ujian secara manual, perhatikan jejak dan metrik dikemas kini secara masa nyata.

Bila untuk Hantar Tiket OpsGlobal

  • Tiada data dilaporkan selepas menggunakan Pengumpul.
  • Prometheus tidak dapat mengikis sasaran.
  • Peningkatan luar biasa dalam penggunaan sumber kluster.
  • Perlu bantuan pakar untuk mengoptimumkan strategi pensampelan atau mereka bentuk papan pemuka tersuai.

Senario Penggunaan

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

Latar Belakang Masalah

Artikel ini membimbing senario sebenar membina pemerhatian hujung-ke-hujung untuk kluster Kubernetes menggunakan Prometheus, Grafana dan OpenTelemetry, merangkumi gejala, diagnosis, arahan penggunaan, kawalan risiko, pengembalian dan pengesahan.

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