작업 영역 기반 Application Insights 리소스

Azure MonitorApplication Insights 작업 영역 기반 리소스는 Application InsightsLog Analytics를 통합합니다.

작업 영역 기반 리소스를 사용하면 Application Insights는 원격 분석을 공통 Log Analytics 작업 영역으로 보내 애플리케이션을 유지하면서 Log Analytics의 모든 기능에 대한 모든 권한을 제공합니다. 인프라 및 플랫폼 로그가 단일 통합 위치에 있습니다. 이 통합을 통해 리소스 전반에 걸쳐 공통의 Azure 역할 기반 액세스 제어가 가능하고 앱 간/작업 영역 간 쿼리가 필요하지 않습니다.

참고 항목

작업 영역 기반 Application Insights 리소스에 대한 데이터 수집 및 보존 비용은 데이터가 있는 Log Analytics 작업 영역을 통해 청구됩니다. 작업 영역 기반 Application Insights 리소스에 대한 청구에 대한 자세한 내용은 Azure Monitor 로그 가격 책정 세부 정보를 참조하세요.

새로운 기능

작업 영역 기반 Application Insights는 Azure Monitor 및 Log Analytics와 통합되어 기능을 향상시킵니다.

  • 고객 관리형 키 는 액세스하는 키만 사용하여 미사용 데이터를 암호화합니다.
  • Azure Private Link 는 프라이빗 엔드포인트를 사용하여 Azure PaaS 서비스를 가상 네트워크에 안전하게 연결합니다.
  • Profiler 및 스냅샷 디버거 용 BYOS(Bring Your Own Storage)를 사용하면 암호화, 수명 및 네트워크 액세스에 대한 정책을 사용하여 Application Insights Profiler스냅샷 디버거 의 데이터를 관리할 수 있습니다.
  • 약정 계층은 종량제 가격 대비 최대 30% 절감할 수 있습니다.
  • Log Analytics 스트리밍은 데이터를 더 빠르게 처리합니다.

작업 영역 기반 리소스 만들기

Azure Portal에 로그인하고 Application Insights 리소스를 만듭니다.

작업 영역 기반 Application Insights 리소스를 보여 주는 스크린샷.

기존 Log Analytics 작업 영역이 없는 경우 Log Analytics 작업 영역 만들기 설명서를 참조하세요.

작업 영역 기반 리소스는 현재 모든 상업용 지역 및 Azure Government에서 사용할 수 있습니다. 서로 다른 두 지역에 Application Insights와 Log Analytics가 있으면 대기 시간에 영향을 미치고 모니터링 솔루션의 전반적인 안정성이 저하될 수 있습니다.

리소스를 만든 후에는 개요 창에 해당 작업 영역 정보가 표시됩니다.

작업 영역 이름을 보여 주는 스크린샷.

새 통합 작업 영역 쿼리 환경을 활용할 수 있는 연결된 Log Analytics 작업 영역으로 이동하려면 파란색 링크 텍스트를 선택합니다.

참고 항목

Application Insights 클래식 리소스 쿼리, 통합 문서 및 로그 기반 경고에 대한 완전한 이전 버전과의 호환성을 계속 제공합니다. 새 작업 영역 기반 테이블 구조 또는 스키마를 쿼리하거나 확인하려면 먼저 Log Analytics 작업 영역으로 이동해야 합니다. 클래식 Application Insights 쿼리 환경에 액세스하려면 Application Insights 창에서 로그(분석)를 선택합니다.

연결 문자열 복사

연결 문자열은 원격 분석 데이터를 연결하려는 리소스를 식별합니다. 또한 이를 사용하여 리소스가 원격 분석의 대상으로 사용하는 엔드포인트를 수정할 수도 있습니다. 연결 문자열을 복사하여 애플리케이션 코드나 환경 변수에 추가해야 합니다.

모니터링 구성

작업 영역 기반 Application Insights 리소스를 만든 후 모니터링을 구성합니다.

코드 기반 애플리케이션 모니터링

코드 기반 애플리케이션 모니터링의 경우 적절한 Application Insights SDK를 설치하고 새로 만들어진 리소스에 대한 연결 문자열을 가리킵니다.

코드 기반 모니터링을 위해 Application Insights SDK를 설정하는 방법에 대한 자세한 내용은 해당 언어 또는 프레임워크와 관련된 다음 설명서를 참조하세요.

코드 없는 모니터링 및 Visual Studio 리소스 만들기

Azure Functions 및 Azure App Services와 같은 서비스의 코드 없는 모니터링을 위해 먼저 작업 영역 기반 Application Insights 리소스를 만듭니다. 그런 다음 모니터링을 구성할 때 해당 리소스를 가리킵니다.

이러한 서비스는 자체 리소스 만들기 프로세스 내에서 새 Application Insights 리소스를 만드는 옵션을 제공합니다. 그러나 이러한 UI 옵션을 통해 만들어진 리소스는 현재 클래식 Application Insights 환경으로 제한됩니다.

ASP.NET 및 ASP.NET Core용 Visual Studio의 Application Insights 리소스 만들기 환경에도 동일한 제한 사항이 적용됩니다. 모니터링을 사용하도록 설정하는 Visual Studio UI에서 기존 작업 영역 기반 리소스를 선택해야 합니다. Visual Studio에서 새 리소스 만들기를 선택하면 클래식 Application Insights 리소스 만들기로 제한됩니다.

자동으로 리소스 만들기

Azure CLI

미리 보기 Application Insights Azure CLI 명령에 액세스하려면 먼저 다음을 실행해야 합니다.

 az extension add -n application-insights

az extension add 명령을 실행하지 않으면 az : ERROR: az monitor: 'app-insights' is not in the 'az monitor' command group. See 'az monitor --help' 오류 메시지가 표시됩니다.

이제 다음 코드를 실행하여 Application Insights 리소스를 만들 수 있습니다.

az monitor app-insights component create --app
                                         --location
                                         --resource-group
                                         [--application-type]
                                         [--ingestion-access {Disabled, Enabled}]
                                         [--kind]
                                         [--only-show-errors]
                                         [--query-access {Disabled, Enabled}]
                                         [--tags]
                                         [--workspace]

예시

az monitor app-insights component create --app demoApp --location eastus --kind web -g my_resource_group --workspace "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test1234/providers/microsoft.operationalinsights/workspaces/test1234555"

이 명령에 대한 전체 Azure CLI 설명서는 Azure CLI 설명서를 참조하세요.

Azure PowerShell

새 작업 영역 기반 Application Insights 리소스 만들기

New-AzApplicationInsights -Name <String> -ResourceGroupName <String> -Location <String> -WorkspaceResourceId <String>
   [-SubscriptionId <String>]
   [-ApplicationType <ApplicationType>]
   [-DisableIPMasking]
   [-DisableLocalAuth]
   [-Etag <String>]
   [-FlowType <FlowType>]
   [-ForceCustomerStorageForProfiler]
   [-HockeyAppId <String>]
   [-ImmediatePurgeDataOn30Day]
   [-IngestionMode <IngestionMode>]
   [-Kind <String>]
   [-PublicNetworkAccessForIngestion <PublicNetworkAccessType>]
   [-PublicNetworkAccessForQuery <PublicNetworkAccessType>]
   [-RequestSource <RequestSource>]
   [-RetentionInDays <Int32>]
   [-SamplingPercentage <Double>]
   [-Tag <Hashtable>]
   [-DefaultProfile <PSObject>]
   [-Confirm]
   [-WhatIf]
   [<CommonParameters>]

예시

New-AzApplicationInsights -Kind java -ResourceGroupName testgroup -Name test1027 -location eastus -WorkspaceResourceId "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/test1234/providers/microsoft.operationalinsights/workspaces/test1234555"

이 cmdlet에 대한 전체 PowerShell 설명서와 연결 문자열을 검색하는 방법을 알아보려면 Azure PowerShell 설명서를 참조하세요.

Azure 리소스 관리자 템플릿

@description('Name of Application Insights resource.')
param name string

@description('Type of app you are deploying. This field is for legacy reasons and will not impact the type of App Insights resource you deploy.')
param type string

@description('Which Azure Region to deploy the resource to. This must be a valid Azure regionId.')
param regionId string

@description('See documentation on tags: https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources.')
param tagsArray object

@description('Source of Azure Resource Manager deployment')
param requestSource string

@description('Log Analytics workspace ID to associate with your Application Insights resource.')
param workspaceResourceId string

resource component 'Microsoft.Insights/components@2020-02-02' = {
  name: name
  location: regionId
  tags: tagsArray
  kind: 'other'
  properties: {
    Application_Type: type
    Flow_Type: 'Bluefield'
    Request_Source: requestSource
    WorkspaceResourceId: workspaceResourceId
  }
}

매개 변수 파일

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "name": {
      "value": "my_workspace_based_resource"
    },
    "type": {
      "value": "web"
    },
    "regionId": {
      "value": "westus2"
    },
    "tagsArray": {
      "value": {}
    },
    "requestSource": {
      "value": "CustomDeployment"
    },
    "workspaceResourceId": {
      "value": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testxxxx/providers/microsoft.operationalinsights/workspaces/testworkspace"
    }
  }
}

연결된 작업 영역 수정

작업 영역 기반 Application Insights 리소스를 만든 후 연결된 Log Analytics 작업 영역을 수정할 수 있습니다.

Application Insights 리소스 창에서 속성>작업 영역 변경>Log Analytics 작업 영역을 선택합니다.

원격 분석 내보내기

작업 영역 기반 리소스에는 레거시 연속 내보내기 기능이 지원되지 않습니다. 대신 Application Insights 리소스에서 진단 설정>진단 설정 추가를 선택합니다. 모든 테이블 또는 테이블의 하위 집합을 선택하여 스토리지 계정에 보관할 수 있습니다. Azure Event Hubs로 스트리밍할 수도 있습니다.

참고 항목

진단 설정 내보내기는 비용을 증가시킬 수 있습니다. 자세한 내용은 Application Insights에서 원격 분석 내보내기를 참조하세요. 이 기능의 가격 책정 정보는 Azure Monitor 가격 책정 페이지를 참조하세요. 청구가 시작되기 전에 알림이 전송됩니다. 공지 기간 이후에도 원격 분석 내보내기를 계속 사용하면 해당 요금이 청구됩니다.

얼마나 많은 Application Insights 리소스를 배포해야 하나요?

웹 애플리케이션의 다음 버전을 개발할 때 새 버전과 이미 릴리스된 버전의 Application Insights 원격 분석이 혼동되지 않도록 하려고 합니다.

혼동을 방지하기 위해 서로 다른 개발 단계의 원격 분석을 별도의 연결 문자열과 함께 별도의 Application Insights 리소스에 보냅니다.

시스템이 Azure Cloud Services의 인스턴스인 경우 별도의 연결 문자열을 설정하는 다른 방법이 있습니다.

리소스 및 연결 문자열 정보

웹앱에 대한 Application Insights 모니터링을 설정할 때 Azure에서 Application Insights 리소스를 만듭니다. Azure Portal에서 리소스를 열어 앱에서 수집된 원격 분석을 보고 분석합니다. 연결 문자열 리소스를 식별합니다. 앱을 모니터링하기 위해 Application Insights 패키지를 설치하는 경우 원격 분석을 보낼 위치를 파악할 수 있도록 연결 문자열로 구성합니다.

각 Application Insights 리소스에는 기본 제공되는 메트릭이 제공됩니다. 별도의 구성 요소가 동일한 Application Insights 리소스에 대해 보고하는 경우 이러한 메트릭에 대해 경고하는 것이 적합하지 않을 수 있습니다.

단일 Application Insights 리소스를 사용하는 경우

단일 Application Insights 리소스를 사용하여 다음을 수행합니다.

  • 일반적으로 동일한 팀에서 개발 및 관리하는 함께 배포된 애플리케이션에 대한 DevOps/ITOps 관리를 간소화합니다.
  • 기본적으로 대시보드에서 응답 시간 및 실패율과 같은 주요 성과 지표를 중앙 집중화합니다. 필요한 경우 메트릭 탐색기에서 역할 이름으로 세그먼트화합니다.
  • 애플리케이션 구성 요소 간에 다른 Azure 역할 기반 액세스 제어 관리가 필요하지 않은 경우
  • 동일한 메트릭 경고 조건, 연속 내보내기 및 구성 요소 간 청구/할당량 관리로 충분합니다.
  • API 키가 모든 구성 요소의 데이터에 동등하게 액세스하도록 허용되고 10개의 API 키가 모든 구성 요소의 요구 사항을 충족하는 경우
  • 모든 역할에 동일한 스마트 검색 및 작업 항목 통합 설정이 적합한 경우

참고 항목

여러 Application Insights 리소스를 통합하려는 경우 기존 애플리케이션 구성 요소를 통합된 새 Application Insights 리소스로 가리킬 수 있습니다. 전송 리소스에 저장된 원격 분석은 새 리소스로 전송되지 않습니다. 비즈니스 연속성을 위해 새 리소스에 충분한 원격 분석이 있는 경우에만 이전 리소스를 삭제합니다.

기타 고려 사항

포털 환경을 활성화하려면 사용자 지정 코드를 추가하여 Cloud_RoleName 특성에 의미 있는 값을 할당합니다. 이러한 값이 없으면 포털 기능이 작동하지 않습니다.

Azure Service Fabric 애플리케이션 및 클래식 클라우드 서비스의 경우 SDK는 Azure 역할 환경에서 읽어 서비스를 자동으로 구성합니다. 다른 앱 유형의 경우 일반적으로 명시적으로 설정해야 합니다.

라이브 메트릭은 역할 이름으로 데이터를 분할할 수 없습니다.

더 많은 Application Insights 리소스 만들기

Applications Insights 리소스를 만들려면 Application Insights 리소스 만들기를 참조하세요.

Warning

Application Insights 리소스가 다른 지역의 Azure 리소스(예: 원격 분석 생산자)를 모니터링하는 경우 추가 네트워크 비용이 발생할 수 있습니다. 비용은 원격 분석이 제공되는 지역과 진행 중인 위치에 따라 달라집니다. 자세한 내용은 Azure 대역폭 가격 책정을 참조하세요.

연결 문자열 가져오기

연결 문자열은 사용자가 만든 리소스를 식별합니다.

앱에서 데이터를 보내는 모든 리소스의 연결 문자열 필요합니다.

빌드 번호로 필터링

새 버전의 앱을 게시할 때 원격 분석을 다른 빌드와 분리할 수 있어야 합니다.

애플리케이션 버전 속성을 설정하여 검색메트릭 탐색기 결과를 필터링할 수 있습니다.

애플리케이션 버전 속성은 몇 가지 다른 방법으로 설정할 수 있습니다.

  • 직접 설정:

    telemetryClient.Context.Component.Version = typeof(MyProject.MyClass).Assembly.GetName().Version;

  • 모든 TelemetryClient 인스턴스가 일관되게 설정되도록 원격 분석 이니셜라이저에서 해당 줄을 래핑합니다.

  • ASP.NET: BuildInfo.config에서 버전을 설정합니다. 웹 모듈은 BuildLabel 노드에서 버전을 선택합니다. 프로젝트에 이 파일을 포함하고 솔루션 탐색기에서 항상 복사 속성을 설정합니다.

    <?xml version="1.0" encoding="utf-8"?>
    <DeploymentEvent xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/VisualStudio/DeploymentEvent/2013/06">
      <ProjectName>AppVersionExpt</ProjectName>
      <Build type="MSBuild">
        <MSBuild>
          <BuildLabel kind="label">1.0.0.2</BuildLabel>
        </MSBuild>
      </Build>
    </DeploymentEvent>
    
    
  • ASP.NET: Microsoft Build Engine에서 자동으로 BuildInfo.config를 생성합니다. .csproj 파일에 몇 줄을 추가합니다.

    <PropertyGroup>
      <GenerateBuildInfoConfigFile>true</GenerateBuildInfoConfigFile>    <IncludeServerNameInBuildInfo>true</IncludeServerNameInBuildInfo>
    </PropertyGroup>
    

    이 단계에서는 yourProjectName.BuildInfo.config이라는 파일을 생성합니다. 게시 프로세스는 이름을 BuildInfo.config로 바꿉니다.

    Visual Studio를 사용하여 빌드할 때 빌드 레이블에 자리 표시자가 (*AutoGen_...*) 포함됩니다. 그러나 Microsoft Build Engine으로 빌드하면 올바른 버전 번호로 채워집니다.

    Microsoft Build Engine이 버전 번호를 생성하도록 허용하려면 AssemblyReference.cs에서 1.0.*과 같이 버전을 설정합니다.

버전 및 릴리스 추적

애플리케이션 버전을 추적하려면 Microsoft Build Engine 프로세스가 buildinfo.config를 생성해야 합니다. .csproj 파일에서 다음을 추가합니다.

<PropertyGroup>
  <GenerateBuildInfoConfigFile>true</GenerateBuildInfoConfigFile>
  <IncludeServerNameInBuildInfo>true</IncludeServerNameInBuildInfo>
</PropertyGroup>

Application Insights 웹 모듈에 빌드 정보가 있으면 자동으로 애플리케이션 버전을 모든 원격 분석 항목에 속성으로 추가합니다. 따라서 진단 검색을 수행하거나 메트릭을 탐색할 때 버전별로 필터링할 수 있습니다.

Microsoft 빌드 엔진은 Visual Studio에서 개발자 빌드가 아닌 빌드 버전 번호를 독점적으로 생성합니다.

릴리스 주석

Azure DevOps를 사용하는 경우 새 버전을 릴리스할 때마다 주석 표식이 차트에 추가됩니다.

자주 묻는 질문

이 섹션에서는 일반적인 질문에 대한 답변을 제공합니다.

Application Insights 리소스를 새 지역으로 어떻게 이동할까요?

지역 간에 기존 Application Insights 리소스 전송은 지원되지 않으며 기록 데이터를 새 지역으로 마이그레이션할 수 없습니다. 해결 방법은 다음과 같습니다.

  • 원하는 지역에 새 작업 영역 기반 Application Insights 리소스 만들기
  • 새 리소스의 원래 리소스에서 고유한 사용자 지정을 다시 만듭니다.
  • 새 지역 리소스의 연결 문자열 사용하여 애플리케이션을 업데이트합니다.
  • 모든 것이 새 Application Insights 리소스에서 예상대로 작동하는지 확인하기 위한 테스트입니다.
  • 원래 Application Insights 리소스를 유지하거나 삭제하기로 결정합니다. 클래식 리소스를 삭제하면 모든 기록 데이터가 손실되는 것을 의미합니다. 리소스가 작업 영역 기반이면 Log Analytics에서 데이터가 다시 기본 보존 기간이 만료될 때까지 기록 데이터에 액세스할 수 있습니다.

일반적으로 새 지역의 리소스에 대해 수동으로 다시 만들거나 업데이트해야 하는 고유한 사용자 지정 항목은 다음과 같습니다(단, 이에 한정되지 않음).

  • 사용자 지정 대시보드 및 통합 문서를 다시 만듭니다.
  • 사용자 지정 로그/메트릭 경고의 범위를 다시 만들거나 업데이트합니다.
  • 가용성 경고를 다시 만듭니다.
  • 사용자가 새 리소스에 액세스하는 데 필요한 모든 사용자 지정 Azure 역할 기반 액세스 제어 설정을 다시 만듭니다.
  • 수집 샘플링, 데이터 보존, 일일 상한 및 사용자 지정 메트릭과 관련된 설정을 복제합니다. 이러한 설정은 사용량 및 예상 비용 창을 통해 제어됩니다.
  • 릴리스 주석, 라이브 메트릭 보안 제어 채널 등과 같은 API 키에 의존하는 모든 통합. 새 API 키를 생성하고 연결된 통합을 업데이트해야 합니다.
  • 클래식 리소스에서 연속 내보내기를 다시 구성해야 합니다.
  • 작업 영역 기반 리소스의 진단 설정을 다시 구성해야 합니다.

참고 항목

새 지역에서 만드는 리소스가 클래식 리소스를 대체하는 경우 새 작업 영역 기반 리소스를 만들 경우의 이점을 알아보는 것이 좋습니다. 또는 기존 리소스를 작업 영역 기반으로 마이그레이션합니다.

Azure Resource Manager 배포에서 providers('Microsoft.Insights', 'components').apiVersions[0]를 사용할 수 있나요?

API 버전을 채우는 이 방법을 사용하지 않는 것이 좋습니다. 최신 버전은 호환성이 손상되는 변경이 포함될 수 있는 미리 보기 릴리스를 나타낼 수 있습니다. 미리 보기가 아닌 최신 릴리스가 있더라도 API 버전이 항상 이전 템플릿과 호환되는 것은 아닙니다. 경우에 따라 API 버전을 일부 구독에서 사용할 수 없는 경우도 있습니다.

다음 단계