Dela via


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

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

I Azure App Service kan du lägga till upp till nio sidovagnscontainrar för varje Linux-app. Med sidovagnscontainrar kan du distribuera extra tjänster och funktioner till dina Linux-appar utan att göra dem nära kopplade till huvudcontainern (inbyggd). Du kan till exempel lägga till övervaknings-, loggnings-, konfigurations- och nätverkstjänster som sidovagnscontainrar. En OpenTelemetry-insamlares sidovagn är ett sådant övervakningsexempel.

Mer information om sidocontainer i App Service finns i:

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

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 sidovagnscontainrar i allmänhet.

  1. Kör följande kommandon i Azure Cloud Shell. Se till att ange <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 valfri prenumeration och region. Till exempel:

    • Prenumeration: Din prenumeration.
    • Region: (Europa) Europa, västra.

    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.

    Kommentar

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

    • En resursgrupp som baseras på miljönamnet.
    • Ett containerregister med två avbildningar distribuerade:
      • En Nginx-avbildning med Modulen OpenTelemetry.
      • En OpenTelemetry-insamlaravbildning, konfigurerad för export till Azure Monitor.
    • En användartilldelad hanterad identitet med behörigheten AcrPull för resursgruppen (för att hämta avbildningar från registret).
    • En log analytics-arbetsyta.
    • En Application Insights-komponent .

2. Skapa en webbapp

I det här steget distribuerar du en mall ASP.NET Core-program. Kör följande kommandon i Azure Cloud Shell. Ersätt <app-name> med ett unikt appnamn.

cd ~
dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
cd MyFirstAzureWebApp
az webapp up --name <app-name> --os-type linux

Efter några minuter distribueras det här .NET-webbprogrammet som MyFirstAzureWebApp.dll till en ny App Service-app.

3. Lägg till en sidovagnscontainer

I det här avsnittet lägger du till en sidovagnscontainer i din Linux-app. Portalupplevelsen distribueras fortfarande. Om den inte är tillgänglig för dig ännu fortsätter du med fliken Använd ARM-mall nedan.

  1. I Azure Portal navigerar du till appens hanteringssida

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

  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.

    Om du inte kan se banderollen distribueras inte portalgränssnittet för din prenumeration ännu. Välj fliken Använd ARM-mall här i stället och fortsätt.

  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
    • Avbildningskälla: Azure Container Registry
    • Autentisering: Administratörsautentiseringsuppgifter
    • Register: Registret som skapats av azd provision
    • Bild: otel-collector
    • Tagg: senaste
  6. Välj Använd.

    Skärmbild som visar hur du konfigurerar en sidovagnscontainer i en webbapps distributionscenter.

4. Konfigurera miljövariabler

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

Du konfigurerar miljövariabler för containrar som 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äng i utdata från azd provision. Om du förlorade Cloud Shell-sessionen kan du även hitta den på sidan Översikt för Application Insight-resursen under Anslutningssträng.
  4. Välj Använd och sedan Tillämpa och sedan Bekräfta.

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

5. Konfigurera instrumentation vid start

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 skapar du 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. Om du fortfarande är i katalogen ~/MyFirstAzureWebApp behövs inga andra parametrar eftersom az webapp up du redan har angett standardvärden för resursgruppen och appnamnet.

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

    Dricks

    Den här metoden distribuerar startup.sh-filen 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

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

  1. Gå tillbaka till webbläsarfliken för och uppdatera sidan några gånger för https://<app-name>.azurewebsites.netatt generera några webbbegäranden.

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

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

Kommentar

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 --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down

Vanliga frågor och svar

Hur hanterar sidovagnscontainrar intern kommunikation?

Sidecar-containrar delar samma nätverksvärd som huvudcontainern, så att huvudcontainern (och andra sidovagnscontainrar) kan nå valfri port på sidovagnen med localhost:<port>. Exemplet startup.sh använder localhost:4318 för att komma åt port 4318 på sidovagnen otel-collector.

I dialogrutan Redigera container används inte portrutan för närvarande av App Service. Du kan använda den som en del av sidovagnsmetadata, till exempel för att ange vilken port sidovagnen lyssnar på.

Hur gör jag för att instrumentera andra språkstackar?

Du kan använda en liknande metod för att instrumentera appar i andra språkstackar. Mer information finns i Dokumentation om OpenTelemetry:

Fler resurser