Självstudie: Konfigurera en sidecar-container för en Linux-app i Azure App Service

I den här självstudien lägger du till en OpenTelemetry-kollektor som en sidvagnscontainer i en Linux-app (bring-your-own-code) i Azure App Service. För anpassade containrar, se Självstudie: Konfigurera en sidovagnscontainer för anpassad container i Azure App Service.

Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.

Med sidovagnscontainrar i App Service kan du distribuera extra tjänster och funktioner till dina Linux-appar utan att nära koppla dem till den inbyggda eller anpassade huvudcontainern. Sidovagnscontainrarna körs tillsammans med huvudprogramcontainern i samma App Service-plan.

Du kan lägga till upp till nio sidovagnscontainrar för varje Linux-app i App Service. Du kan till exempel lägga till övervaknings-, loggnings-, konfigurations- och nätverkstjänster som sidovagnscontainrar. En OpenTelemetry-insamlares sidovagn är ett exempel på övervakning.

1. Konfigurera nödvändiga resurser

Först skapar du de resurser som används i självstudien. De används för det här scenariot och krävs inte för sidecar-containrar i allmänhet.

  1. Kör följande kommandon i Azure Cloud Shell. Se till att tillhandahålla <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. När du uppmanas till det anger du den prenumeration och den region du väljer. Till exempel:

    • Prenumeration: Din prenumeration.
    • Region: (Europa) Västeuropa.

    När distributionen är klar bör du se följande utdata:

     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. Kopiera dessa utdatavärden för senare. Du kan också hitta dem i portalen på hanteringssidorna för respektive resurser.

    Anmärkning

    azd provision använder de inkluderade mallarna för att skapa följande Azure-resurser:

    • En resursgrupp som baseras på miljönamnet.
    • Ett container registry med två images distribuerade:
      • En Nginx-image med OpenTelemetry-modulen.
      • En OpenTelemetry-collector-avbildning, konfigurerad för export till Azure Monitor.
    • En användartilldelad hanterad identitet med behörigheten AcrPull för resursgruppen (för att hämta containeravbildningar från containerregistret).
    • En Log Analytics-arbetsyta.
    • En Application Insights-komponent .

2. Skapa en webbapp

I det här steget distribuerar du ett ASP.NET Core-mallprogram. Kör följande kommandon i Azure Cloud Shell. Byt ut <app-name> med ett globalt unikt appnamn och eastus med din föredragna region.

  1. Skapa exempelprogrammet:

    cd ~
    dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
    cd MyFirstAzureWebApp
    
  2. Tillhandahåll resursgruppen, Linux App Service-planen och webbappen:

    az group create --name myWebAppResourceGroup --location eastus
    az appservice plan create --name myWebAppPlan --resource-group myWebAppResourceGroup --sku P0v3 --is-linux
    az webapp create --name <app-name> --resource-group myWebAppResourceGroup --plan myWebAppPlan --runtime "DOTNETCORE:8.0"
    
  3. Bygg applikationen och paketera innehållet i publiceringskatalogen:

    dotnet publish --configuration Release --output publish
    cd publish
    zip -r ../app.zip .
    cd ..
    
  4. Driftsätt paketet.

    az webapp deploy --name <app-name> --resource-group myWebAppResourceGroup --src-path app.zip --type zip
    

Efter några minuter distribueras .NET webbapplikation som MyFirstAzureWebApp.dll till den nya App Service-appen.

3. Lägg till en sidecar-container

I det här avsnittet lägger du till en sidecar-container i din Linux-app.

  1. I Azure Portal navigerar du till appens hanteringssida

  2. På appens hanteringssida går du till den vänstra menyn och väljer Deployment Center.

  3. Välj banderollen Intresserad av att lägga till containrar som ska köras tillsammans med din app? Klicka här om du vill prova.

  4. När sidan laddas om väljer du fliken Containrar (ny).

  5. Välj Lägg till och konfigurera den nya containern på följande sätt:

    • Namn: otel-collector
    • Avbildskälla: Azure Container Registry
    • Autentisering: administratörsinloggningsuppgifter
    • Register: Registret som skapats av azd provision
    • Bild: otel-collector
    • Etikett: senaste
  6. Välj Verkställ.

    Skärmbild som visar hur du konfigurerar en sidecar-container i en webbapps distributionscenter.

4. Konfigurera miljövariabler

I exempelscenariot är sidecarn otel-collector konfigurerad för att exportera OpenTelemetry-data till Azure Monitor, men den behöver en anslutningssträng som en miljövariabel (se OpenTelemetry-konfigurationsfilen för otel-collector-avbildningen).

Du konfigurerar miljövariabler för containrarna, precis som för alla App Service-appar, genom att konfigurera appinställningar. Appinställningarna är tillgängliga för alla containrar i appen.

  1. Gå till App Service-appens hanteringssida.

  2. På den vänstra menyn väljer du Miljövariabler.

  3. Lägg till en appinställning genom att välja Lägg till och konfigurera den på följande sätt:

    • Namn: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Värde: anslutningssträngen i utdata från azd provision. Om du förlorade Cloud Shell-sessionen kan du även hitta den på sidan Översikt för Application Insights-resursen under Anslutningssträng.
  4. Välj Använd och sedan Använd och sedan Bekräfta.

    Skärmbild som visar en webbapps konfigurationssida med två appinställningar tillagda.

5. Konfigurera instrumentering vid uppstart

I det här steget skapar du instrumentationen för din app enligt stegen som beskrivs i OpenTelemetry .NET-nollkodsinstrumentationen.

  1. Tillbaka i Cloud Shell, skapa startup.sh med följande rader.

    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. Distribuera den här filen till din app med följande Azure CLI-kommando. Byt ut <app-name> med namnet du använde när du skapade appen.

    az webapp deploy --resource-group myWebAppResourceGroup --name <app-name> --src-path startup.sh --target-path /home/site/startup.sh --type static
    

    Tips

    Den här metoden distribuerar filen startup.sh separat från ditt program. På så sätt är instrumentationskonfigurationen separat från programkoden. Du kan dock använda andra distributionsmetoder för att distribuera skriptet tillsammans med ditt program.

  3. På appens hanteringssida går du till den vänstra menyn och väljer Konfiguration.

  4. Ange Startkommando till /home/site/startup.sh. Det är samma sökväg som du distribuerade till i föregående steg.

  5. Välj Spara och sedan Fortsätt.

    Skärmbild som visar hur du konfigurerar en anpassad startfil för en App Service-app i Azure Portal.

5. Verifiera i Application Insights

otel-collector sidecar bör exportera data till Application Insights nu.

  1. Gå tillbaka till webbläsarfliken för https://<app-name>.azurewebsites.net, uppdatera sidan några gånger för att generera några webbförfrågningar.

  2. Gå tillbaka till översiktssidan för resursgruppen och välj sedan den Application Insights-resurs som azd up skapade. Nu bör du se vissa data i standarddiagrammen.

    Skärmbild av sidan Application Insights som visar data i standarddiagrammen.

Anmärkning

I det här mycket vanliga övervakningsscenariot är Application Insights bara ett av de OpenTelemetry-mål som du kan använda, till exempel Jaeger, Prometheus och Zipkin.

6. Rensa resurser

När du inte längre behöver miljön kan du ta bort resursgrupperna och alla relaterade resurser. Kör bara dessa kommandon i Cloud Shell:

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

Fler resurser