다음을 통해 공유


Java 웹 프로젝트에서 Azure 애플리케이션 Insights 문제 해결

이 문서에서는 Application Insights Java 2.x에 대한 Q&A 형식의 일반적인 문제에 대한 문제 해결 솔루션을 제공합니다.

주의

이 문서는 Application Insights Java 2.x에 적용되며 더 이상 권장되지 않습니다.

최신 버전에 대한 설명서는 Application Insights Java 3.x에서 찾을 수 있습니다.

Java에서 Azure 애플리케이션 Insights에 대한 질문 또는 문제 다음은 몇 가지 팁입니다.

빌드 오류

Eclipse 또는 Intellij Idea에서 Maven 또는 Gradle을 통해 Application Insights SDK를 추가하면 빌드 또는 체크섬 유효성 검사 오류가 발생합니다.

종속성 <버전> 요소가 와일드카드 문자가 포함된 패턴(예 <version>[2.0,)</version> : Maven 또는 version:'2.+' Gradle)을 사용하는 경우 와 같은 2.6.4특정 버전을 대신 지정해 보세요.

데이터 없음

Application Insights를 성공적으로 추가하고 앱을 실행했지만 포털에서 데이터를 본 적이 없습니다.

  • 1분 정도 기다린 다음 새로 고침을 선택합니다. 차트는 주기적으로 새로 고쳐지지만 수동으로 새로 고칠 수도 있습니다. 새로 고침 간격은 차트의 시간 범위에 따라 달라집니다.

  • ApplicationInsights.xml 파일(프로젝트의 리소스 폴더)에서 계측 키를 정의했거나 환경 변수로 구성했는지 확인합니다.

  • XML 파일에 노드가 없는지 <DisableTelemetry>true</DisableTelemetry> 확인합니다.

  • 필요한 경우 방화벽에서 TCP 포트 80 및 443을 열어 로 나가는 트래픽을 엽니다 dc.services.visualstudio.com. 방화벽 예외의 전체 목록을 참조하세요.

  • Microsoft Azure 시작 보드에서 서비스 상태 맵을 확인합니다. 경고 표시가 있는 경우 정상으로 돌아갈 때까지 기다린 다음 Application Insights 애플리케이션 블레이드를 닫고 다시 엽니다.

  • 프로젝트의 resources 폴더에 있는 <ApplicationInsights.xml파일의 루트 노드 아래에 SDKLogger> 요소를 추가하여 로깅을 켭니다. 그런 다음 의심스러운 로그에 대한 앞에 있는 AI: INFO/WARN/ERROR 항목에 대해 검사.

  • 올바른 ApplicationInsights.xml 파일이 Java SDK에 의해 성공적으로 로드되었는지 확인합니다. 콘솔의 출력 메시지에서 "구성 파일이 성공적으로 발견되었습니다" 문을 확인합니다.

  • 구성 파일을 찾을 수 없는 경우 출력 메시지를 검사 구성 파일이 검색되는 위치를 확인합니다. ApplicationInsights.xml 해당 검색 위치 중 하나에 있는지 확인합니다. 일반적으로 Application Insights SDK JAR 근처에 구성 파일을 배치할 수 있습니다. 예를 들어 Tomcat에서 폴더는 WEB-INF/classs입니다. 개발하는 동안 웹 프로젝트의 리소스 폴더에 ApplicationInsights.xml 배치할 수 있습니다.

  • GitHub 문제 페이지에서 SDK와 관련된 알려진 문제를 확인합니다.

  • 버전 충돌 문제를 방지하려면 동일한 버전의 Application Insights 코어, 웹, 에이전트 및 로깅 appenders를 사용해야 합니다.

참고

이 문서는 최근에 Log Analytics 대신 Azure Monitor 로그라는 용어를 사용하도록 업데이트되었습니다. 로그 데이터는 여전히 Log Analytics 작업 영역에 저장되며 동일한 Log Analytics 서비스에서 여전히 수집 및 분석됩니다. Azure Monitor에서 로그의 역할을 더 잘 반영하도록 용어를 업데이트하고 있습니다. 자세한 내용은 Azure Monitor 용어 변경을 참조하세요.

데이터를 보는 데 사용했지만 중지되었습니다.

  • 데이터 포인트의 월별 할당량에 도달했나요? 설정>할당량 및 가격 책정을 열어 확인합니다. 그렇다면 플랜을 업그레이드하거나 더 많은 용량에 대한 비용을 지불할 수 있습니다. 자세한 내용은 가격 책정 체계를 참조하세요.

  • 최근에 SDK를 업그레이드했나요? 프로젝트 디렉터리 내에 고유 SDK jar만 있는지 확인합니다. 두 가지 버전의 SDK가 있으면 안 됩니다.

  • 올바른 AI 리소스를 보고 있나요? 애플리케이션의 iKey를 원격 분석이 필요한 리소스와 일치해야 합니다. 그들은 동일해야합니다.

예상하는 데이터가 모두 표시되지 않습니다.

  • 사용량 및 예상 비용 페이지를 열고 검사 샘플링이 작동하는지 확인합니다. (100% 전송은 샘플링이 작동하지 않음을 의미합니다.) Application Insights 서비스는 앱에서 도착하는 원격 분석의 일부만 허용하도록 설정할 수 있습니다. 이 설정을 사용하면 월별 원격 분석 할당량 내에서 유지할 수 있습니다.

  • SDK 샘플링이 켜져 있나요? 그렇다면 데이터는 해당하는 모든 형식에 대해 지정된 속도로 샘플링됩니다.

  • 이전 버전의 Java SDK를 실행하고 있나요? 버전 2.0.1부터는 일시적인 네트워크 및 백 엔드 오류와 로컬 드라이브의 데이터 지속성을 처리하는 내결함성 메커니즘을 도입했습니다.

  • 과도한 원격 분석으로 인해 제한이 발생했는지 확인합니다. INFO 로깅을 켜면 "앱이 제한됨" 로그 메시지가 표시됩니다. 현재 제한은 초당 약 32,000개 원격 분석 항목입니다.

Java 에이전트가 종속성 데이터를 캡처할 수 없습니다.

  • Java 에이전트를 구성했나요?

  • Java 에이전트 jar 파일과 AI-Agent.xml 파일이 모두 동일한 폴더에 배치되었는지 확인합니다.

  • 자동 수집하려는 종속성이 자동 수집에 지원되는지 확인합니다. 현재 MySQL, Microsoft SQL Server, Oracle DB 및 Azure Cache for Redis 종속성 컬렉션만 지원합니다.

사용량 현황 데이터 없음

요청 및 응답 시간에 대한 데이터가 표시되지만 페이지 보기, 브라우저 또는 사용자 데이터는 표시되지 않습니다.

서버에서 원격 분석을 보내도록 앱을 성공적으로 설정했습니다. 이제 다음 단계는 웹 브라우저에서 원격 분석을 보내도록 웹 페이지를 설정하는 것입니다.

또는 클라이언트가 휴대폰 또는 다른 디바이스의 앱인 경우 여기에서 원격 분석을 보낼 수 있습니다.

동일한 계측 키를 사용하여 클라이언트 및 서버 원격 분석을 모두 설정합니다. 데이터는 동일한 Application Insights 리소스에 표시되며 클라이언트와 서버의 이벤트 상관 관계를 지정할 수 있습니다.

원격 분석 사용 안 함

원격 분석 수집을 사용하지 않도록 설정하려면 어떻게 해야 하나요?

다음 솔루션 중 하나를 따릅니다.

  • 코드에서 컬렉션 사용 안 함:

    TelemetryConfiguration config = TelemetryConfiguration.getActive();
    config.setTrackingIsDisabled(true);
    
  • 프로젝트의 resources 폴더에 있는 ApplicationInsights.xml 업데이트합니다. 루트 노드 아래에 다음 XML 요소를 추가합니다.

    <DisableTelemetry>true</DisableTelemetry>
    

    XML 메서드를 사용하는 경우 값을 변경할 때 애플리케이션을 다시 시작해야 합니다.

대상 변경

프로젝트에서 데이터를 보내는 Azure 리소스를 변경하려면 어떻게 해야 하나요?

  • 새 리소스의 계측 키를 가져옵니다.

  • Eclipse용 Azure 도구 키트를 사용하여 프로젝트에 Application Insights를 추가한 경우 웹 프로젝트를 마우스 오른쪽 단추로 클릭하고 Azure>Application Insights 구성을 선택한 다음 키를 변경합니다.

  • 계측 키를 환경 변수로 구성한 경우 환경 변수의 값을 새 iKey로 업데이트해야 합니다.

  • 그렇지 않으면 프로젝트의 resources 폴더에 있는ApplicationInsights.xml 키를 업데이트합니다.

SDK에서 데이터 디버그

SDK가 수행하는 작업을 어떻게 확인할 수 있나요?

API에서 발생하는 일에 대한 자세한 내용을 보려면 ApplicationInsights.xml 구성 파일의 루트 노드 내에 SDKLogger> 요소를 추가<합니다.

ApplicationInsights.xml

<SDKLogger> 요소에서 로거에 파일로 출력하도록 지시할 수도 있습니다.

<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>

Spring Boot Starter

Application Insights Spring Boot 스타터를 사용하여 Spring Boot 앱에서 SDK 로깅을 사용하도록 설정하려면 application.properties 파일에 다음 줄을 추가합니다.

azure.application-insights.logger.type=file
azure.application-insights.logger.base-folder-path=C:/agent/AISDK
azure.application-insights.logger.level=trace

또는 표준 오류 스트림에 인쇄할 수 있습니다.

azure.application-insights.logger.type=console
azure.application-insights.logger.level=trace

Java 에이전트

JVM 에이전트 로깅을 사용하도록 설정하려면 AI-Agent.xml 파일을 업데이트합니다.

<AgentLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AIAGENT</BaseFolderPath>
</AgentLogger>

Java 명령줄 속성

버전 2.4.0 이후

구성 파일을 변경하는 대신 명령줄 옵션을 사용하여 로깅을 사용하도록 설정하려면 다음 명령을 실행합니다.

java -Dapplicationinsights.logger.file.level=trace \
    -Dapplicationinsights.logger.file.uniquePrefix=AI \
    -Dapplicationinsights.logger.baseFolderPath="C:/my/log/dir" \
    -jar MyApp.jar

또는 다음 명령을 실행하여 표준 오류 스트림에 인쇄합니다.

java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar

Azure 시작 화면

나는 Azure Portal 보고 있다. 맵에서 내 앱에 대해 알려 주나요?

아니요, 전 세계 Azure 서버의 상태를 보여줍니다.

Azure 시작 보드(홈 화면)에서 내 앱에 대한 데이터를 찾을 어떻게 할까요? 있나요?

Application Insights용 앱을 설정했다면Application Insights찾아보기를> 선택한 다음, 앱에 대해 만든 앱 리소스를 선택합니다. 나중에 더 빠르게 시작하려면 앱을 시작 보드에 고정합니다.

인트라넷 서버

내 인트라넷에서 서버를 모니터링할 수 있나요?

예. 서버가 공용 인터넷을 통해 Application Insights 포털로 원격 분석을 보낼 수 있는 경우

SDK가 포털로 데이터를 보낼 수 있도록 서버 방화벽에서 일부 나가는 포트를 열어 야 할 수 있습니다.

데이터 보존

포털에서 데이터가 보존되는 기간은 얼마인가요? 안전한가요?

데이터 보존 및 개인 정보를 참조하세요.

디버그 로깅

Application Insights는 를 사용합니다 org.apache.http. 이 네임스페이스는 네임스페이스 아래 com.microsoft.applicationinsights.core.dependencies.http의 Application Insights 코어 jar 내에서 재배치됩니다. 이 재배치를 통해 Application Insights는 하나의 코드 베이스에 동일한 org.apache.http 버전이 서로 다른 시나리오를 처리할 수 있습니다.

참고

앱의 모든 네임스페이스에 대해 -level 로깅을 사용하도록 설정DEBUG하면 실행 중인 모든 모듈(이름 바꾸기 com.microsoft.applicationinsights.core.dependencies.http포함org.apache.http)이 적용됩니다. Apache 라이브러리에서 로그 호출을 수행하므로 Application Insights는 이러한 호출에 대한 필터링을 적용할 수 없습니다. DEBUG-level 로깅은 상당한 양의 로그 데이터를 생성하며 라이브 프로덕션 인스턴스에는 권장되지 않습니다.

다음 단계

Java 서버 앱에 대해 Application Insights를 설정했습니다. 그 밖에 무엇을 할 수 있나요?

도움말 보기

타사 정보 고지 사항

이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.