애플리케이션 맵: 분산 애플리케이션 심사
개발자는 애플리케이션 맵을 사용하여 분산 애플리케이션의 논리적 구조를 나타냅니다. 맵은 기록된 원격 분석의 roleName
또는 name
속성으로 개별 애플리케이션 구성 요소를 식별하여 생성됩니다. 맵의 원(또는 노드)은 구성 요소를 나타내고 방향선(커넥터 또는 에지)은 원본 노드에서 대상 노드로의 HTTP 호출을 나타냅니다.
Azure Monitor는 애플리케이션 맵을 제공하여 모든 구성 요소에서 신속하게 맵을 구현하고 성능 병목 상태 또는 실패 핫스팟을 발견할 수 있도록 지원합니다. 각 맵 노드는 애플리케이션 구성 요소 또는 해당 종속성이며 상태 KPI 및 경고 상태를 제공합니다. 노드를 선택하여 Application Insights 이벤트와 같은 구성 요소에 대한 자세한 진단을 볼 수 있습니다. 앱에서 Azure 서비스를 사용하는 경우 SQL Database Advisor 권장 사항과 같은 Azure 진단을 선택할 수도 있습니다.
또한 애플리케이션 맵에는 빠른 서비스 상태 조사를 지원하는 지능형 뷰가 있습니다.
구성 요소 이해
구성 요소는 분산 또는 마이크로 서비스 애플리케이션의 독립적으로 배포 가능한 부분입니다. 개발자 및 운영 팀은 이러한 애플리케이션 구성 요소에서 생성된 원격 분석에 대한 코드 수준의 가시성 또는 액세스 권한을 갖습니다.
구성 요소에 대한 몇 가지 고려 사항:
- 구성 요소는 팀이나 조직이 액세스할 수 없는 Azure SQL 및 Azure Event Hubs(코드 또는 원격 분석)와 같은 "관찰된" 외부 종속성과 다릅니다.
- 구성 요소는 원하는 수의 서버, 역할 또는 컨테이너 인스턴스에서 실행됩니다.
- 구독이 다른 경우에도 구성 요소는 별도의 Application Insights 리소스일 수 있습니다. 또한 단일 Application Insights 리소스에 보고하는 다른 역할일 수도 있습니다. 맵 미리 보기 환경은 구성 요소를 설정 방식에 관계없이 표시합니다.
애플리케이션 맵 살펴보기
애플리케이션 맵을 통해 여러 수준의 관련된 애플리케이션 구성 요소의 전체 애플리케이션 토폴로지를 볼 수 있습니다. 앞서 설명한 대로, 구성 요소는 다른 Application Insights 리소스, 종속 구성 요소 또는 단일 리소스에서 다른 역할일 수 있습니다. 애플리케이션 맵은 Application Insights SDK가 설치된 서버 간에 수행된 HTTP 종속성 호출에 따라 구성 요소를 찾습니다.
매핑 환경은 애플리케이션 내 구성 요소 및 해당 종속성을 점진적으로 검색하는 것으로 시작합니다. 애플리케이션 맵을 처음 로드하면 이 구성 요소와 관련된 구성 요소를 검색하기 위해 쿼리 세트가 트리거됩니다. 구성 요소가 검색되면 상태 표시줄에 현재 검색된 구성 요소의 수가 표시됩니다.
다음 섹션에서는 Azure Portal에서 애플리케이션 맵 관련 작업에 사용할 수 있는 몇 가지 작업에 대해 설명합니다.
맵 구성 요소 업데이트
맵 구성 요소 업데이트 옵션은 구성 요소의 검색을 트리거하고 맵을 새로 고쳐 모든 현재 노드를 표시합니다. 애플리케이션의 복잡성에 따라 업데이트를 로드하는 데 1분 정도 걸릴 수 있습니다.
모든 애플리케이션 구성 요소가 단일 Application Insights 리소스 내의 역할인 경우 이 검색 단계는 필요하지 않습니다. 이 애플리케이션 시나리오의 초기 로드는 모든 구성 요소를 검색합니다.
구성 요소 세부 정보 보기
애플리케이션 맵 환경의 주요 목표는 수 백 개의 구성 요소가 있는 복잡한 토폴로지의 시각화를 돕는 것입니다. 이 시나리오에서는 세부 정보 보기 옵션을 사용하여 개별 노드에 대한 세부 정보로 맵 보기를 개선하는 것이 유용합니다. 노드 세부 정보 창에는 선택한 구성 요소에 대한 관련 인사이트, 성능 및 실패 심사 환경이 표시됩니다.
각 창 섹션에는 실패, 성능 및 실패한 요청 및 종속성에 대한 세부 정보를 포함하여 확장된 뷰에서 자세한 정보를 볼 수 있는 옵션이 포함되어 있습니다.
오류 조사
노드 세부 정보 창에서 실패 조사 옵션을 사용하여 구성 요소에 대한 모든 실패를 볼 수 있습니다.
실패 뷰에서는 선택한 구성 요소와 관련된 작업, 종속성, 예외 및 역할에 대한 실패 데이터를 살펴볼 수 있습니다.
성능 조사
노드 세부 정보 창에서 성능 조사 옵션을 선택하여 구성 요소의 성능 문제를 해결할 수 있습니다.
성능 뷰를 통해 선택한 구성 요소와 연결된 작업, 종속성 및 역할에 대한 원격 분석 데이터를 살펴볼 수 있습니다.
세부 정보 및 스택 추적으로 이동
노드 세부 정보 창의 세부 정보로 이동 옵션은 구성 요소에 대한 엔드투엔드 트랜잭션 환경을 표시합니다. 이 창을 사용하면 호출 스택 수준에서 세부 정보를 볼 수 있습니다.
페이지가 열리면 세부 정보에 대한 타임라인 뷰가 표시됩니다.
모두 보기 옵션을 사용하여 구성 요소에 대한 추적 및 이벤트 정보가 포함된 스택 세부 정보를 볼 수 있습니다.
로그에서 보기(분석)
노드 세부 정보 창에서 로그에서 보기(분석) 옵션을 사용하여 애플리케이션 데이터를 추가로 쿼리하고 조사할 수 있습니다.
로그(분석) 페이지에서는 기본 제공 또는 사용자 지정 쿼리 및 함수를 사용하여 애플리케이션 원격 분석 테이블 레코드를 탐색하는 옵션을 제공합니다. 형식을 조정하고 분석을 저장하고 내보내어 데이터 작업을 수행할 수 있습니다.
경고 및 규칙 보기
노드 세부 정보 창의 경고 보기 옵션을 사용하면 활성 경고를 볼 수 있습니다.
경고 페이지에는 중요 및 발생한 경고가 표시됩니다.
경고 페이지의 경고 규칙 옵션은 경고가 트리거되도록 하는 기본 규칙을 보여 줍니다.
클라우드 역할 이름 및 노드 이해
애플리케이션 맵에서는 클라우드 역할 이름 속성을 사용하여 맵에 있는 구성 요소를 식별합니다. 구성 요소 노드에서 클라우드 역할 이름이 사용되는 방식을 살펴보려면 여러 클라우드 역할 이름이 있는 애플리케이션 맵을 살펴보세요.
다음 예제에서는 5개의 구성 요소 노드와 9개의 종속 노드에 대한 커넥터가 있는 계층적 뷰의 맵을 보여 줍니다. 각 노드에는 클라우드 역할 이름이 있습니다.
애플리케이션 맵은 노드에 대해 다양한 색, 강조 표시 및 크기를 사용하여 애플리케이션 구성 요소 데이터 및 관계를 나타냅니다.
클라우드 역할 이름은 분산 애플리케이션의 다양한 측면을 표현합니다. 이 예제에서 일부 애플리케이션 역할에는
Contoso Retail Check
,Fabrikam-App
,fabrikam-loadfunc
,retailfabrikam-37ha6
및retailapp
이 포함됩니다.노드 주위의 점선 파란색 원은 마지막으로 선택한 구성 요소를 나타냅니다. 이 예제에서 마지막으로 선택한 구성 요소는
Web
노드입니다.세부 정보를 볼 노드를 선택하면 단색 파란색 원이 노드를 강조 표시합니다. 이 예제에서 현재 선택된 노드는
Contoso Retail Reports
입니다.먼 또는 관련 없는 구성 요소 노드는 다른 노드에 비해 더 작게 표시됩니다. 이러한 항목은 현재 선택한 구성 요소의 성능을 강조 표시하기 위해 뷰에서 흐리게 표시됩니다.
이 예제에서 각 클라우드 역할 이름은 자체 계측 키가 있는 서로 다른 고유한 Application Insights 리소스도 나타냅니다. 이 애플리케이션의 소유자는 4개의 서로 다른 Application Insights 리소스 각각에 액세스할 수 있으므로, 애플리케이션 맵은 기본 관계의 맵을 함께 연결할 수 있습니다.
클라우드 역할 인스턴스 조사
클라우드 역할 이름이 웹 프런트 엔드의 어딘가에 문제를 표시하고 웹 프런트 엔드에서 여러 부하 분산 서버를 실행하는 경우 클라우드 역할 인스턴스를 사용하는 것이 유용할 수 있습니다. 애플리케이션 맵을 사용하면 Kusto 쿼리를 사용하여 구성 요소 노드에 대한 자세한 정보를 볼 수 있습니다. 노드를 조사하여 특정 클라우드 역할 인스턴스에 대한 세부 정보를 볼 수 있습니다. 이 방법을 사용하면 문제가 모든 웹 프런트 엔드 서버 또는 특정 인스턴스에만 영향을 주는지 여부를 확인할 수 있습니다.
클라우드 역할 인스턴스에 대한 값을 재정의하려는 시나리오는 앱이 컨테이너화된 환경에서 실행되는 경우입니다. 이 경우 개별 서버에 대한 정보가 특정 문제를 찾기에 충분하지 않을 수 있습니다.
원격 분석 이니셜라이저를 사용하여 클라우드 역할 이름 속성을 재정의하는 방법에 대한 자세한 내용은 속성 추가: ITelemetryInitializer을 참조하세요.
클라우드 역할 이름 설정
애플리케이션 맵은 클라우드 역할 이름 속성을 사용하여 맵에 있는 구성 요소를 식별합니다. 이 섹션에서는 클라우드 역할 이름을 수동으로 설정하거나 재정의하고 애플리케이션 맵에 표시되는 항목을 변경하는 예를 제공합니다.
참고 항목
Application Insights SDK 또는 에이전트는 Azure App Service 환경에서 구성 요소가 내보낸 원격 분석에 클라우드 역할 이름 속성을 자동으로 추가합니다.
다음 코드 조각은 클라우드 역할 및 클라우드 역할 인스턴스에 대한 스키마 정의를 보여 줍니다.
[Description("Name of the role the application is a part of. Maps directly to the role name in Azure.")]
[MaxStringLength("256")]
705: string CloudRole = "ai.cloud.role";
[Description("Name of the instance where the application is running. Computer name for on-premises, instance name for Azure.")]
[MaxStringLength("256")]
715: string CloudRoleInstance = "ai.cloud.roleInstance";
사용자 지정 TelemetryInitializer 작성
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;
namespace CustomInitializer.Telemetry
{
public class MyTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
{
//set custom role name here
telemetry.Context.Cloud.RoleName = "Custom RoleName";
telemetry.Context.Cloud.RoleInstance = "Custom RoleInstance";
}
}
}
}
ASP.NET 앱: 활성 TelemetryConfiguration에서 이니셜라이저 로드
ApplicationInsights.config 파일에서:
<ApplicationInsights>
<TelemetryInitializers>
<!-- Fully qualified type name, assembly name: -->
<Add Type="CustomInitializer.Telemetry.MyTelemetryInitializer, CustomInitializer"/>
...
</TelemetryInitializers>
</ApplicationInsights>
ASP.NET 웹앱의 다른 방법은 코드에서 이니셜라이저를 인스턴스화하는 것입니다. 다음 예제에서는 Global.aspx.cs 파일의 코드를 보여 줍니다.
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
protected void Application_Start()
{
// ...
TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
}
참고 항목
ApplicationInsights.config
또는 TelemetryConfiguration.Active
속성을 사용하여 이니셜라이저를 추가하는 것은 ASP.NET Core 애플리케이션에는 유효하지 않습니다.
ASP.NET Core 앱: TelemetryConfiguration에 이니셜라이저 로드
ASP.NET Core 애플리케이션의 경우 새 TelemetryInitializer
인스턴스를 추가하려면 종속성 주입 컨테이너에 추가합니다. 다음 예에서는 이러한 방법을 보여 줍니다. Startup.cs
클래스의 ConfigureServices
메서드에서 이 코드를 추가합니다.
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}
애플리케이션 맵 필터 사용
애플리케이션 맵 필터를 사용하면 맵에 표시되는 노드 및 가장자리의 수를 줄일 수 있습니다. 이러한 필터를 사용하여 맵의 범위를 줄이고 더 작고 집중된 맵을 표시할 수 있습니다.
필터링하는 빠른 방법은 맵의 노드에 대한 상황에 맞는 메뉴에서 이 노드의 필터 옵션을 사용하는 것입니다.
필터 추가 옵션을 사용하여 필터를 만들 수도 있습니다.
필터 유형(노드 또는 커넥터) 및 원하는 설정을 선택한 다음 선택 항목을 검토하고 현재 맵에 적용합니다.
노드 필터 만들기
노드 필터를 사용하면 애플리케이션 맵에서 특정 노드만 보고 다른 모든 노드를 숨길 수 있습니다. 조건과 일치하는 값에 대해 맵에 있는 노드의 속성을 검색하도록 매개 변수를 구성합니다. 노드 필터가 노드를 제거하면 필터는 노드에 대한 모든 커넥터와 에지도 제거합니다.
노드 필터에는 구성할 세 가지 매개 변수가 있습니다.
포함된 노드: 일치하는 속성에 대해 애플리케이션 맵에서 검토할 노드 유형입니다. 4가지 옵션이 있습니다.
노드, 원본 및 대상: 검색 조건과 일치하는 모든 노드가 결과 맵에 포함됩니다. 원본 또는 대상이 검색 조건을 충족하지 않더라도 일치하는 노드에 대한 모든 원본 및 대상 노드도 결과 맵에 자동으로 포함됩니다. 원본 및 대상 노드를 통칭하여 연결된 노드라고 합니다.
노드 및 원본: 노드, 원본 및 대상과 동일한 동작이지만 대상 노드는 결과 맵에 자동으로 포함되지 않습니다.
노드 및 대상: 노드, 원본 및 대상과 동일한 동작이지만 원본 노드는 결과 맵에 자동으로 포함되지 않습니다.
노드만: 결과 맵의 모든 노드에는 검색 조건과 일치하는 속성 값이 있어야 합니다.
연산자: 각 노드의 속성 값에 대해 수행할 조건부 테스트의 유형입니다. 4가지 옵션이 있습니다.
contains
: 노드 속성 값은 검색 값 매개 변수에 지정된 값을 포함합니다.!contains
노드 속성 값은 검색 값 매개 변수에 지정된 값을 포함하지 않습니다.==
: 노드 속성 값은 검색 값 매개 변수에 지정된 값과 같습니다.!=
: 노드 속성 값이 검색 값 매개 변수에 지정된 값과 같지 않습니다.
검색 값: 속성 값 조건부 테스트에 사용할 텍스트 문자열입니다. 매개 변수의 드롭다운 목록에 애플리케이션 맵의 기존 노드에 대한 값이 표시됩니다. 목록에서 값을 선택하거나 고유한 값을 만들 수 있습니다. 매개 변수 필드에 사용자 지정 값을 입력한 다음 목록에서 만들기 옵션 ...을 선택합니다. 예를 들어,
test
를 입력한 다음 목록에서 만들기 옵션 "테스트"를 선택할 수 있습니다.
다음 이미지는 30일간의 데이터를 보여 주는 애플리케이션 맵에 적용된 필터의 예를 보여 줍니다. 필터는 애플리케이션 맵에 "retailapp" 텍스트를 포함하는 속성이 있는 노드 및 연결된 대상을 검색할 것을 지시합니다.
일치하는 노드와 연결된 대상 노드가 결과 맵에 포함됩니다.
커넥터(에지) 필터 만들기
커넥터 필터를 사용하면 애플리케이션 맵에서 특정 커넥터가 있는 특정 노드만 보고 다른 모든 노드와 커넥터를 숨길 수 있습니다. 조건과 일치하는 값에 대해 맵에 있는 커넥터의 속성을 검색하도록 매개 변수를 구성합니다. 노드에 일치하는 커넥터가 없으면 필터가 맵에서 해당 노드를 제거합니다.
커넥터 필터에는 구성할 세 가지 매개 변수가 있습니다.
커넥터 필터링 기준: 애플리케이션 맵에서 일치하는 속성에 대해 검토할 커넥터 유형입니다. 네 가지 선택 사항이 있습니다. 사용자의 선택은 다른 두 매개 변수에 사용할 수 있는 옵션을 제어합니다.
연산자: 각 커넥터의 값에 대해 수행할 조건부 테스트의 유형입니다.
값: 속성 값 조건부 테스트에 사용할 비교 값입니다. 매개 변수의 드롭다운 목록에는 현재 애플리케이션 맵과 관련된 값이 포함됩니다. 목록에서 값을 선택하거나 고유한 값을 만들 수 있습니다. 예를 들어
16
을 입력한 다음 목록에서 만들기 옵션 "16"을 선택할 수 있습니다.
다음 표에서는 커넥터 필터링 기준 매개 변수에 대한 선택사항에 기반한 구성 옵션을 요약합니다.
커넥터 필터링 기준 | 설명 | 연산자 매개 변수 | 값 매개 변수 | 사용 |
---|---|---|---|---|
오류 커넥터(빨간색으로 강조) | 색에 따라 커넥터를 검색합니다. 빨간색은 커넥터가 오류 상태임을 나타냅니다. | == : 같음 != : 같지 않음 |
항상 오류로 설정 | 오류가 있는 커넥터만 표시하거나 오류가 없는 커넥터만 표시합니다. |
오류율(0% - 100%) | 평균 오류율(실패한 호출 수를 모든 호출 수로 나눈 값)에 따라 커넥터를 검색합니다. 값은 백분율로 표시됩니다. | >= 크거나 같음 <= 작거나 같음 |
드롭다운 목록에 애플리케이션 맵의 현재 커넥터와 관련된 평균 오류율이 표시됩니다. 목록에서 값을 선택하거나 앞에서 설명한 프로세스에 따라 사용자 지정 값을 입력합니다. | 선택한 값보다 크거나 낮은 실패율을 가진 커넥터를 표시합니다. |
평균 통화 기간(밀리초) | 커넥터 전체에서 모든 호출의 평균 기간을 기준으로 커넥터를 검색합니다. 값은 밀리초 단위로 측정됩니다. | >= 크거나 같음 <= 작거나 같음 |
드롭다운 목록에 애플리케이션 맵의 현재 커넥터와 관련된 평균 기간이 표시됩니다. 예를 들어 값 1000 은 평균 기간이 1초인 호출을 나타냅니다. 목록에서 값을 선택하거나 앞에서 설명한 프로세스에 따라 사용자 지정 값을 입력합니다. |
평균 호출 기간 속도가 선택한 값보다 크거나 낮은 커넥터를 표시합니다. |
호출 수 | 커넥터 전체의 총 호출 수를 기준으로 커넥터를 검색합니다. | >= 크거나 같음 <= 작거나 같음 |
드롭다운 목록에 애플리케이션 맵의 현재 커넥터와 관련된 총 호출 수가 표시됩니다. 목록에서 값을 선택하거나 앞에서 설명한 프로세스에 따라 사용자 지정 값을 입력합니다. | 호출 수가 선택한 값보다 크거나 낮은 커넥터를 표시합니다. |
값에 대한 백분위수 표시기
오류율, 평균 호출 기간 또는 호출 수로 커넥터를 필터링할 경우, 값 매개 변수에 대한 일부 옵션에는 (Pxx)
지정이 포함됩니다. 이 표시기는 백분위수 수준을 표시합니다. 평균 호출 기간 필터의 경우 200 (P90)
값이 표시될 수 있습니다. 이 옵션은 (나타내는 호출 수에 관계없이) 모든 커넥터의 90%가 호출 기간이 200ms 미만임을 의미합니다.
매개 변수 필드에 P
를 입력하여 백분위수 수준을 포함하는 값 옵션을 볼 수 있습니다.
필터 검토
옵션을 선택하면 필터 추가 팝업의 검토 섹션에 선택한 필터에 대한 텍스트 및 시각적 설명이 표시됩니다. 요약 디스플레이는 필터가 애플리케이션 맵에 적용되는 방식을 이해하는 데 도움이 될 수 있습니다.
다음 예제에서는 "-west" 텍스트를 가지는 속성에 대해 노드 및 대상을 검색하는 노드 필터에 대한 검토 요약을 보여 줍니다.
이 예제에서는 평균 호출 기간이 42ms보다 크거나 같은 커넥터(연결 노드)를 검색하는 커넥터 필터에 대한 요약을 보여 줍니다.
맵에 필터 적용
필터 설정을 구성하고 검토한 후 적용을 선택하여 필터를 만듭니다. 동일한 애플리케이션 맵에 여러 필터를 적용할 수 있습니다. 애플리케이션 맵에서 적용된 필터는 맵 위에 알약으로 표시됩니다.
필터 알약의 제거 작업 을 사용하면 필터를 삭제할 수 있습니다. 적용된 필터를 삭제하면 맵 뷰가 필터 로직을 빼도록 업데이트됩니다.
애플리케이션 맵은 목록의 가장 왼쪽 필터부터 시작하여 필터 로직을 맵에 순차적으로 적용합니다. 필터가 적용되면 노드 및 커넥터가 맵 뷰에서 제거됩니다. 뷰에서 노드 또는 커넥터가 제거된 후, 후속 필터는 항목을 복원할 수 없습니다.
필터 알약을 선택하여 적용된 필터에 대한 구성을 변경할 수 있습니다. 필터 설정을 변경하면 애플리케이션 맵에 새 필터 로직이 포함된 맵 뷰의 미리보기가 표시됩니다. 변경 내용을 적용하지 않기로 결정한 경우 현재 맵 뷰 및 필터에 취소 옵션을 사용할 수 있습니다.
필터 탐색 및 저장
흥미로운 필터를 발견하면 필터를 저장하여 나중에 링크 복사 또는 대시보드에 고정 옵션과 함께 다시 사용할 수 있습니다.
링크 복사 옵션은 복사된 URL의 모든 현재 필터 설정을 인코딩합니다. 이 링크를 브라우저 책갈피에 저장하거나 다른 사용자와 공유할 수 있습니다. 이 기능은 필터 설정에서 기간 값을 유지하지만 절대 시간은 유지하지 않습니다. 나중에 링크를 사용하는 경우 생성된 애플리케이션 맵은 링크가 캡처된 시점에 있는 맵과 다를 수 있습니다.
대시보드에 고정 옵션은 현재 필터와 함께 현재 애플리케이션 맵을 대시보드에 추가합니다. 일반적인 진단 방법은 오류 커넥터 필터가 적용된 맵을 고정하는 것입니다. HTTP 호출에서 오류가 있는 노드에 대한 애플리케이션을 모니터링할 수 있습니다.
다음 섹션에서는 대부분의 맵에 적용되고 대시보드에 고정하는 데 유용할 수 있는 몇 가지 일반적인 필터에 대해 설명합니다.
중요한 오류 확인
지난 24시간 동안 오류(빨간색 강조 표시)가 있는 커넥터만의 지도 뷰를 생성합니다. 필터에는 지능형 뷰와 결합된 오류 커넥터 매개 변수가 포함됩니다.
지능형 뷰 기능은 이 문서의 뒷부분에 설명되어 있습니다.
트래픽이 적은 커넥터 숨기기
맵 보기에서 오류 없이 트래픽이 적은 커넥터를 숨기면 더 중요한 문제에 빠르게 집중할 수 있습니다. 필터에는 지난 24시간 동안 호출 수가 2872(P20)보다 큰 커넥터가 포함됩니다.
트래픽이 많은 커넥터 표시
평균 호출 기간도 높은 트래픽이 많은 커넥터를 표시합니다. 이 필터는 잠재적인 성능 문제를 식별하는 데 도움이 될 수 있습니다. 이 예제의 필터에는 지난 24시간 동안 호출 수가 10854(P50)보다 크고 평균 호출 기간이 578(P80)보다 큰 커넥터가 포함됩니다.
이름으로 구성 요소 찾기
구성 요소 roleName
속성 명명 규칙의 구현에 따라 이름으로 애플리케이션에 있는 구성 요소(노드 및 커넥터)를 찾습니다. 이 방법을 사용하여 분산 애플리케이션의 특정 부분을 볼 수 있습니다. 필터는 지난 24시간 동안 지정된 값을 포함하는 노드, 원본 및 대상을 검색합니다. 이 예제에서 검색 값은 "west"입니다.
노이즈가 많은 구성 요소 제거
맵에서 노이즈가 많은 구성 요소를 제거하여 이를 숨기는 필터를 정의합니다. 경우에 따라 애플리케이션 구성 요소에는 맵 뷰에 필수적이지 않은 데이터를 생성하는 활성 종속 노드가 있을 수 있습니다. 이 예제에서 필터는 지난 24시간 동안 지정된 값 "retail"을 포함하지 않는 노드, 원본 및 대상을 검색합니다.
오류가 발생하기 쉬운 커넥터 찾기
특정 값보다 오류율이 높은 커넥터만 표시합니다. 이 예제의 필터는 지난 24시간 동안 오류율이 3%보다 큰 커넥터를 검색합니다.
지능형 뷰 살펴보기
애플리케이션 맵의 지능형 뷰 기능은 서비스 상태 조사를 지원하도록 설계되었습니다. 기계 학습을 적용하여 노이즈를 필터링하여 문제의 잠재적인 근본 원인을 빠르게 식별합니다. 기계 학습 모델은 애플리케이션 맵의 기록 동작에서 학습하여 인시던트의 잠재적 원인을 나타내는 지배적인 패턴과 변칙을 식별합니다.
대규모 분산 애플리케이션에서는 항상 "양성" 실패로 인해 어느 정도의 노이즈가 있으며, 이로 인해 많은 빨간색 가장자리를 표시하여 애플리케이션 맵에 노이즈가 발생할 수 있습니다. 지능형 뷰는 서비스 실패에 대한 가장 가능성이 큰 원인만 표시하고 정상 서비스에서 노드 간 빨간색 가장자리(서비스 간 통신)를 제거합니다. 지능형 뷰는 조사해야 하는 가장자리를 빨간색으로 강조 표시합니다. 또한 강조 표시된 가장자리에 대해 실행 가능한 인사이트를 제공합니다.
지능형 뷰를 사용할 경우 많은 이점이 있습니다.
- 조사해야 하는 오류만 강조 표시하여 해결 시간을 줄입니다.
- 특정 빨간색 가장자리가 강조 표시된 원인에 대한 실행 가능한 인사이트를 제공합니다.
- 대규모 분산 애플리케이션에 애플리케이션 맵을 원활하게 사용할 수 있습니다(빨간색으로 표시된 가장자리에만 집중).
지능형 뷰에는 몇 가지 제한 사항이 있습니다.
- 대규모 분산 애플리케이션은 로드하는 데 몇 분 정도 걸릴 수 있습니다.
- 최대 7일의 시간 프레임이 지원됩니다.
지능형 뷰 작업
애플리케이션 맵 위의 토글을 사용하면 지능형 뷰를 사용하도록 설정하고 문제 감지 민감도를 제어할 수 있습니다.
지능형 뷰는 특허 받은 AIOps 기계 학습 모델을 사용하여 애플리케이션 맵에서 정말로 중요한 데이터를 강조 표시합니다(빨간색). 다양한 애플리케이션 데이터를 사용하여 실패율, 요청 수, 기간, 변칙 및 종속성 유형을 포함하여 맵에서 강조 표시할 데이터를 결정합니다. 비교를 위해 표준 맵 뷰는 원시 실패율만 활용합니다.
애플리케이션 맵은 민감도 설정에 따라 가장자리를 빨간색으로 강조 표시합니다. 강조 표시된 가장자리에서 원하는 신뢰도 수준을 달성하도록 민감도를 조정할 수 있습니다.
민감도 | 설명 |
---|---|
높음 | 강조 표시된 가장자리 수가 줄어듭니다. |
중간 | (기본 설정) 균형 잡힌 가장자리 수가 강조 표시됩니다. |
낮음 | 더 많은 가장자리가 강조 표시됩니다. |
실행 가능한 인사이트 확인
지능형 뷰를 사용하도록 설정한 후 맵에서 강조 표시된 가장자리(빨간색)를 선택하여 구성 요소에 대한 "실행 가능한 인사이트"를 확인합니다. 인사이트는 오른쪽 창에 표시되고 가장자리가 강조 표시된 이유를 설명합니다.
문제 해결을 시작하려면 실패 조사를 선택합니다. 실패 창에서 구성 요소에 대한 정보를 검토하여 검색된 문제가 근본 원인인지 확인할 수 있습니다.
지능형 뷰가 애플리케이션 맵의 가장자리를 강조 표시하지 않는 경우, 기계 학습 모델은 애플리케이션의 종속성에서 잠재적인 인시던트를 찾지 못했습니다.
문제 해결 팁
애플리케이션 맵이 예상대로 작동하도록 하는 데 문제가 있는 경우 다음 섹션의 제안을 검토하세요.
다음은 몇 가지 일반적인 권장 사항입니다.
공식적으로 지원되는 SDK를 사용합니다. 지원되지 않거나 커뮤니티 SDK는 상관 관계를 지원하지 않을 수 있습니다. 지원되는 SDK 목록은 Application Insights: 언어, 플랫폼 및 통합을 참조하세요.
모든 구성 요소를 최신 SDK 버전으로 업그레이드합니다.
Azure Functions V2로 업그레이드하여 C#에서 Azure Functions를 지원합니다.
클라우드 역할 이름이 올바르게 구성되었는지 확인합니다.
누락된 종속성이 자동으로 수집된 종속성으로 나열되는지 확인합니다. 종속성이 나열되지 않으면 종속성 호출 추적을 사용하여 수동으로 추적할 수 있습니다.
맵에 노드가 너무 많음
애플리케이션 맵은 요청 원격 분석에서 각 고유한 클라우드 역할 이름에 대한 구성 요소 노드를 추가합니다. 또한 프로세스는 유형, 대상 및 클라우드 역할 이름의 고유한 각 조합에 대한 종속성 노드를 추가합니다.
원격 분석에 노드가 10,000개 이상 있는 경우 애플리케이션 맵은 모든 노드와 링크를 가져올 수 없습니다. 이 시나리오에서는 맵 구조가 불완전합니다. 이 시나리오가 발생하면 맵을 볼 때 경고 메시지가 나타납니다.
애플리케이션 맵은 그룹화되지 않은 노드를 한 번에 최대 1,000개까지 렌더링할 수 있습니다. 애플리케이션 맵은 종속성이 형식과 호출자가 동일할 때 함께 그룹화하여 시각적 복잡성을 줄입니다.
원격 분석에 고유한 클라우드 역할 이름이 너무 많거나 종속성 형식이 너무 많으면 해당 그룹화가 충분하지 않고 맵이 렌더링되지 않습니다.
이 문제를 해결하려면 클라우드 역할 이름, 종속성 유형 및 종속성 대상 필드를 올바르게 설정하도록 계측을 변경해야 합니다. 애플리케이션이 다음 조건을 준수하는지 확인합니다.
각 종속성 대상은 종속성의 논리적 이름을 나타냅니다. 대부분의 경우 이 값은 종속성의 서버 또는 리소스 이름과 동일합니다. 예를 들어 HTTP 종속성이 있는 경우 값은 호스트 이름입니다. 값에 한 요청에서 다른 요청으로 변경되는 고유 ID 또는 매개 변수를 포함해서는 안 됩니다.
각 종속성 형식은 종속성의 논리적 형식을 나타냅니다. 예를 들어 HTTP, SQL 또는 Azure Blob은 일반적인 종속성 유형입니다. 이 값에 고유 ID를 포함해서는 안 됩니다.
각 클라우드 역할 이름 목적은 클라우드 역할 이름 설정 또는 재정의 섹션의 설명을 적용합니다.
지능형 뷰: 가장자리가 강조 표시되지 않음
지능형 뷰는 낮은 민감도 설정에서도 예상대로 가장자리를 강조 표시하지 않을 수 있습니다. 종속성이 실패하는 것처럼 보일 수 있지만 모델은 이 문제를 잠재적 인시던트로 나타내지 않습니다. 몇 가지 가능한 시나리오는 다음과 같습니다.
종속성이 일반적으로 실패하는 경우 모델은 실패를 구성 요소의 표준 상태로 간주하고 에지를 강조 표시하지 않을 수 있습니다. 지능형 뷰는 실시간으로 문제 해결에 중점을 둡니다.
종속성이 애플리케이션의 전반적인 성능에 최소 영향을 주는 경우 지능형 뷰는 기계 학습 모델링 중에 구성 요소를 무시할 수 있습니다.
시나리오가 고유한 경우 피드백 옵션을 사용하여 환경을 설명하고 향후 모델 버전을 개선하는 데 도움이 될 수 있습니다.
지능형 뷰: 가장자리가 강조 표시됨
지능형 뷰가 가장자리를 강조 표시하면 기계 학습 모델에서 실행 가능한 인사이트는 높은 확률 점수에 기여하는 중요한 문제를 식별해야 합니다. 권장 사항은 실패만을 기반으로 하는 것이 아니라 주요 흐름의 예기치 않은 대기 시간과 같은 다른 지표를 기반으로 한다는 것을 염두에 두세요.
지능형 뷰: 로드되지 않음
지능형 보기가 로드되지 않으면 구성되는 시간 프레임을 6일 이하로 설정합니다.
지능형 뷰: 로드 시간이 김
지능형 뷰가 로드하는 데 예상보다 오래 걸리는 경우 맵 구성 요소 업데이트 옵션을 선택하지 마세요. 단일 Application Insights 리소스에 대해서만 지능형 보기를 사용하도록 설정합니다.
관련 콘텐츠
Application Insights에서 원격 분석 상관 관계를 사용하여 상관 관계가 작동하는 방식을 알아봅니다.
모든 Application Insights 모니터링 구성 요소에서 서버 쪽 원격 분석을 단일 보기로 상관 관계를 지정하는 엔드투엔드 트랜잭션 진단 환경을 살펴봅니다.
사용자 지정 작업 추적을 사용하여 ASP.NET Core 및 ASP.NET의 고급 상관 관계 시나리오를 지원합니다.