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:
- Introduktion till sidovagnar för Azure App Service för Linux: Nu allmänt tillgänglig
- Meddelande om allmän tillgänglighet för utökning av sidovagn i Azure App Service
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.
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
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>
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.
På appens hanteringssida går du till den vänstra menyn och väljer Distributionscenter.
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.
När sidan laddas om väljer du fliken Containrar (ny).
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
Välj Använd.
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.
Gå till App Service-appens hanteringssida.
På den vänstra menyn väljer du Miljövariabler.
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.
Välj Använd och sedan Tillämpa och sedan Bekräfta.
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.
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
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.
På appens hanteringssida går du till den vänstra menyn och väljer Konfiguration.
Ange Startkommando till /home/site/startup.sh. Det är samma sökväg som du distribuerade till i föregående steg.
Välj Spara och sedan Fortsätt.
5. Verifiera i Application Insights
Sidovagnen otel-collector bör exportera data till Application Insights nu.
Gå tillbaka till webbläsarfliken för och uppdatera sidan några gånger för
https://<app-name>.azurewebsites.net
att generera några webbbegäranden.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.
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?
- Hur gör jag för att instrumentera andra språkstackar?
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: