1. 내용
- Azure Application Insights Agent 방식으로 Tomcat Application(java) Monitoring
2. 순서
1) Azure VM(Linux)에 Tomcat10 설치
2) Agent 자동 계측을 이용하기위해 Jar 파일 다운로드 및 applicationinsights.json 경로 설정
3) Tomcat10 재시작 후 Application Insight에 데이터 값 확인
3. 테스트
1) Tomcat10 설치
- 먼저 java가 설치되어 있어야합니다.
$ java --version
$ sudo apu update
$ sudo apt install tomcat10
$ sudo systemctl status tomcat10.service
2) 자동 계측을 위한 Agent jar 파일 다운로드 및 applicationinsights.json 경로 설정
- jar 파일 주소에 대해서는 여기를 클릭해주세요.
- applicationinsights-agent-.jar와 동일한 디렉터리에 applicationinsights.json 파일이 존재해야합니다.
- applicationinsights.json에 Azure Application Insights의 연결문자열을 정확히 넣어줍니다.
# /usr/share/tomcat10/lib 경로에 jar파일을 다운로드 받고 json 파일을 만들어줍니다.
cheol@cheol-linux-vm-01:/usr/share/tomcat10/lib$ sudo wget https://github.com/microsoft/ApplicationInsights-Java/releases/download/3.6.1/applicationinsights-agent-3.6.1.jar
# applicationinsights.json 파일 생성
cheol@cheol-linux-vm-01:/usr/share/tomcat10/lib$ vi applicationinsights.json
{
"connectionString": "Application insights connection string"
}

- JVM이 jar 파일을 가리킬 수 있도록 "-javaagent:"path/to/applicationinsights-agent-.jar"를 추가해줍니다.
- 여기서 jar 파일에 대한 경로를 정확히 입력해줘야합니다.
# jar파일이 있는 곳을 정확히 명시합니다.
JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/share/tomcat10/lib/applicationinsights-agent-3.6.1.jar"

3) Tomacat10을 재시작 후 Application Insights 데이터 값에 대해서 모니터링합니다.
- Application에 대한 데이터를 Application Insights로 가져오는데 몇 분 소요될 수 있습니다.
cheol@cheol-linux-vm-01:/etc/default$ sudo systemctl status tomcat10.service
cheol@cheol-linux-vm-01:/etc/default$ sudo systemctl restart tomcato10.service
# 테스트를 위해서 다음 명령어를 사용해본다.
cheol@cheol-linux-vm-01:/etc/default$ for i in {1..10}; do curl http://localhost:8080/; done

4) 요청 테스트 및 Operation ID 기반 의존성 확인
- 요청 테스트 : Tomcat 서버로 HTTP Curl 테스트를 진행하여 Application Insights에서 모니터링 값을 확인합니다.
cheol@cheol-linux-vm-01:/etc/default$ for i in {1..10}; do curl http://localhost:8080; done

- Application Insights >> 트랜잭션 검색 >> 트랜잭션 중 하나인 Request 클릭
해당 요청에 대한 Operation ID 값을 확인할 수 있습니다.

- Application Insights >> 트랜잭션 검색 >> 필터 >> Operation ID 설정
Operation ID : 10af08b39a1eb30ba5124d2c34a1aa92에 대한 트랜잭션 값을 볼 수 있습니다.

- 다른 Operation ID 예시
Request에 대한 Dependency를 확인하여 요청에대한 의존성을 확인하여 트랜잭션을 추적할 수 있습니다.
Dependency를 클릭하게되면 요청에 대한 자세한 트랜잭션 내용을 알 수 있습니다.

※ Application Insights 트랜잭션 검색
1) 트랜잭션 검색
- 페이지 보기, 예외 사항 또는 웹 요청과 같은 개별 원격 분석 항복을 찾고 검색하는 기능을 합니다.
- 코딩한 로그 추적 및 이벤트를 볼 수 있습니다.
- 이벤트 유형 필터링이 가능합니다.
- Trace : 애플리케이션에서 발생하는 다양한 디버그 메시지나 진단 로그입니다. TrackTrace나 log4Net, NLog 같은 도구들이 남기는 로그 메시지입니다.
- Request : 서버 애플리케이션이 받은 HTTP 요청을 뜻합니다. 웹 페이지나 스크립트, 이미지 등이 서버에 요청된 기록입니다. 이 이벤트는 사용자가 어떤 자원을 요청했고, 서버가 어떻게 응답했는지 알 수 있습니다.
- Page View : 웹 사용자가 특정 페이지를 방문할때 생성되는 원격 분석 데이터입니다. 주로 웹사이트의 방문자 수나 페이지별 트래픽을 확인할 때 사용합니다.
- Custom Event : 개발자가 애플리케이션에 TrackEvent()를 사용하여 추가한 특정 이벤트로, 사용자의 특정 호라동이나 사용 패턴을 기록하기 우해 설정됩니다.
- Exception : 애플리케이션에서 발생한 오류나 예외 상황을 기록합니다. 처리되지 않은 예외나, TrackException()으로 로그된 예외가 포함됩니다.
- Dependency : 서버 애플리케이션이 다른 서비스(API, 데이터베이스 등)와 통신한 기록입니다. 클라이언트 코드의 AJAX 호출도 포함합니다. 이를 통해 다른 서비스와의 연동 상태를 모니터링 할 수 있습니다.
- Availability : 애플리케이션의 가용성 테스트 결과로 주로 애플리케이션이 정상적으로 작동하는지 여부를 확인하는데 사용됩니다.

- 속성 값을 필터링 하여 필터링된 데이터를 볼 수 있습니다.

- 더 복잡한 쿼리를 통해 데이터 검색이 가능합니다.

'Azure' 카테고리의 다른 글
| Azure Application Insights를 이용한 Application Monitoring (nodejs)- 2/2 (1) | 2024.10.31 |
|---|---|
| Azure Application Insights를 이용한 Application Monitoring (nodejs)- 1/2 (0) | 2024.10.31 |
| [Study] Public & Private AKS Cluster (0) | 2024.10.21 |
| [Study] Gitlab(CI)&ArgoCD를 이용해 AKS 배포 (1) | 2024.10.16 |
| Azure Blob Storage & SAS Token & Azure SDK for Java (1) | 2024.10.11 |