Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
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 provisionNä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>
Kopiera dessa utdatavärden för senare. Du kan också hitta dem i portalen på hanteringssidorna för respektive resurser.
Anmärkning
azd provisionanvä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
AcrPullfö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.
Skapa exempelprogrammet:
cd ~ dotnet new webapp -n MyFirstAzureWebApp --framework net8.0 cd MyFirstAzureWebAppTillhandahå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"Bygg applikationen och paketera innehållet i publiceringskatalogen:
dotnet publish --configuration Release --output publish cd publish zip -r ../app.zip . cd ..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.
I Azure Portal navigerar du till appens hanteringssida
På appens hanteringssida går du till den vänstra menyn och väljer Deployment Center.
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.
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
- Avbildskälla: Azure Container Registry
- Autentisering: administratörsinloggningsuppgifter
-
Register: Registret som skapats av
azd provision - Bild: otel-collector
- Etikett: senaste
Välj Verkställ.
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.
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ä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.
Välj Använd och sedan Använd och sedan Bekräfta.
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.
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 EOFDistribuera 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 staticTips
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.
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
otel-collector sidecar bör exportera data till Application Insights nu.
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.Gå tillbaka till översiktssidan för resursgruppen och välj sedan den Application Insights-resurs som
azd upskapade. Nu bör du se vissa 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