다음을 통해 공유


Java 진단 에이전트 시작

이 문서에서는 Java 진단 에이전트 사용을 시작하는 방법을 설명합니다. 또한 IntelliJ IDEA용 AKS 플러그 인의 Java 진단 도구에 대해서도 설명합니다.

Java 진단 에이전트는 Java 프로세스 문제를 해결하기 위한 Java 에이전트입니다. 애플리케이션을 다시 빌드, 다시 배포 또는 다시 시작할 필요가 없습니다. 현재 Java 클래스의 함수 주위에 로그를 추가할 수 있습니다. 함수가 호출되면 로그가 함수에 사용된 총 시간의 계산과 함께 인쇄됩니다.

필수 구성 요소

포트 전달 설정

다음 명령을 사용하여 에이전트 서비스에 포트 전달을 설정합니다.

kubectl port-forward svc/diag4j-agent-service -n <namespace> <port>:8080

IntelliJ IDEA용 AKS 플러그 인에서 Java 진단 도구 사용

AKS 플러그 인의 Java 진단 도구를 사용하여 AKS(Azure Kubernetes Service) 클러스터의 Pod 컨테이너에서 실행되는 Java 애플리케이션에 Java 진단 에이전트를 연결할 수 있습니다.

에이전트를 연결한 후에는 클래스 함수 주위에 로그를 추가하는 등의 문제 해결 작업을 수행할 수 있습니다. 이 로그를 사용하여 함수가 실행되는지 여부를 테스트하고 함수에 소요된 총 시간을 계산할 수 있습니다. 이 분석은 애플리케이션에서 성능 병목 상태를 찾는 데 도움이 될 수 있습니다.

플러그 인 구성은 진단 탭에 표시됩니다. 여기서는 다음 작업을 수행할 수 있습니다.

  • 에이전트 서비스로 전달하는 로컬 포트를 구성합니다.
  • 로컬 환경에서 kubeconfig으로 나열된 Pod를 봅니다.
  • 새로 고침 선택하여 Pod 테이블을 새로 고칩니다. 클러스터를 전환한 후 테이블을 새로 고쳐 새 클러스터에 Pod를 로드해야 합니다.

IntelliJ IDEA 진단 탭의 스크린샷.

에이전트를 부착하세요

Pod 컨테이너에는 /tmp 폴더가 있어야 하며 /tmp 폴더에 대한 쓰기 권한이 있어야 합니다.

JVM에서 에이전트를 연결할 수 있도록 하려면 JVM 옵션에 -XX:+DisableAttachMechanism 추가하지 않도록 해야 합니다.

백 엔드 진단 서버는 6시간 후에 닫힙니다.

에이전트를 연결하려면 에이전트를 연결할 Pod를 클릭한 다음 컨테이너를 선택합니다. Pod의 컨테이너 하나에만 에이전트를 연결할 수 있습니다. 그런 다음 첨부 파일 프로세스가 완료되기를 기다립니다.

컨테이너 선택 대화 상자가 열려 있는 진단 탭을 보여 주는 IntelliJ IDEA 스크린샷

활성화된 Pod 컨테이너 설정

에이전트를 성공적으로 연결한 후 문제 해결에 사용할 수 있습니다.

여러 Pod가 에이전트를 삽입했을 수 있으므로 활성 Pod를 설정해야 합니다. IntelliJ IDEA의 진단 탭에서 Pod를 오른쪽 클릭한 다음 활성으로선택합니다.

IntelliJ IDEA 진단 탭에서 pod가 선택되고

클래스 함수 주위에 로깅 추가

구성된 로그는 30분 후에 자동으로 제거됩니다.

이 도구를 사용하여 클래스 함수에 대한 로깅을 추가할 수 있지만 인터페이스, 생성자 등은 추가할 수 없습니다.

함수에 로깅을 추가하려면 다음 스크린샷과 같이 편집기에서 해당 로깅을 마우스 오른쪽 단추로 클릭한 다음, Java Diagnostic>AroundLog추가를 선택합니다.

IntelliJ IDEA의 스크린샷으로, 함수에 대해 열린 컨텍스트 메뉴에서 Add AroundLog 메뉴 옵션이 강조 표시된 것을 보여줍니다.

이 예제에서는 로깅을 추가한 후 <host>/infor 호출하여 함수가 호출되기 전과 후에 다음 예제와 유사한 출력을 볼 수 있습니다.

===== START ===== Method: updateInformation Start Time: 2024-12-12T07:37:55.404107848Z
Done with the validation
Done with the DB access
Done with the data filtering
===== END ===== Method: updateInformation End Time: 2024-12-12T07:37:55.404316940Z Total Time: 0 milliseconds

구성된 모든 로그 제거

에이전트가 추가한 모든 AroundLogs를 제거하려면 모든 AroundLogs 제거를 선택합니다.

메모

백 엔드 Java 에이전트는 Pod의 임시 컨테이너에서 사용됩니다. 포드가 재시작되면 에이전트가 제거됩니다.

문제 해결

기능을 아직 사용하도록 설정하지 않은 노드에서 실행되는 Pod에 에이전트를 연결하려고 하면 시간 제한이 발생할 수 있습니다. 노드가 먼저 에이전트 이미지를 검색해야 하므로 시간이 초과되어 지연이 발생할 수 있습니다. 이 경우 새로 고침 선택하여 에이전트가 연결되었는지 여부를 확인하거나 에이전트를 다시 연결해 볼 수 있습니다.

첨부 파일이 실패하면 임시 컨테이너에서 diagnostic-container-<hashcode> 로그를 확인할 수 있습니다.

diag4j-agent-service-<hashcode>Pod 컨테이너 아래의 로그에서 플러그 인 작업에 대한 정보를 찾을 수 있습니다.

다음 단계

AKS에서 Java 진단 도구(diag4j)의 Spring Boot Admin 구성 요소 사용을 시작하세요