0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng Dẫn Sử Dụng OpenTelemetry Để Thu Thập Traces Cho Ứng Dụng Java Backend (Phần 2)

Đăng vào 3 tuần trước

• 3 phút đọc

Trong bài viết này, chúng ta sẽ thực hiện cấu hình Otel Collector để thu thập dữ liệu trace và hiển thị dữ liệu này thông qua Zipkin và Grafana một cách trực quan.

1. Thiết lập Otel Collector và Zipkin

Trước tiên, chúng ta sẽ thiết lập Otel Collector và sử dụng Zipkin để trực quan hóa dữ liệu thông qua Docker Compose. Hãy clone Otel Collector tại đây và bắt đầu cấu hình ở local của bạn.

Sau khi đã clone xong, mở file cấu hình có tên otel-collector-config-demo.yml và xem nội dung sau:

yaml Copy
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"
    namespace: promexample
    const_labels:
      label1: value1
  logging:
    loglevel: debug

  zipkin:
    endpoint: "http://zipkin-all-in-one:9411/api/v2/spans"
    format: proto

processors:
  batch:

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

service:
  extensions: [pprof, zpages, health_check]
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging, zipkin]
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging]

Tóm tắt nội dung file cấu hình:

  • receivers: Được định nghĩa là otlp, cho phép nhận dữ liệu qua giao thức gRPC (cổng 4317) và HTTP (cổng 4318).
  • exporters: Đã cấu hình sẵn Zipkin, với endpoint mặc định là http://zipkin-all-in-one:9411/api/v2/spans.
  • pipelines: Bao gồm các bước xử lý trace qua receivers, processors, và exporters để xuất ra dữ liệu sau khi đã được xử lý.

2. Khởi động Collector

Để khởi động Collector, ta cần sử dụng Docker Compose. Trong file docker-compose.yml, đã định nghĩa các port cần thiết. Chạy lệnh sau:

Copy
docker compose up -d

Tiếp tục quay lại Dockerfile và thêm dòng lệnh sao chép file OpenTelemetry agent:

Copy
COPY otel/opentelemetry-javaagent.jar /app/otel-agent.jar

ENV OTEL_SERVICE_NAME=spring-boot-application
ENV OTEL_TRACES_EXPORTER=otlp
ENV OTEL_EXPORTER_OTLP_ENDPOINT=http://172.16.1.24:4318

Sau đó, tải file opentelemetry-javaagent.jar về thư mục otel trong project:

Copy
curl -L -O https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar

3. Xây dựng lại Docker Image

Sau khi đã hoàn tất, chúng ta cần xây dựng lại image:

Copy
docker compose down
Copy
docker build -t java-spring:v2 .

Sửa lại tag trong file docker-compose.yml và khởi động lại project:

Copy
docker compose up -d

4. Kiểm Tra Dữ Liệu Traces

Truy cập vào địa chỉ http://localhost:8081 để xem ứng dụng và http://localhost:9411 để truy cập vào trang Zipkin. Khi thực hiện một số thao tác như thêm hay chỉnh sửa user, dữ liệu traces sẽ hiển thị trên Zipkin. Nhấn vào nút RUN QUERY để nạp lại dữ liệu.

5. Thiết lập Collector và Grafana

Tiếp theo, chúng ta sẽ thiết lập một Collector khác để thu thập traces và hiển thị trên Grafana. Clone dự án Grafana Tempo:

Copy
git clone https://github.com/grafana/tempo.git

Chạy Collector với Grafana:

Copy
cd tempo/example/docker-compose/local

docker compose up -d

Truy cập vào http://localhost:3001 để xem Grafana, chọn Explore và lựa chọn dữ liệu từ Tempo. Nhấn vào Run Query để nạp lại dữ liệu của service và thực hiện thao tác để xem dữ liệu traces trên Grafana. Dữ liệu sẽ được hiển thị tương tự như trên Zipkin cho phép phân tích hiệu suất ứng dụng.

Kết Luận

Với các bước thiết lập trên, bạn đã thành công trong việc thu thập dữ liệu traces cho ứng dụng Java backend của mình thông qua OpenTelemetry, Zipkin và Grafana. Đây là một quy trình hữu ích để theo dõi và phân tích hiệu suất ứng dụng trong môi trường sản xuất.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào