오픈소스 추적
자바(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
설정: weaving=camel-cxf-3.15
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.27 | camel-cxf 3.15 이상 |
Netty
설정: weaving=camel-netty4-2.25
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.42 | camel-netty4 2.25 이상 |
SEDA
설정: weaving=camel-seda-2.22, weaving=camel-seda-3.2
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.20 | camel-seda 2.22 이상, 3.2 이상 |
DB2
설정: weaving=db2-11.5
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.18 | db2 11.5 이상 |
DynamoDB
설정: weaving=dynamodb-1.11, weaving=dynamodb-2.25
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.39 | dynamodb 1.11, 2.25 |
Feign Client
설정: weaving=feign-11
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.6 | feign 11 이상 |
Hystrix
설정: weaving=hystrix-1.5
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.0_21 | hystrix 1.5 이상 |
Kafka
설정: weaving=kafka-clients-2.4.0, weaving=reactor-kafka-1.3
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.15 | kafka-clients 2.4.0 이상 |
| v2.2.5 | reactor-kafka 1.3 이상 |
Logging
Log4j2
설정: weaving=log4j-2.17
비고: 특정 appender 제외하는 에이전트 옵션 제공
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.28 | log4j 2.17 이상 |
Logback
설정: weaving=logback-1.2.8
비고: 특정 appender 제외하는 에이전트 옵션 제공
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.28 | logback 1.2.8 이상 |
MongoDB
설정: weaving=mongodb-{version}
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.45 | 3.8.2 ~ 5.0 |
| v2.2.11 | 3.8.2 ~ 4.8 |
Mule Framework
설정: weaving=mule-3.9.5, weaving=mule-4.5
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.23 | mule 3.9.5 이상, 4.5 이상 |
OkHttp
설정: weaving=okhttp-2.7, weaving=okhttp3, weaving=okhttp3-4.4
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.9 | okhttp 2.7 이상, okhttp3, okhttp3-4.4 |
| v2.0_15 | okhttp 2.7 이상, okhttp3 (4.4 제외) |
Quarkus Reactive
설정: weaving=quarkus-reactive-1.13, weaving=quarkus-reactive-2.10
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.19 | quarkus-reactive 1.13 이상, 2.10 이상 |
RabbitMQ
설정: weaving=reactor-rabbitmq-1.2
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.0_06 | reactor-rabbitmq 1.2 이상 |
Redis
Jedis
설정: weaving=jedis-{version}
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.43 | jedis 2.9.0 ~ 3.2 |
| v2.0_33 | jedis 2.9.3 ~ 3.2 |
| v2.0_09 | jedis 3.2 |
Lettuce
설정: weaving=lettuce-{version}
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.16 | lettuce 5.1 ~ 6.2 |
| v2.2.7 | lettuce 5.1 |
Retrofit
설정: weaving=retrofit-2.5
비고: okhttp 설정과 동시 사용 불가
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.39 | retrofit 2.5 이상 |
Ribbon
설정: weaving=ribbon
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.10 | ribbon |
Spring Boot
설정: weaving=spring-boot-{version}
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.38 | spring-boot 2.1 ~ 3.2 |
| v2.2.23 | spring-boot 2.1 |
| v2.2.9 | spring-boot 2.5 ~ 3.0 |
포함 기술 스택 보기
- 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
Tomcat
설정: weaving=tomcat9, weaving=tomcat10
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.5 | tomcat9, tomcat10 |
Undertow
설정: weaving=undertow-{version}
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.39 | undertow 2.2 ~ 2.3 |
| v2.2.14 | undertow 2.3 |
Vert.x
설정: weaving=vertx-{version}
| 에이전트 버전 | 지원 범위 |
|---|---|
| v2.2.44 | vertx 3.5.3 ~ 4.5 |
| v2.2.42 | vertx 3.5.3 |
| v2.2.39 | vertx 4.5 |
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: 도움말 출력하고 종료합니다.