이 자습서에서는 OpenTelemetry 수집기를 사이드카 컨테이너로 Azure 앱 Service의 Linux(bring-your-own-code) 앱에 추가합니다. 사용자 지정 컨테이너의 경우 자습서: Azure 앱 Service에서 사용자 지정 컨테이너에 대한 사이드카 컨테이너 구성을 참조하세요.
Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
App Service의 사이드카 컨테이너를 사용하면 기본 제공 또는 사용자 지정 기본 컨테이너에 긴밀하게 결합하지 않고도 추가 서비스 및 기능을 Linux 앱에 배포할 수 있습니다. 사이드카 컨테이너는 동일한 App Service 계획의 기본 애플리케이션 컨테이너와 함께 실행됩니다.
App Service의 각 Linux 앱에 대해 최대 9개의 사이드카 컨테이너를 추가할 수 있습니다. 예를 들어 모니터링, 로깅, 구성 및 네트워킹 서비스를 사이드카 컨테이너로 추가할 수 있습니다. 모니터링의 한 예로 OpenTelemetry 컬렉터 사이드카가 있습니다.
1. 필요한 리소스 설정
먼저 자습서에서 사용하는 리소스를 만듭니다. 이 특정 시나리오에 사용되며 일반적으로 사이드카 컨테이너에는 필요하지 않습니다.
Azure Cloud Shell에서 다음 명령을 실행합니다. 를 제공해야 합니다
<environment-name>
.git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs cd app-service-sidecar-tutorial-prereqs azd env new <environment-name> azd provision
메시지가 표시되면 선택한 구독 및 지역을 제공합니다. 예시:
- 구독: 사용자 구독.
- 지역: (유럽) 서유럽.
배포가 완료되면 다음 출력이 표시됩니다.
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=... Azure container registry name = <registry-name> Managed identity resource ID = <managed-identity-resource-id> Managed identity client ID = <managed-identity-client-id> Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/<subscription-id>/resourceGroups/<group-name>
나중에 이러한 출력 값을 복사합니다. 포털의 각 리소스 관리 페이지에서 찾을 수도 있습니다.
참고 항목
azd provision
(이)가 포함된 템플릿을 사용하여 다음 Azure 리소스를 만듭니다.- 환경 이름을 기반으로 하는 리소스 그룹입니다.
- 두 개의 이미지가 배포된 컨테이너 레지스트리.
- OpenTelemetry 모듈이 있는 Nginx 이미지입니다.
- Azure Monitor에 내보내도록 구성된 OpenTelemetry 수집기 이미지입니다.
- 리소스 그룹에 대한 권한이 있는
AcrPull
사용자 할당 관리 ID입니다(레지스트리에서 이미지를 끌어오기 위해). - 로그 분석 작업 영역입니다.
- Application Insights 구성 요소입니다.
2. 웹앱 만들기
이 단계에서는 템플릿 ASP.NET Core 애플리케이션을 배포합니다. Azure Cloud Shell로 돌아가서 다음 명령을 실행합니다. 고유한 앱 이름으로 대체 <app-name>
합니다.
cd ~
dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
cd MyFirstAzureWebApp
az webapp up --name <app-name> --os-type linux
몇 분 후 이 .NET 웹 애플리케이션은 새 App Service 앱에 MyFirstAzureWebApp.dll 배포됩니다.
3. 사이드카 컨테이너 추가
이 섹션에서는 Linux 앱에 사이드카 컨테이너를 추가합니다.
Azure Portal에서 앱의 관리 페이지로 이동합니다.
앱의 관리 페이지의 왼쪽 메뉴에서 배포 센터를 선택합니다.
앱과 함께 실행할 컨테이너를 추가하는 데 관심이 있는 배너 를 선택하세요? 사용해 보려면 여기를 클릭하십시오.
페이지가 다시 로드되면 컨테이너(새) 탭을 선택합니다.
추가를 선택하고 다음과 같이 새 컨테이너를 구성합니다.
- 이름: otel-collector
- 이미지 원본: Azure Container Registry
- 인증: 관리자 자격 증명
-
레지스트리:
azd provision
에 의해 만들어진 레지스트리 - 이미지: otel-collector
- 태그: 최신
적용을 선택합니다.
4. 환경 변수 구성
샘플 시나리오의 경우 otel-collector 사이드카는 OpenTelemetry 데이터를 Azure Monitor로 내보내도록 구성되지만 연결 문자열을 환경 변수로 지정해야 합니다(otel-collector 이미지 대한 OpenTelemetry 구성 파일 참조).
앱 설정을 구성하여 App Service 앱과 같은 컨테이너에 대한 환경 변수를 구성합니다. 앱 설정은 앱의 모든 컨테이너에서 액세스할 수 있습니다.
App Service 앱의 관리 페이지로 이동합니다.
왼쪽 메뉴에서 환경 변수를 선택합니다.
다음과 같이 추가 및 구성을 선택하여 앱 설정을 추가합니다.
- 이름: APPLICATIONINSIGHTS_CONNECTION_STRING
-
값: 출력의
azd provision
연결 문자열. Cloud Shell 세션이 손실된 경우 Application Insight 리소스의 개요 페이지(연결 문자열)에서 찾을 수도 있습니다.
적용을 선택한 다음 적용한 다음 확인을 선택합니다.
5. 시작 시 계측 구성
이 단계에서는 OpenTelemetry .NET 제로 코드 계측에 설명된 단계에 따라 앱에 대한 계측을 만듭니다.
Cloud Shell로 돌아가서 다음 줄을 사용하여 startup.sh 만듭니다.
cat > startup.sh << 'EOF' #!/bin/bash # Download the bash script curl -sSfL https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/otel-dotnet-auto-install.sh -O # Install core files sh ./otel-dotnet-auto-install.sh # Enable execution for the instrumentation script chmod +x $HOME/.otel-dotnet-auto/instrument.sh # Setup the instrumentation for the current shell session . $HOME/.otel-dotnet-auto/instrument.sh export OTEL_SERVICE_NAME="MyFirstAzureWebApp-Azure" export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318" export OTEL_TRACES_EXPORTER="otlp" export OTEL_METRICS_EXPORTER="otlp" export OTEL_LOGS_EXPORTER="otlp" # Run your application with instrumentation OTEL_SERVICE_NAME=myapp OTEL_RESOURCE_ATTRIBUTES=deployment.environment=staging,service.version=1.0.0 dotnet /home/site/wwwroot/MyFirstAzureWebApp.dll EOF
다음 Azure CLI 명령을 사용하여 이 파일을 앱에 배포합니다. ~/MyFirstAzureWebApp 디렉터리에 있는 경우 리소스 그룹 및 앱 이름에 대한 기본값을 이미 설정했기 때문에
az webapp up
다른 매개 변수가 필요하지 않습니다.az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type static
팁
이 방법은 애플리케이션과 별도로 startup.sh 파일을 배포합니다. 이렇게 하면 계측 구성이 애플리케이션 코드와 별개입니다. 그러나 다른 배포 방법을 사용하여 애플리케이션과 함께 스크립트를 배포할 수 있습니다.
앱의 관리 페이지로 돌아가서 왼쪽 메뉴에서 구성을 선택합니다.
시작 명령을 /home/site/startup.sh 설정합니다. 이전 단계에서 배포한 것과 동일한 경로입니다.
저장, 계속을 선택합니다.
5. Application Insights에서 확인
이제 otel-collector 사이드카가 Application Insights로 데이터를 내보내야 합니다.
https://<app-name>.azurewebsites.net
브라우저 탭으로 돌아가서 페이지를 몇 번 새로 고쳐 일부 웹 요청을 생성합니다.리소스 그룹 개요 페이지로 돌아가서 만든 Application Insights 리소스
azd up
를 선택합니다. 이제 기본 차트에 일부 데이터가 표시됩니다.
참고 항목
이 매우 일반적인 모니터링 시나리오에서 Application Insights는 Jaeger, Prometheus 및 Zipkin과 같이 사용할 수 있는 OpenTelemetry 대상 중 하나일 뿐입니다.
6. 리소스 정리
환경이 더 이상 필요하지 않은 경우 리소스 그룹 및 모든 관련 리소스를 삭제할 수 있습니다. Cloud Shell에서 다음 명령을 실행하기만 하면 됩니다.
cd ~/MyFirstAzureWebApp
az group delete --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down