Application Insights을(를) .NET Aspire 원격 분석에 사용하십시오.
Azure Monitor의 기능인 AzureApplication Insights라이브 웹 애플리케이션에 대한 APM(애플리케이션 성능 관리)에서 뛰어난 성능을 발휘합니다. .NET Aspire 프로젝트는 애플리케이션 원격 분석에 OpenTelemetry 사용하도록 설계되었습니다. OpenTelemetry 다른 APM에 데이터를 보낼 수 있도록 확장 모델을 지원합니다. .NET .NET Aspire 개발 중에 대시보드에서 사용하는 원격 분석 내보내기에 기본적으로 OTLP를 사용합니다. Azure Monitor는 OTLP를 아직 지원하지 않으므로 Azure Monitor 내보내기를 사용하도록 애플리케이션을 수정하고 연결 문자열로 구성해야 합니다.
Application Insights를 사용하려면 앱 호스트 프로젝트
Application Insights의 프로비저닝 방식을 선택하기
.NET Aspire Application Insights포함하여 클라우드 배포의 일부로 클라우드 리소스를 프로비전할 수 있습니다. .NET Aspire 프로젝트에서는 Azure에 배포할 때 .NET Aspire이 Application Insights 리소스를 프로비저닝할지 여부를 결정할 수 있습니다. 연결 문자열을 제공하여 기존 Application Insights 리소스를 사용하도록 선택할 수도 있습니다. 연결 정보는 앱 호스트 프로젝트의 리소스 구성에 의해 관리됩니다.
Azure 배포 중 Application Insights 설정
이 옵션을 사용하면 애플리케이션이 Azure Developer CLI(azd
)를 사용하여 배포될 때 Application Insights 인스턴스가 만들어집니다.
자동 프로비저닝을 사용하려면 앱 호스트 프로젝트에서 종속성을 지정하고 Application Insights위해 원격 분석을 보내야 하는 각 프로젝트/리소스에서 참조합니다. 단계는 다음과 같습니다.
앱 호스트 프로젝트에서 Aspire.Hosting.Azure.ApplicationInsights에 Nuget 패키지 참조를 추가합니다.
앱 호스트 코드를 업데이트하여 Application Insights 리소스를 사용하고 각 프로젝트에서 이를 참조하십시오.
var builder = DistributedApplication.CreateBuilder(args);
// Automatically provision an Application Insights resource
var insights = builder.AddAzureApplicationInsights("MyApplicationInsights");
// Reference the resource from each project
var apiService = builder.AddProject<Projects.ApiService>("apiservice")
.WithReference(insights);
builder.AddProject<Projects.Web>("webfrontend")
.WithReference(apiService)
.WithReference(insights);
builder.Build().Run();
에 따라 .NET Aspire 프로젝트를 Azure Container Apps에 배포하기 위해, Azure Developer CLI(심층 가이드)를 사용하여 Azure Container Apps에 애플리케이션을 배포하세요.
azd
동일한 리소스 그룹의 일부로 Application Insights 리소스를 만들고 각 컨테이너에 대한 연결 문자열을 구성합니다.
Application Insights 리소스의 수동 설정
Application Insights은 연결 문자열을 사용하여 원격 분석 데이터를 어디로 보내야 하는지 OpenTelemetry 내보내기 도구에 알려줍니다. 연결 문자열은 텔레메트리를 보내고자 하는 특정 Application Insights 인스턴스에 대한 것입니다. Application Insights 인스턴스의 개요 페이지에서 찾을 수 있습니다.
Azure Application Insights 포털 UI에서 연결 문자열을
수동으로 프로비전한 Application Insights 인스턴스를 사용하려는 경우 앱 호스트 프로젝트의 AddConnectionString
API를 사용하여 프로젝트/컨테이너에 원격 분석 데이터를 보낼 위치를 알려야 합니다.
Azure Monitor 배포판에서는 환경 변수가 APPLICATIONINSIGHTS_CONNECTION_STRING
로 설정되기를 기대하므로, 연결 문자열을 정의할 때 이를 명시적으로 설정해야 합니다.
var builder = DistributedApplication.CreateBuilder(args);
var insights = builder.AddConnectionString(
"myInsightsResource",
"APPLICATIONINSIGHTS_CONNECTION_STRING");
var apiService = builder.AddProject<Projects.ApiService>("apiservice")
.WithReference(insights);
builder.AddProject<Projects.Web>("webfrontend")
.WithReference(apiService)
.WithReference(insights);
builder.Build().Run();
개발 중 리소스 사용량
.NET .NET Aspire 프로젝트를 로컬로 실행할 때 이전 코드는 구성에서 연결 문자열을 읽습니다. 비밀이므로 값을 앱 비밀 항목에 저장해야 합니다. 앱 호스트 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 비밀 관리를 선택하여 앱 호스트 프로젝트의 비밀 파일을 엽니다. 파일에서 키와 특정 연결 문자열을 추가합니다. 아래 예제는 설명용입니다.
{
"ConnectionStrings": {
"myInsightsResource": "InstrumentationKey=12345678-abcd-1234-abcd-1234abcd5678;IngestionEndpoint=https://westus3-1.in.applicationinsights.azure.com"
}
}
메모
앱 호스트 코드에 지정된 name
설정 파일의 ConnectionStrings
섹션 내의 키와 일치해야 합니다.
배포 중 리소스 사용량
혼합 배포
실행 컨텍스트당 다른 배포 메커니즘을 사용하려면 적절한 API를 조건부로 사용합니다. 예를 들어 다음 코드는 개발 시 미리 제공된 연결과 배포 시 자동으로 프로비전된 리소스를 사용합니다.
var builder = DistributedApplication.CreateBuilder(args);
var insights = builder.ExecutionContext.IsPublishMode
? builder.AddAzureApplicationInsights("myInsightsResource")
: builder.AddConnectionString("myInsightsResource", "APPLICATIONINSIGHTS_CONNECTION_STRING");
var apiService = builder.AddProject<Projects.ApiService>("apiservice")
.WithReference(insights);
builder.AddProject<Projects.Web>("webfrontend")
.WithReference(apiService)
.WithReference(insights);
builder.Build().Run();
팁
이전 코드를 사용하려면, 개발 시간에 앱 비밀에 연결 문자열 정보를 제공해야 하며, 배포 시 azd
모듈에 의해 연결 문자열을 입력하라는 메시지가 표시됩니다.
Azure 모니터 배포판 사용
Azure Monitor로 간단하게 내보내기 위해, 이 예제에서는 Azure Monitor Exporter Repo를 사용합니다. Azure Monitor OpenTelemetry 내보내기 패키지 주변의 래퍼 패키지로, 일반적인 기본값 집합을 사용하여 Azure Monitor로 쉽게 내보낼 수 있습니다.
각 .NET.NET Aspire 서비스에 포함되도록 ServiceDefaults
프로젝트에 다음 패키지를 추가합니다. 자세한 내용은 .NET.NET Aspire 서비스 기본값참조하세요.
<PackageReference Include="Azure.Monitor.OpenTelemetry.AspNetCore"
Version="*" />
프로젝트 맨 위에 using 문을 추가합니다.
using Azure.Monitor.OpenTelemetry.AspNetCore;
AddOpenTelemetryExporters
줄의 주석 처리를 제거하여 Azure 모니터 익스포터를 사용합니다.
private static IHostApplicationBuilder AddOpenTelemetryExporters(
this IHostApplicationBuilder builder)
{
// Omitted for brevity...
// Uncomment the following lines to enable the Azure Monitor exporter
// (requires the Azure.Monitor.OpenTelemetry.AspNetCore package)
if (!string.IsNullOrEmpty(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"]))
{
builder.Services.AddOpenTelemetry().UseAzureMonitor();
}
return builder;
}
리소스 이름을 사용자 지정하고 샘플링을 변경하는 등 Azure 모니터 내보내기를 추가로 사용자 지정할 수 있습니다. 자세한 내용은 Azure 모니터 내보내기사용자 정의를 참조하세요. 매개 변수가 없는 UseAzureMonitor()
버전을 사용하면, 앱 호스트 프로젝트를 통해 구성한 APPLICATIONINSIGHTS_CONNECTION_STRING
환경 변수에서 연결 문자열을 가져옵니다.
.NET Aspire