Cách push traces lên Bizfly Cloud Observability

Bizfly Cloud Observability dùng service Tempo để quản lý traces bạn có thể push traces bằng các agent hỗ trợ OpenTelemetry Protocol (OTLP), chẳng hạn như Grafana Alloy, Opentelemetry collector

Dưới đây là các bước và ví dụ cấu hình của một số agent để thu thập traces từ 1 application đã tích hợp opentelemetry (có thể thu thập thêm cả metrics, logs) nếu application có tạo ra.

Bước 1. Chuẩn bị

Để push logs lên service Mimir của Bizfly Cloud Observability bạn cần có endpoint và bearer token để authen khi push logs.

  • Bạn có thể có token bằng cách tạo hoặc reset token.
  • Để lấy endpoint cho việc push logs, bạn có thể tham khảo hướng dẫn sau. Ngoài ra bạn cũng cần có sẵn 1 application đã tích hợp opentelemetry để tạo ra các traces.

Bước 2. Cấu hình agent push traces

Ví dụ một số agent

Opentelemetry collector

Cấu hình

Tạo file config.yaml và paste nội dung config sau:

  receivers:
      otlp:
          protocols:
          http:
              endpoint: "0.0.0.0:4318"
          grpc:
              endpoint: "0.0.0.0:4317"

  processors:
      batch:

  exporters:
      loki:
          endpoint: "https://obs-xxxxxxxx-xxxx-xxxx-xxxx.obs.bfcplatform.vn/loki/api/v1/push"
          headers:
          Authorization: "Bearer YOUR_LOGS_TOKEN"
      prometheusremotewrite:
          endpoint: "https://obs-xxxxxxxx-xxxx-xxxx-xxxx.obs.bfcplatform.vn/api/v1/push"
          headers:
          Authorization: "Bearer YOUR_METRICS_TOKEN"
      otlp:
          endpoint: "obs-xxxxxxxx-xxxx-xxxx-xxxx.obs.bfcplatform.vn:443"
          headers:
          Authorization: "Bearer YOUR_TRACES_TOKEN"

  extensions:
      health_check:
      pprof:
          endpoint: :1888
      zpages:
          endpoint: :55679

  service:
      extensions: [health_check, pprof, zpages]
      pipelines:
          traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [otlp]
          metrics:
          receivers: [otlp]
          exporters: [prometheusremotewrite]
          logs:
          receivers: [otlp] 
          exporters: [loki]

Tạo file docker-compost.yaml

Tạo file docker-compost.yaml và paste nội dung config sau:

  version: "3"
  services:
  otel-collector:
      image: otel/opentelemetry-collector-contrib
      volumes:
      - $YOUR_FOLDER/config.yaml:/etc/otelcol-contrib/config.yaml
      ports:
      - 1888:1888 # pprof extension
      - 8888:8888 # Prometheus metrics exposed by the Collector
      - 8889:8889 # Prometheus exporter metrics
      - 13133:13133 # health_check extension
      - 4317:4317 # OTLP gRPC receiver
      - 4318:4318 # OTLP http receiver
      - 55679:55679 # zpages extension
      network_mode: host

Run

docker-compose up -d --build
Grafana Alloy

Install

Tham khảo các cách install Grafana Alloy tại đây

Cấu hình

Tạo file config.alloy và paste nội dung config sau:


  loki.write "grafana_loki" {
      endpoint {
          url = "https://obs-xxxxxxxx-xxxx-xxxx-xxxx.obs.bfcplatform.vn/loki/api/v1/push"
          bearer_token = "YOUR_LOGS_TOKEN"
      }
  }

  prometheus.remote_write "mimir" {
      endpoint {
          url = "https://obs-xxxxxxxx-xxxx-xxxx-xxxx.obs.bfcplatform.vn/api/v1/push"
          bearer_token = "YOUR_METRICS_TOKEN"
      }
  }

  otelcol.receiver.otlp "example" {
      grpc {
          endpoint = "127.0.0.1:4317"
      }

      http {
          endpoint = "127.0.0.1:4318"
      }

      output {
          metrics = [otelcol.processor.batch.example.input]
          logs    = [otelcol.processor.batch.example.input]
          traces  = [otelcol.processor.batch.example.input]
      }
  }

  otelcol.processor.batch "example" {
      output {
          metrics = [otelcol.exporter.prometheus.oltp_mimir.input]
          logs    = [otelcol.exporter.loki.oltp_loki.input]
          traces  = [otelcol.exporter.otlp.oltp_tempo_grpc.input]
      }
  }

  otelcol.exporter.loki "oltp_loki" {
      forward_to = [loki.write.grafana_loki.receiver]
  }

  otelcol.exporter.prometheus "oltp_mimir" {
      forward_to = [prometheus.remote_write.mimir.receiver]
  }


  otelcol.exporter.otlp "oltp_tempo_grpc" {
  client {
      endpoint = "https://obs-30199fb2-e61f-441a-b7ce.staging.obs.bfcplatform.vn"
      auth     = otelcol.auth.bearer.token.handler
  }
  }

  otelcol.auth.bearer "token" {
      token = "YOUR_TRACES_TOKEN"
  }

Run (Standalone)

alloy run config.alloy

Bước 3. Xem kết quả trên Grafana dashboard

Truy cập dashboard rồi chọn Explore, nếu chưa biết cách truy cập dashboard bạn có thể tham khảo hướng dẫn này

Chọn Tempo datasource

Nhập filters rồi click Run query

Kết quả đã thấy traces đã được push lên Tempo