Bỏ qua, đến nội dung

Hướng dẫn cài đặt — Telemetry

Yêu cầu hệ thống

Thành phầnYêu cầu
Digiforce ServerĐang chạy và hoạt động bình thường
OpenTelemetry Collector(Tùy chọn) Jaeger, Grafana Tempo, hoặc OTLP Collector
NetworkServer phải kết nối được đến collector endpoint

Bước 1: Kích hoạt plugin

Vào Settings → Plugin Manager, tìm plugin-telemetry và bật lên. Sau khi kích hoạt, plugin sẽ đăng ký metric reader với hệ thống telemetry của ứng dụng.

Hoặc kích hoạt qua dòng lệnh:

bash
yarn pm enable plugin-telemetry

Bước 2: Cấu hình biến môi trường

Thêm các biến sau vào file .env của ứng dụng:

bash
# Bật telemetry
TELEMETRY_ENABLED=true

# Tên service hiển thị trong traces và metrics
TELEMETRY_SERVICE_NAME=digiforce-app

# Loại processor cho traces: batch (khuyên dùng) hoặc simple
TELEMETRY_TRACE_PROCESSOR=batch

# URL của OTLP Collector để gửi metrics qua HTTP
TELEMETRY_HTTP_URL=http://localhost:4318/v1/metrics

# Ngưỡng ghi nhận thời gian request (ms) — request nhanh hơn sẽ bị bỏ qua
TELEMETRY_HTTP_RECORD_THRESHOLD=0

Mẹo

Đặt TELEMETRY_HTTP_RECORD_THRESHOLD lớn hơn 0 (ví dụ 500) để chỉ ghi nhận những request chậm, giảm lượng dữ liệu metrics trong môi trường production.

Bước 3: Cấu hình exporters

Plugin sử dụng OTLPMetricExporter với temporality preference là DELTA. Bảng dưới liệt kê các cách cấu hình exporter phổ biến:

ExporterBiến môi trườngMô tả
ConsoleTELEMETRY_TRACE_EXPORTER=consoleIn ra console — phù hợp khi phát triển
OTLP HTTPTELEMETRY_HTTP_URL=http://collector:4318/v1/metricsGửi đến OpenTelemetry Collector qua HTTP
OTLP gRPCOTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4317Gửi đến Collector qua gRPC

Bước 4: Khởi động và kiểm tra

Khởi động lại server sau khi cấu hình:

bash
yarn start

Kiểm tra log server có dòng xác nhận telemetry đã khởi tạo:

[info] Telemetry initialized: service=digiforce-app

Dữ liệu thu thập

Plugin tự động thu thập các loại dữ liệu sau khi chạy trên instance main:

LoạiMetric nameMô tả
Systemprocess_cpu_percentPhần trăm CPU process đang dùng
Systemprocess_memory_mbBộ nhớ process (MB)
Systemprocess_heap_mbHeap memory đã dùng (MB)
HTTPhttp_request_countTổng số HTTP request (có label: app, method, path, status_code)
HTTPhttp_request_costHistogram thời gian xử lý request (ms)
HTTPhttp_request_activeSố request đang xử lý đồng thời

Tích hợp với observability stack

Jaeger — Distributed tracing

yaml
# docker-compose.yml
services:
  jaeger:
    image: jaegertracing/all-in-one:latest
    ports:
      - "16686:16686"   # Jaeger UI
      - "4318:4318"     # OTLP HTTP

Prometheus + Grafana — Dashboard metrics

Cấu hình Prometheus scrape target trỏ đến OTLP Collector, sau đó dùng Grafana để tạo dashboard hiển thị http_request_count, http_request_cost, và process_cpu_percent.

OpenTelemetry Collector

yaml
# otel-collector-config.yaml
receivers:
  otlp:
    protocols:
      http:
        endpoint: 0.0.0.0:4318

exporters:
  prometheus:
    endpoint: "0.0.0.0:8889"
  jaeger:
    endpoint: "jaeger:14250"

service:
  pipelines:
    metrics:
      receivers: [otlp]
      exporters: [prometheus]
    traces:
      receivers: [otlp]
      exporters: [jaeger]

Lưu ý quan trọng

  • Telemetry tăng nhẹ overhead — dùng TELEMETRY_HTTP_RECORD_THRESHOLD để lọc bớt request nhanh
  • Metric reader mặc định export mỗi 60 giây (exportIntervalMillis: 60000)
  • Plugin chỉ đăng ký system metrics và gateway metrics trên instance có tên main — các worker khác sẽ bỏ qua
  • Batch processor giảm tải cho exporter bằng cách gom nhiều metric lại gửi một lần