.NET, Node.js, Python 및 Java 애플리케이션에 Azure Monitor OpenTelemetry 사용
이 문서에서는 Azure Monitor Application Insights 내에서 환경을 구동하도록 OpenTelemetry 기반 데이터 수집을 사용하도록 설정하고 구성하는 방법을 설명합니다. "Azure Monitor OpenTelemetry Distro"를 설치하는 방법을 안내합니다. Distro는 애플리케이션과 해당 종속성 전반에 걸쳐 추적, 메트릭, 로그 및 예외를 자동으로 수집합니다. OpenTelemetry를 사용한 데이터 수집에 대해 자세히 알아보려면 데이터 수집 기본 사항 또는 OpenTelemetry FAQ를 참조하세요.
OpenTelemetry 릴리스 상태
OpenTelemetry 제품은 .NET, Node.js, Python 및 Java 애플리케이션에 사용할 수 있습니다.
참고 항목
기능별 릴리스 상태 FAQ를 참조하세요.
시작하기
이 섹션의 단계에 따라 OpenTelemetry로 애플리케이션을 계측합니다.
필수 조건
- Azure 구독: 무료로 Azure 구독 만들기
- Application Insights 리소스: Application Insights 리소스 만들기
- 공식적으로 지원되는 .NET Core 버전을 사용하는 ASP.NET Core 애플리케이션
팁
OTel Community SDK/API를 Azure Monitor OTel Distro와 함께 사용하면 자동으로 종속성으로 로드되므로 사용하지 않는 것이 좋습니다.
클라이언트 라이브러리 설치
최신 Azure.Monitor.OpenTelemetry.AspNetCore NuGet 패키지를 설치합니다.
dotnet add package --prerelease Azure.Monitor.OpenTelemetry.AspNetCore
Azure Monitor Application Insights 사용
Azure Monitor Application Insights를 사용하도록 설정하려면 애플리케이션을 약간 수정하고 "연결 문자열"을 설정합니다. 연결 문자열은 Distro가 수집한 원격 분석을 어디로 보낼지 애플리케이션에 알려 주며 이는 사용자에게 고유합니다.
애플리케이션 수정
애플리케이션 시작에 UseAzureMonitor()
를 추가합니다. .NET 버전에 따라 startup.cs
또는 program.cs
클래스에 있습니다.
// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;
// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);
// Add the OpenTelemetry NuGet package to the application's services and configure OpenTelemetry to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();
// Build the application.
var app = builder.Build();
// Run the application.
app.Run();
Application Insights 리소스에서 연결 문자열 복사
팁
아직 가지고 있지 않다면 지금이 Application Insights 리소스를 만들기할 좋은 기회입니다. 기존 리소스를 사용하는 것보다 새 Application Insights 리소스를 만들기하는 것이 권장되는 경우는 다음과 같습니다.
고유한 연결 문자열을 복사하려면:
- Application Insights 리소스의 개요 창으로 이동합니다.
- 연결 문자열을 찾습니다.
- 연결 문자열을 마우스로 가리키고 클립보드에 복사 아이콘을 선택합니다.
사용자 환경에 연결 문자열 붙여넣기
연결 문자열을 붙여넣으려면 다음 옵션 중에서 선택합니다.
A. 환경 변수를 통해 설정(권장)
다음 명령의 <Your Connection String>
을 사용자의 고유 연결 문자열로 바꿉니다.
APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
B. 구성 파일을 통해 설정 - Java 전용(권장)
이름이 지정된 applicationinsights.json
구성 파일을 만들고 다음 콘텐츠와 동일한 디렉터리에 배치합니다 applicationinsights-agent-3.4.18.jar
.
{
"connectionString": "<Your Connection String>"
}
이전 JSON의 <Your Connection String>
을 사용자의 고유 연결 문자열로 바꿉니다.
C. 코드를 통해 설정 - ASP.NET Core, Node.js 및 Python 전용(권장되지 않음)
코드를 통해 연결 문자열을 설정하는 예는 연결 문자열 구성을 참조하세요.
참고 항목
둘 이상의 위치에 연결 문자열을 설정하는 경우 다음 우선 순위를 따릅니다.
- 코드
- 환경 변수
- 구성 파일
데이터가 흐르는지 확인
애플리케이션을 실행하고 Azure Portal에서 Application Insights 리소스 탭을 엽니다. 포털에 데이터가 표시되는 데 몇 분 정도 걸릴 수 있습니다.
이제 애플리케이션에 대해 Application Insights를 사용하도록 설정했습니다. 다음 단계는 모두 선택 사항이며 추가 사용자 지정이 가능합니다.
Important
동일한 Application Insights 리소스에 원격 분석을 내보내는 서비스가 두 개 이상 있는 경우 Application Map에서 적절하게 나타내도록 Cloud 역할 이름을 설정해야 합니다.
Application Insights 계측 사용의 일환으로 진단 데이터를 수집하여 Microsoft에 보냅니다. 이 데이터는 Application Insights를 실행하고 개선하는 데 도움이 됩니다. 자세한 내용은 Azure Application Insights의 Statsbeat를 참조하세요.
자주 묻는 질문
이 섹션에서는 일반적인 질문에 대한 답변을 제공합니다.
OpenTelemetry란?
그것은 관찰을위한 새로운 오픈 소스 표준입니다. OpenTelemetry에서 자세히 알아보세요.
Microsoft Azure Monitor에서 OpenTelemetry에 투자하는 이유는 무엇인가요?
Microsoft는 OpenTelemetry의 가장 큰 기여자 중 하나입니다.
OpenTelemetry의 핵심 가치 제안은 공급업체의 제약을 받지 않으며 모든 언어에서 일관적인 API/SDK를 제공한다는 것입니다.
시간이 지남에 따라 OpenTelemetry를 사용하면 Azure Monitor 고객이 지원되는 언어 이외의 언어로 작성된 애플리케이션을 관찰할 수 있습니다. 또한 다양한 계측 라이브러리 집합을 통해 수집할 수 있는 데이터 형식을 확장합니다. 또한 OpenTelemetry SDK는 이전 버전인 Application Insights SDK보다 대규모 성능이 더 뛰어난 경향이 있습니다.
마지막으로 OpenTelemetry는 오픈 소스 수용하기 위한 Microsoft의 전략에 부합합니다.
OpenTelemetry의 상태 무엇인가요?
OpenTelemetry 사양 준수 행렬를 참조하세요.
"Azure Monitor OpenTelemetry Distro"란?
이는 Azure에서 최고 수준의 환경을 제공하기 위해 모든 OpenTelemetry 구성 요소를 함께 묶는 얇은 래퍼라고 생각할 수 있습니다.
"Azure Monitor OpenTelemetry Distro"를 사용해야 하는 이유는 무엇인가요?
커뮤니티의 네이티브 OpenTelemetry에 비해 Azure Monitor OpenTelemetry Distro를 사용하면 다음과 같은 몇 가지 이점이 있습니다.
- 사용 설정 작업 감소
- Microsoft에서 지원
- 다음과 같은 Azure 특정 기능을 제공합니다.
- Application Insights SDK를 사용하여 서비스 구성 요소로 추적을 보존합니다.
- Microsoft Entra 인증
- 오프라인 스토리지 및 자동 다시 시도
- 통계 비트
- Azure Application Insights 표준 메트릭
- Azure에서 클라우드 역할 이름을 자동으로 채우는 리소스 메타데이터를 검색합니다.
- 라이브 메트릭(향후)
OpenTelemetry의 설계 방향에 따라 개방적이고 확장 가능하도록 Distro를 설계했습니다. 예를 들어, 다음을 추가할 수 있습니다.
- OTLP 내보내기 도구와 동시에 두 번째 대상으로 보내기
- 패키지에 포함된 것 이상의 커뮤니티 계측 라이브러리
Azure Monitor OpenTelemetry Distro를 테스트하려면 어떻게 해야 하나요?
.NET, Java, JavaScript(Node.js) 및 Python에 대한 사용 설명서도 확인하세요.
OpenTelemetry 또는 Application Insights SDK를 사용해야 하나요?
Application Insights SDK에서 공식적인 지원으로만 사용할 수 있는 기능이 필요하지 않은 경우 OpenTelemetry Distro를 사용하는 것이 좋습니다.
Azure Monitor OpenTelemetry Distro 내 기능의 현재 릴리스 상태는 무엇인가요?
다음 차트는 각 언어에 대한 OpenTelemetry 기능 지원을 구분합니다.
기능 | .NET | Node.js | Python | Java |
---|---|---|---|---|
분산 추적 | ✅ | ✅ | ✅ | ✅ |
사용자 지정 메트릭 | ✅ | ✅ | ✅ | ✅ |
표준 메트릭 (현재 샘플링의 영향을 받는 정확도) | ✅ | ✅ | ✅ | ✅ |
고정 비율 샘플링 | ✅ | ✅ | ✅ | ✅ |
오프라인 스토리지 및 자동 재시도 | ✅ | ✅ | ✅ | ✅ |
예외 보고 | ✅ | ✅ | ✅ | ✅ |
Logs 컬렉션 | ✅ | ⚠️ | ✅ | ✅ |
사용자 지정 이벤트 | ⚠️ | ⚠️ | ⚠️ | ✅ |
Microsoft Entra 인증 | ✅ | ✅ | ✅ | ✅ |
라이브 메트릭 | ❌ | ❌ | ❌ | ✅ |
VM/VMSS 및 App Svc에 대한 리소스 컨텍스트 검색 | ✅ | ❌ | ✅ | ✅ |
AKS 및 함수에 대한 리소스 컨텍스트 검색 | ❌ | ❌ | ❌ | ✅ |
가용성 테스트 범위 필터링 | ❌ | ❌ | ❌ | ✅ |
사용자 ID, 인증된 사용자 ID 및 사용자 IP의 자동 사용자 지정 | ❌ | ❌ | ❌ | ✅ |
작업 이름, 사용자 ID 또는 인증된 사용자 ID를 수동으로 재정의/설정 | ❌ | ❌ | ❌ | ✅ |
적응 샘플링 | ❌ | ❌ | ❌ | ✅ |
프로파일러 | ❌ | ❌ | ❌ | ⚠️ |
스냅샷 디버거 | ❌ | ❌ | ❌ | ❌ |
Key
- ✅ 이 기능은 공식적인 지원을 통해 모든 고객이 사용할 수 있습니다.
- ⚠️ 이 기능은 공개 미리 보기로 사용할 수 있습니다. Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조 하세요.
- ❌ 이 기능은 사용할 수 없거나 적용할 수 없습니다.
웹 브라우저에 OpenTelemetry를 사용할 수 있나요?
예, 하지만 권장하지 않으며 Azure에서 지원하지 않습니다. OpenTelemetry JavaScript는 Node.js에 대해 크게 최적화되어 있습니다. 대신 Application Insights JavaScript SDK를 사용하는 것이 좋습니다.
웹 브라우저에서 OpenTelemetry SDK를 사용할 수 있는 시기는 언제인가요?
OpenTelemetry 웹 SDK의 가용성 타임라인 아직 결정되지 않았습니다. Application Insights JavaScript SDK의 실행 가능한 대안이 될 브라우저 SDK에서 몇 년 떨어져 있을 가능성이 높습니다.
오늘 웹 브라우저에서 OpenTelemetry를 테스트할 수 있나요?
OpenTelemetry 웹 샌드박스는 OpenTelemetry가 브라우저에서 작동하도록 설계된 포크입니다. 아직 Application Insights에 원격 분석을 보낼 수 없습니다. SDK는 현재 일반 클라이언트 이벤트를 정의하지 않았습니다.
AppDynamics, DataDog 및 NewRelic과 같은 경쟁 에이전트와 함께 Application Insights를 실행하고 있나요?
아니요. Distro를 사용하면 Azure Monitor와 동시에 OTLP 엔드포인트로 내보낼 수 있지만 이 방식은 테스트하거나 지원할 계획이 없습니다.
프로덕션 환경에서 미리 보기 기능을 사용할 수 있나요?
이는 권장되지 않습니다. Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조 하세요.
Azure Monitor 내보내기 도구를 독립 실행형 구성 요소로 사용할 수 있나요?
예, 일부 고객은 "증분 접근 방식"을 사용하여 계측하려고 할 수 있습니다. 그러나 Distro는 Azure에서 최고의 환경을 시작하는 가장 쉬운 방법을 제공합니다.
수동 계측과 자동 계측의 차이점은 무엇인가요?
OpenTelemetry 개요를 참조하세요.
OpenTelemetry 수집기를 사용할 수 있나요?
일부 고객은 Microsoft가 아직 애플리케이션 모니터링에 대한 에이전트 기반 접근 방식을 공식적으로 지원하지 않더라도 OpenTelemetry Collector를 에이전트 대안으로 사용하기 시작했습니다. 그 동안 오픈 소스 커뮤니티는 일부 고객이 Azure Monitor Application Insights로 데이터를 보내는 데 사용하는 OpenTelemetry Collector Azure Monitor 내보내기를 제공했습니다.
향후 에이전트 기반 접근 방식을 지원할 계획이지만 세부 정보 및 타임라인 아직 사용할 수 없습니다. OTLP(OpenTelemetry Protocol)를 통해 Azure Monitor로 보낼 OpenTelemetry 지원 언어의 경로를 제공하기 위한 것입니다. 이 접근 방식을 통해 고객은 지원되는 언어 이외의 언어로 작성된 애플리케이션을 관찰할 수 있습니다.
OpenCensus와 OpenTelemetry의 차이점은 무엇인가요?
OpenCensus 는 OpenTelemetry의 전조입니다. Microsoft는 OpenTracing과 OpenCensus를 결합하여 전 세계에 대한 단일 관찰성 표준인 OpenTelemetry를 만드는 데 도움을 주었습니다. 현재 프로덕션 권장 Azure Monitor용 Python SDK 는 OpenCensus를 기반으로 합니다. 결국 모든 Azure Monitor SDK는 OpenTelemetry를 기반으로 합니다.
문제 해결
작동하지 않나요? ASP.NET Core에 대한 문제 해결 페이지를 확인합니다.
지원
지원 옵션을 찾으려면 원하는 언어 탭을 선택합니다.
- Azure 지원 문제의 경우 Azure 지원 티켓을 엽니다.
- OpenTelemetry 문제의 경우 OpenTelemetry .NET 커뮤니티에 직접 문의합니다.
- Azure Monitor 내보내기 관련 미해결 문제 목록은 GitHub 문제 페이지를 참조 하세요.
OpenTelemetry 피드백
피드백을 제공하려면:
- OpenTelemetry 커뮤니티의 고객 피드백 설문 조사를 작성합니다.
- OpenTelemetry Early Adopter Community에 조인하여 Microsoft에 자기 소개를 합니다.
- Microsoft Tech Community에서 다른 Azure Monitor 사용자와 소통합니다.
- Azure 피드백 포럼에서 기능 요청을 보냅니다.
다음 단계
- Azure Monitor OpenTelemetry 추가 및 수정에 대한 자세한 내용은 Azure Monitor OpenTelemetry 추가 및 수정을 참조하세요.
- OpenTelemetry Distro를 추가로 구성하려면 Azure Monitor OpenTelemetry 구성을 참조하세요.
- 소스 코드를 검토하려면 Azure Monitor AspNetCore GitHub 리포지토리를 참조하세요.
- NuGet 패키지를 설치하거나 업데이트를 확인하거나 릴리스 정보를 보려면 Azure Monitor AspNetCore NuGet 패키지 페이지를 참조하세요.
- Azure Monitor 및 OpenTelemetry에 더 익숙해지려면 Azure Monitor 예제 애플리케이션을 참조하세요.
- OpenTelemetry 및 해당 커뮤니티에 대해 자세히 알아보려면 OpenTelemetry .NET GitHub 리포지토리를 참조하세요.
- 사용 환경을 사용하도록 설정하려면 웹 또는 브라우저 사용자 모니터링을 사용하도록 설정합니다.