Docker Java 설치
관리 > 에이전트 설치 > 하단의 애플리케이션 설치 클릭 > 설치 안내 중 Docker Java 탭 선택
Docker 컨테이너 기반으로 실행하는 Java 애플리케이션의 JVM Option에 에이전트 적용을 위한 설정을 추가하고 컨테이너 이미지를 패키징하는 과정을 다음과 같이 안내합니다.
-
EKS Fargate는 지원 예정입니다.
-
Java 애플리케이션 연동 과정에 대한 이해를 돕고자 Git 예시 코드를 제공합니다. 다음 문서를 참조하세요.
에이전트 다운로드
- Docker Install
- 직접 설치
와탭 애플리케이션 에이전트 설치를 위해 whatap.conf 파일을 생성하세요. {YOUR_PROJECT_ROOT}
는 에이전트를 설치하려는 프로젝트의 최상위 경로로 변경하세요.
cat >{YOUR_PROJECT_ROOT}/whatap.conf <<EOL
whatap.server.host={proxyServer}
EOL
쿠버네티스 내부 애플리케이션 에이전트 옵션 설정
쿠버네티스 내부 애플리케이션 에이전트에 필요한 설정을 whatap.conf 파일에 작성하거나 또는 에이전트 배포 시 컨테이너 env
필드를 통해 설정할 수 있습니다.
-
whatap.conf 파일 내 옵션이 컨테이너
env
필드에 설정된 옵션보다 높은 우선순위를 가집니다. -
whatap.conf 또는 컨테이너
env
에 설정된 값이 없는 경우 기본값이 사용됩니다. -
license
및whatap.server.host
옵션의 경우 컨테이너 환경변수 설정을 활용하세요.
설정 파일의 내용이 변경되거나 중요한 설정 항목이 소실될 경우 정상적으로 동작하지 않을 가능성이 있기에 쿠버네티스 환경 내 컨테이너 환경변수 설정을 권장합니다. 그외 에이전트 기능 제어 옵션에 대한 자세한 내용은 다음 문서를 참조하세요.
쿠버네티스 환경 내 사용 불가 옵션
-
whatap.name
: 수집 서버가 에이전트를 식별하는 고유한 이름입니다. 해당 이름은 에이전트가 실행 중인 오브젝트 정보를 기반으로 생성됩니다. 사용자 임의 지정 시 에이전트 식별에 문제가 생길 수 있습니다. -
whatap.onode
: 기본값으로 쿠버네티스 클러스터 노드 이름이 설정됩니다. 에이전트가 속한 노드 정보를 제공받기 위해 사용됩니다. 사용자 임의 지정 시 정확한 노드 식별이 어려워질 수 있습니다.
- 최신 버전 에이전트를 이미지에 포함
- 지정한 버전 에이전트를 이미지에 포함
최신 버전 에이전트를 애플리케이션 이미지에 포함시킬 수 있도록 안내합니다.
-
애플리케이션 이미지에 와탭 에이전트를 포함시키려면 먼저 Dockrfile 최종 이미지 빌드 단계에서 다음 내용을 추가하세요.
{YOUR_PROJECT_ROOT}
를 에이전트를 설치하려는 프로젝트의 최상위 경로로 변경하세요.# 와탭 에이전트용 디렉터리를 사용자 컨테이너에 생성
RUN mkdir -p /whatap
# 와탭 Java 에이전트를 사용자 컨테이너에 복사
COPY /data/agent/micro/whatap.agent.kube.jar /whatap
# 생성한 whatap.conf 설정 파일을 사용자 컨테이너에 복사
COPY {YOUR_PROJECT_ROOT}/whatap.conf /whatap/ -
Dockerfile의 시작 명령어에 다음 내용을 추가하세요.
-javaagent:/whatap/whatap.agent.kube.jar -Dwhatap.micro.enabled=true
다음 Dockerfile의 정의 예시를 참고하세요.
DockerfileFROM openjdk:8-jdk-slim
RUN mkdir -p /app && mkdir /whatap
WORKDIR /app
COPY /data/agent/micro/whatap.agent.kube.jar /whatap
COPY ./whatap.conf /whatap
COPY ./target/myApp.jar /app/
CMD ["java","-javaagent:/whatap/whatap.agent.kube.jar","-Dwhatap.micro.enabled=true","-jar","/app/myApp.jar"]
EXPOSE 8080 -
Docker를 빌드하세요.
{YOUR_DOCKERFILE_DIR}
를 Dockerfile이 위치한 경로로 변경하세요.cd {YOUR_DOCKERFILE_DIR}
docker build -t {IMAGE_NAME} .
지정한 버전 에이전트를 애플리케이션 이미지에 포함시킬 수 있도록 안내합니다.
-
애플리케이션 이미지에 와탭 에이전트를 포함시키려면 먼저 Dockrfile 최종 이미지 빌드 단계에서 다음 내용을 추가하세요.
{YOUR_PROJECT_ROOT}
를 에이전트를 설치하려는 프로젝트의 최상위 경로로 변경하세요.# 와탭 에이전트용 디렉터리를 사용자 컨테이너에 생성
RUN mkdir -p /whatap
# 와탭 Java 에이전트를 사용자 컨테이너에 복사
COPY /data/agent/micro/whatap.agent-*.jar /whatap
# 생성한 whatap.conf 설정 파일을 사용자 컨테이너에 복사
COPY {YOUR_PROJECT_ROOT}/whatap.conf /whatap/ -
현재 와탭 에이전트 버전을 확인하세요.
docker run whatap/kube_mon ls /data/agent/micro | grep -E 'whatap\.agent-(.*?\.)(.*?\.)(.*?\.)jar' | sort | tail -1
# 출력 예시
## whatap.agent-X.Y.Z.jar -
Dockerfile의 시작 명령어에 다음 내용을 추가하세요. X.Y.Z 부분에 앞서 확인한 에이전트 버전을 입력하세요.
-javaagent:/whatap/whatap.agent-X.Y.Z.jar -Dwhatap.micro.enabled=true
다음 Dockerfile의 정의 예시를 참조하세요.
DockerfileFROM openjdk:8-jdk-slim
RUN mkdir -p /app && mkdir /whatap
WORKDIR /app
COPY /data/agent/micro/whatap.agent-*.jar /whatap
COPY ./whatap.conf /whatap
COPY ./target/myApp.jar /app/
CMD ["java","-javaagent:/whatap/whatap.agent-X.Y.Z.jar","-Dwhatap.micro.enabled=true","-jar","/app/myApp.jar"]
EXPOSE 8080 -
Docker를 빌드하세요.
{YOUR_DOCKERFILE_DIR}
를 Dockerfile이 위치한 경로로 변경하세요.cd {YOUR_DOCKERFILE_DIR}
docker build -t {IMAGE_NAME} .
-
설치 파일(whatap.agent.java.tar.gz)을 다운로드하려면 다운로드 버튼을 선택하세요.
-
Dockerfile을 작성할 수 있는 서버에 업로드한 다음 압축을 해제하세요.
정보설치할 서버에 직접 다운로드하려면 다음 명령어를 실행하세요.
wget https://api.whatap.io/agent/whatap.agent.java.tar.gz
-
압축 해제 시 whatap 디렉터리가 생성됩니다. whatap 디렉터리 내부의 whatap.conf 파일에서 설정 내용을 확인 후 다음과 같이 수정하세요.
license={licenseKey}
whatap.server.host={proxyServer}정보쿠버네티스 내부 애플리케이션 에이전트 옵션 설정
쿠버네티스 내부 애플리케이션 에이전트에 필요한 설정을 whatap.conf 파일에 작성하거나 또는 에이전트 배포 시 컨테이너
env
필드를 통해 설정할 수 있습니다.-
whatap.conf 파일 내 옵션이 컨테이너
env
필드에 설정된 옵션보다 높은 우선순위를 가집니다. -
whatap.conf 또는 컨테이너
env
에 설정된 값이 없는 경우 기본값이 사용됩니다. -
license
및whatap.server.host
옵션의 경우 컨테이너 환경변수 설정을 활용하세요.
설정 파일의 내용이 변경되거나 중요한 설정 항목이 소실될 경우 정상적으로 동작하지 않을 가능성이 있기에 쿠버네티스 환경 내 컨테이너 환경변수 설정을 권장합니다. 그외 에이전트 기능 제어 옵션에 대한 자세한 내용은 다음 문서를 참조하세요.
노트쿠버네티스 환경 내 사용 불가 옵션
-
whatap.name
: 수집 서버가 에이전트를 식별하는 고유한 이름입니다. 해당 이름은 에이전트가 실행 중인 오브젝트 정보를 기반으로 생성됩니다. 사용자 임의 지정 시 에이전트 식별에 문제가 생길 수 있습니다. -
whatap.onode
: 기본값으로 쿠버네티스 클러스터 노드 이름이 설정됩니다. 에이전트가 속한 노드 정보를 제공받기 위해 사용됩니다. 사용자 임의 지정 시 정확한 노드 식별이 어려워질 수 있습니다.
-
-
Dockerfile의 시작 명령어에 다음 내용을 추가하세요. whatap 디렉터리 내부에서 에이전트 파일을 확인 후 X.Y.Z 부분에 해당 버전을 입력하세요.
-javaagent:/whatap/whatap.agent-X.Y.Z.jar -Dwhatap.micro.enabled=true
다음 Dockerfile의 정의 예시를 참조하세요.
DockerfileFROM openjdk:8-jdk-alpine
RUN mkdir -p /app && mkdir /whatap
WORKDIR /app
COPY ./whatap.agent-X.Y.Z.jar /whatap/
COPY ./whatap.conf /whatap/
COPY ./target/myApp.jar myApp.jar
COPY ./paramkey.txt /whatap/
CMD ["java","-javaagent:/whatap/whatap.agent-X.Y.Z.jar","-Dwhatap.micro.enabled=true","-jar","/app/myApp.jar"]
EXPOSE 8080
-
whatap-virtual-X.Y.Z.jar: 모니터링 대상(샘플 애플리케이션)
-
whatap.agent-X.Y.Z.jar: 와탭 에이전트
-
에이전트의 파일명이 whatap.agent-1.2.3.jar이라면 X.Y.Z 부분을 1.2.3으로 변경하세요.
-
JVM 옵션 추가에 대한 자세한 내용은 다음 문서를 참조하세요.
Java 17 버전 이상의 경우 reflection 관련 --add-opens=java.base/java.lang=ALL-UNNAMED
옵션을 추가하세요.
보안키 설정하기
SQL 변수, HTTP 쿼리를 조회하거나 Thread 중지 기능 이용하려면 보안키를 설정하세요.
-
Java 에이전트 2.2.2 버전 이상
$WHATAP_HOME
경로에 security.conf 파일을 생성한 후 다음과 같이 6자리 영어, 숫자로 구성된 암호를 입력하세요.security.confparamkey=ABCDEF # SQL 변수 및 HTTP 쿼리 조회
threadkill=ABCDEF # Thread 중지 기능 -
Java 에이전트 2.2.2 버전 미만
$WHATAP_HOME
경로에 paramkey.txt 파일을 생성한 후 다음과 같이 6자리 영어, 숫자로 구성된 암호를 입력하세요.paramkey.txtABCDEF # SQL 변수 및 HTTP 쿼리 조회, Thread 중지 기능
Java 에이전트 2.2.2 버전 미만에서 2.2.2 버전으로 업데이트하는 경우 기존 paramkey.txt 파일의 키값은 seuciry.conf 파일의 키값으로 자동 적용됩니다. 예를 들어, paramkey.txt에 FEDCBA
를 사용한 상태에서 2.2.2 버전으로 업데이트했다면, security.conf 파일에는 다음과 같이 적용됩니다.
paramkey=FEDCBA
threadkill=FEDCBA
paramkey.txt 파일이 존재하지 않을 경우 security.conf 파일의 키값은 WHATAP이라는 키값으로 자동 생성됩니다.
컨테이너 환경변수 설정
Docker 빌드 후 쿠버네티스 환경 내 컨테이너 환경변수를 설정하세요. 애플리케이션 배포 yaml 파일에 다음 내용을 추가하세요.
env:
- name: NODE_IP
valueFrom: {fieldRef: {fieldPath: status.hostIP}}
- name: NODE_NAME
valueFrom: {fieldRef: {fieldPath: spec.nodeName}}
- name: POD_NAME
valueFrom: {fieldRef: {fieldPath: metadata.name}}
- name: OKIND
value: {YOUR_OKIND_NAME}
- name: license
value: {licenseKey}
- name: whatap.server.host
value: {proxyServer}
- name: whatap.micro.enabled
value: "true"