다음을 통해 공유


자습서: Azure 앱 Service에서 Linux 앱용 사이드카 컨테이너 구성

이 자습서에서는 OpenTelemetry 수집기를 사이드카 컨테이너로 Azure 앱 Service의 Linux(bring-your-own-code) 앱에 추가합니다. 사용자 지정 컨테이너의 경우 자습서: Azure 앱 Service에서 사용자 지정 컨테이너에 대한 사이드카 컨테이너 구성을 참조하세요.

Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

App Service의 사이드카 컨테이너를 사용하면 기본 제공 또는 사용자 지정 기본 컨테이너에 긴밀하게 결합하지 않고도 추가 서비스 및 기능을 Linux 앱에 배포할 수 있습니다. 사이드카 컨테이너는 동일한 App Service 계획의 기본 애플리케이션 컨테이너와 함께 실행됩니다.

App Service의 각 Linux 앱에 대해 최대 9개의 사이드카 컨테이너를 추가할 수 있습니다. 예를 들어 모니터링, 로깅, 구성 및 네트워킹 서비스를 사이드카 컨테이너로 추가할 수 있습니다. 모니터링의 한 예로 OpenTelemetry 컬렉터 사이드카가 있습니다.

1. 필요한 리소스 설정

먼저 자습서에서 사용하는 리소스를 만듭니다. 이 특정 시나리오에 사용되며 일반적으로 사이드카 컨테이너에는 필요하지 않습니다.

  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
    
  2. 메시지가 표시되면 선택한 구독 및 지역을 제공합니다. 예시:

    • 구독: 사용자 구독.
    • 지역: (유럽) 서유럽.

    배포가 완료되면 다음 출력이 표시됩니다.

     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>
     
  3. 나중에 이러한 출력 값을 복사합니다. 포털의 각 리소스 관리 페이지에서 찾을 수도 있습니다.

    참고 항목

    azd provision(이)가 포함된 템플릿을 사용하여 다음 Azure 리소스를 만듭니다.

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 앱에 사이드카 컨테이너를 추가합니다.

  1. Azure Portal에서 앱의 관리 페이지로 이동합니다.

  2. 앱의 관리 페이지의 왼쪽 메뉴에서 배포 센터를 선택합니다.

  3. 앱과 함께 실행할 컨테이너를 추가하는 데 관심이 있는 배너 를 선택하세요? 사용해 보려면 여기를 클릭하십시오.

  4. 페이지가 다시 로드되면 컨테이너(새) 탭을 선택합니다.

  5. 추가를 선택하고 다음과 같이 새 컨테이너를 구성합니다.

    • 이름: otel-collector
    • 이미지 원본: Azure Container Registry
    • 인증: 관리자 자격 증명
    • 레지스트리: azd provision에 의해 만들어진 레지스트리
    • 이미지: otel-collector
    • 태그: 최신
  6. 적용을 선택합니다.

    웹앱의 배포 센터에서 사이드카 컨테이너를 구성하는 방법을 보여 주는 스크린샷

4. 환경 변수 구성

샘플 시나리오의 경우 otel-collector 사이드카는 OpenTelemetry 데이터를 Azure Monitor로 내보내도록 구성되지만 연결 문자열을 환경 변수로 지정해야 합니다(otel-collector 이미지 대한 OpenTelemetry 구성 파일 참조).

앱 설정을 구성하여 App Service 앱과 같은 컨테이너에 대한 환경 변수를 구성합니다. 앱 설정은 앱의 모든 컨테이너에서 액세스할 수 있습니다.

  1. App Service 앱의 관리 페이지로 이동합니다.

  2. 왼쪽 메뉴에서 환경 변수를 선택합니다.

  3. 다음과 같이 추가 및 구성을 선택하여 앱 설정을 추가합니다.

    • 이름: APPLICATIONINSIGHTS_CONNECTION_STRING
    • : 출력의 azd provision연결 문자열. Cloud Shell 세션이 손실된 경우 Application Insight 리소스의 개요 페이지(연결 문자열)에서 찾을 수도 있습니다.
  4. 적용을 선택한 다음 적용한 다음 확인을 선택합니다.

    두 개의 앱 설정이 추가된 웹앱의 구성 페이지를 보여 주는 스크린샷

5. 시작 시 계측 구성

이 단계에서는 OpenTelemetry .NET 제로 코드 계측에 설명된 단계에 따라 앱에 대한 계측을 만듭니다.

  1. 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
    
  2. 다음 Azure CLI 명령을 사용하여 이 파일을 앱에 배포합니다. ~/MyFirstAzureWebApp 디렉터리에 있는 경우 리소스 그룹 및 앱 이름에 대한 기본값을 이미 설정했기 때문에 az webapp up 다른 매개 변수가 필요하지 않습니다.

    az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type static
    

    이 방법은 애플리케이션과 별도로 startup.sh 파일을 배포합니다. 이렇게 하면 계측 구성이 애플리케이션 코드와 별개입니다. 그러나 다른 배포 방법을 사용하여 애플리케이션과 함께 스크립트를 배포할 수 있습니다.

  3. 앱의 관리 페이지로 돌아가서 왼쪽 메뉴에서 구성을 선택합니다.

  4. 시작 명령을 /home/site/startup.sh 설정합니다. 이전 단계에서 배포한 것과 동일한 경로입니다.

  5. 저장, 계속선택합니다.

    Azure Portal에서 App Service 앱에 대한 사용자 지정 시작 파일을 구성하는 방법을 보여 주는 스크린샷

5. Application Insights에서 확인

이제 otel-collector 사이드카가 Application Insights로 데이터를 내보내야 합니다.

  1. https://<app-name>.azurewebsites.net 브라우저 탭으로 돌아가서 페이지를 몇 번 새로 고쳐 일부 웹 요청을 생성합니다.

  2. 리소스 그룹 개요 페이지로 돌아가서 만든 Application Insights 리소스 azd up 를 선택합니다. 이제 기본 차트에 일부 데이터가 표시됩니다.

    기본 차트의 데이터를 보여 주는 Application Insights 페이지의 스크린샷

참고 항목

이 매우 일반적인 모니터링 시나리오에서 Application Insights는 Jaeger, Prometheus 및 Zipkin과 같이 사용할 수 있는 OpenTelemetry 대상 중 하나일 뿐입니다.

6. 리소스 정리

환경이 더 이상 필요하지 않은 경우 리소스 그룹 및 모든 관련 리소스를 삭제할 수 있습니다. Cloud Shell에서 다음 명령을 실행하기만 하면 됩니다.

cd ~/MyFirstAzureWebApp
az group delete --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down

추가 리소스