오픈소스 추적
자바(Java) 애플리케이션에서 사용하는 프레임워크나 오픈소스 라이브러리를 에이전트를 통해 추적하는 설정 방법을 제공합니다. 이는 Java 에이전트 설정 파일(whatap.conf) 파일에 weaving 옵션을 추가하여 설정하며, 다양한 프레임워크 및 라이브러리 버전에 대응하는 방법을 안내합니다.
예를 들어, 프레임워크나 오픈소스로 spring-boot-3.x, feign-client-11, okhttp3-4.4 사용 시 다음과 같이 옵션을 설정하세요.
weaving=spring-boot-3.0,feign-11,okhttp3-4.4
지원 오픈소스 목록
Java 에이전트를 통해 추적하고 있는 프레임워크 또는 오픈소스에 대한 설정 방법은 다음을 참조하세요.
Apache Camel
CXF
| camel-cxf Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 3.15 이상 | weaving=camel-cxf-3.15 | v2.2.27 |
Netty
| camel-netty4 Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 2.25 이상 | weaving=camel-netty4-2.25 | v2.2.42 |
SEDA
| camel-seda Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 2.22 이상 | weaving=camel-seda-2.22 | v2.2.20 |
| 3.2 이상 | weaving=camel-seda-3.2 | v2.2.20 |
DB2
| DB2 Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 11.5 이상 | weaving=db2-11.5 | v2.2.18 |
DynamoDB
| DynamoDB Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 1.11 | weaving=dynamodb-1.11 | v2.2.39 |
| 2.25 | weaving=dynamodb-2.25 | v2.2.39 |
Feign Client
| Feign Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 11 이상 | weaving=feign-11 | v2.2.6 |
Hystrix
| Hystrix Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 1.5 이상 | weaving=hystrix-1.5 | v2.0_21 |
Kafka
| Kafka Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| kafka-clients 2.4.0 이상 | weaving=kafka-clients-2.4.0 | v2.2.15 |
| reactor-kafka 1.3 이상 | weaving=reactor-kafka-1.3 | v2.2.5 |
Logging
Log4j2
| Log4j2 Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 2.17 이상 | weaving=log4j-2.17 | v2.2.28 |
Logback
| Logback Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 1.2.8 이상 | weaving=logback-1.2.8 | v2.2.28 |
MongoDB
| MongoDB Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 3.8.2 이상 | weaving=mongodb-3.8 | v2.2.11 |
| 4.0.3 이상 | weaving=mongodb-4.0 | v2.2.11 |
| 4.4 이상 | weaving=mongodb-4.4 | v2.2.11 |
| 4.8 이상 | weaving=mongodb-4.8 | v2.2.11 |
| 4.11 이상 | weaving=mongodb-4.11 | v2.2.45 |
| 5.0 이상 | weaving=mongodb-5.0 | v2.2.45 |
Mule Framework
| Mule Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 3.9.5 이상 | weaving=mule-3.9.5 | v2.2.23 |
| 4.5 이상 | weaving=mule-4.5 | v2.2.23 |
OkHttp
| OkHttp Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 2.7 이상 | weaving=okhttp-2.7 | v2.0_15 |
| 3.x | weaving=okhttp3 | v2.0_15 |
| 3.x (4.4 이상) | weaving=okhttp3-4.4 | v2.2.9 |
Quarkus Reactive
| Quarkus Reactive Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 1.13 이상 | weaving=quarkus-reactive-1.13 | v2.2.19 |
| 2.10 이상 | weaving=quarkus-reactive-2.10 | v2.2.19 |
RabbitMQ
| reactor-rabbitmq Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 1.2 이상 | weaving=reactor-rabbitmq-1.2 | v2.0_06 |
Redis
Jedis
| Jedis Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 2.9.0 이상 | weaving=jedis-2.9 | v2.2.43 |
| 2.9.3 이상 | weaving=jedis-2.9 | v2.0_33 |
| 3.2 이상 | weaving=jedis-3.2 | v2.0_09 |
Lettuce
| Lettuce Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 5.1 이상 | weaving=lettuce-5.1 | v2.2.7 |
| 6.2 이상 | weaving=lettuce-6.2 | v2.2.16 |
Retrofit
| Retrofit Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 2.5 이상 | weaving=retrofit-2.5 | v2.2.39 |
okhttp 설정과 동시 사용 불가
Ribbon
| Ribbon Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 전체 버전 | weaving=ribbon | v2.2.10 |
Spring Boot
| Spring Boot Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 2.1 이상 | weaving=spring-boot-2.1 | v2.2.23 |
| 2.5 이상 | weaving=spring-boot-2.5 | v2.2.9 |
| 2.7 이상 | weaving=spring-boot-2.7 | v2.2.9 |
| 3.0 이상 | weaving=spring-boot-3.0 | v2.2.9 |
| 3.2 이상 | weaving=spring-boot-3.2 | v2.2.38 |
| 4.0 이상 | weaving=spring-boot-4.0 | v2.2.69 |
포함 기술 스택 보기
- spring-boot-2.1: r2dbc-mysql-0.8.2, spring-cloud-gateway-2.1, spring-kafka-2.7, spring-webflux-5.1, tomcat9
- spring-boot-2.5: r2dbc-mysql-0.8.2, spring-cloud-gateway-3.0, spring-kafka-2.7, spring-webflux-5.3, mongodb-4.0.3, reactor-kafka-1.3, rxjava2, tomcat9
- spring-boot-2.7: jasync-r2dbc-mysql-2.1.23, r2dbc-mysql-0.9.3, spring-cloud-gateway-3.1, spring-kafka-3.0, spring-webflux-5.3, mongodb-4.4, reactor-kafka-1.3, rxjava2, tomcat9
- spring-boot-3.0: jasync-r2dbc-mysql-2.1.23, r2dbc-mysql-1.0.2, spring-cloud-gateway-4.0, spring-kafka-3.0, spring-webflux-6.0, mongodb-4.8, redis(lettuce-6.2), reactor-kafka-1.3, rxjava3, tomcat10
- spring-boot-3.2: jasync-r2dbc-mysql-2.1.23, r2dbc-mysql-1.1.3, spring-cloud-gateway-4.1, spring-kafka-3.1, spring-webflux-6.1, redis(lettuce-6.2), reactor-kafka-1.3, rxjava3, tomcat10
- spring-boot-4.0: RestTemplate, RestClient, WebClient, R2DBC
Tomcat
| Tomcat Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 9.x | weaving=tomcat9 | v2.2.5 |
| 10.x | weaving=tomcat10 | v2.2.5 |
Undertow
| Undertow Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 2.2 이상 | weaving=undertow-2.2 | v2.2.39 |
| 2.3 이상 | weaving=undertow-2.3 | v2.2.14 |
Vert.x
| Vert.x Version | 설정 값 | 에이전트 최소 버전 |
|---|---|---|
| 3.5.3 | weaving=vertx-3.5 | v2.2.42 |
| 3.9 | weaving=vertx-3.9 | v2.2.44 |
| 4.5 | weaving=vertx-4.5 | v2.2.39 |
Java 에이전트의 CVE 오탐 방지
Java 에이전트에 포함된 라이브러리 클래스는 애플리케이 션에서 실제 사용할 때만 로딩됩니다. CVE 취약점 검사 시 라이브러리가 검출되더라도, 사용하지 않는다면 실제 취약점은 없습니다.
불필요한 추적 클래스를 삭제하려면 다음 명령어를 실행하세요.
java -cp whatap.agent-X.Y.Z.jar whatap.agent.setup.RemoveWeaving -remove [weaving jar filename]
Java 에이전트 업데이트 시마다 삭제 작업을 다시 수행해야 합니다.
특정 라이브러리 클래스를 제거하는 명령어는 Java 에이전트 2.2.37 버전 이상에서 지원합니다.
사용법: java -cp whatap.agent-X.Y.Z.jar whatap.agent.setup.RemoveWeaving [arguments] [weaving jar filename]
java -cp whatap.agent-2.2.37.jar whatap.agent.setup.RemoveWeaving -remove spring-boot-2.5.jar spring-boot-2.7.jar
Arguments:
-
-r또는-remove: Java 에이전트에서 weaving jar 파일을 삭제하고 새로운 Java 에이전트를 생성합니다. -
-l또는-list: weaving jar 파일 목록을 출력합니다. -
-d또는-debug: 디버그 로깅(debug logging)을 활성화합니다. -
-e또는-error: 에러에 대한 풀 스택 트레이스 정보를 표시합니다. -
-h또는-help: 도움말 출력하고 종료합니다.