Bỏ qua tới nội dung
Mục lục

OpenTelemetry cho Java (Java agent)

Gắn OpenTelemetry Java agent bằng -javaagent, không sửa code: HTTP server/client, JDBC, log java.util.logging/Logback/Log4j; Spring Boot và container.

Bản Markdown
Trong bài này

OpenTelemetry Java agent gắn instrumentation cho app JVM mà không sửa code: HTTP server và client (Servlet, Spring MVC và WebFlux, JAX-RS, HttpServer và HttpClient có sẵn của JDK, OkHttp, …), JDBC, client hàng đợi tin nhắn và các thư viện log phổ biến. Agent đọc bộ biến chuẩn — giao thức mặc định của nó đã là http/protobuf.

Đã kiểm ngày 2026-10-24 với java 21.0.12.1, opentelemetry-javaagent 2.32.0: traces đạt, logs đạt, log mang trace/span của request.

Gắn agent#

Terminal
curl -fsSLO https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jarjava -javaagent:./opentelemetry-javaagent.jar -jar app.jar

latest đi theo bản mới nhất; ở production, hãy tải một phiên bản cố định từ trang phát hành và giữ cùng bản build, để không lần deploy nào bất ngờ đổi agent.

  • Chạy app đã biên dịch (-jar, hoặc -cp … Main). Agent từ chối khởi động bên trong công cụ của JDK, kể cả khi chạy thẳng file nguồn bằng java App.java.

  • Spring Boot: cùng cờ -javaagent đặt trước -jar app.jar.

  • Container và PaaS: khi không đổi được lệnh chạy, đặt JAVA_TOOL_OPTIONS="-javaagent:/path/to/opentelemetry-javaagent.jar"; JVM tự nhận khi khởi động.

Logs#

Agent thu bản ghi của java.util.logging, Logback và Log4j 2 và gửi thành bản ghi log OpenTelemetry mang trace ID và span ID đang chạy; appender của bạn vẫn ghi như cũ. Lần chạy của Belvador dùng java.util.logging; Logback và Log4j 2 đi qua cùng cơ chế của agent nhưng không nằm trong phần đã kiểm.

Tắt bớt instrumentation#

Mỗi instrumentation có một công tắc, ví dụ:

Terminal
export OTEL_INSTRUMENTATION_JDBC_ENABLED=false

Cùng SDK Java của Sentry#

Giữ SDK Sentry cho lỗi và tắt tracing của nó, để agent là bên duy nhất làm chủ tracing. Event processor của sentry-opentelemetry-otlp gắn ID span của agent vào các lỗi đó — xem Cùng SDK Sentry; liên kết đó chưa được ghi là đã kiểm.

Thấy chỗ sai hoặc thiếu? Gửi cho chúng tôi: hello@belvador.dev