Zelfstudie: Een sidecar-container configureren voor een Linux-app in Azure-app Service
In deze zelfstudie voegt u een OpenTelemetry-collector toe als sidecarcontainer aan een Linux-app (bring-your-own-code) in Azure-app Service. Zie Zelfstudie: Een sidecarcontainer configureren voor aangepaste containers in Azure-app Service voor aangepaste containers.
In Azure-app Service kunt u maximaal negen sidecarcontainers toevoegen voor elke Linux-app. Met Sidecar-containers kunt u extra services en functies implementeren in uw Linux-apps zonder ze nauw te koppelen aan de hoofdcontainer (ingebouwd). U kunt bijvoorbeeld bewakings-, logboekregistratie-, configuratie- en netwerkservices toevoegen als sidecarcontainers. Een Sidecar van de OpenTelemetry-collector is een dergelijk bewakingsvoorbeeld.
Zie voor meer informatie over side container in App Service:
- Introductie van sidecars voor Azure-app Service voor Linux: Nu algemeen beschikbaar
- Aankondiging van de algemene beschikbaarheid van sidecar-uitbreidbaarheid in Azure-app Service
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
1. De benodigde resources instellen
Eerst maakt u de resources die in de zelfstudie worden gebruikt. Ze worden gebruikt voor dit specifieke scenario en zijn niet vereist voor sidecarcontainers in het algemeen.
Voer in Azure Cloud Shell de volgende opdrachten uit. Zorg ervoor dat u de
<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
Geef het abonnement en de regio van uw keuze op wanneer u hierom wordt gevraagd. Voorbeeld:
- Abonnement: uw abonnement.
- Regio: (Europa) Europa - west.
Wanneer de implementatie is voltooid, ziet u de volgende uitvoer:
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>
Kopieer deze uitvoerwaarden voor later gebruik. U kunt ze ook vinden in de portal, op de beheerpagina's van de respectieve resources.
Notitie
azd provision
maakt gebruik van de opgenomen sjablonen om de volgende Azure-resources te maken:- Een resourcegroep op basis van de omgevingsnaam.
- Een containerregister met twee installatiekopieën geïmplementeerd:
- Een Nginx-afbeelding met de Module OpenTelemetry.
- Een OpenTelemetry Collector-installatiekopieën die zijn geconfigureerd om te exporteren naar Azure Monitor.
- Een door de gebruiker toegewezen beheerde identiteit met de
AcrPull
machtiging voor de resourcegroep (om installatiekopieën uit het register op te halen). - Een Log Analytics-werkruimte.
- Een Application Insights-onderdeel .
2. Een web-app maken
In deze stap implementeert u een sjabloon ASP.NET Core-toepassing. Voer in Azure Cloud Shell de volgende opdrachten uit. Vervang <app-name>
door een unieke app-naam.
cd ~
dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
cd MyFirstAzureWebApp
az webapp up --name <app-name> --os-type linux
Na enkele minuten wordt deze .NET-webtoepassing geïmplementeerd als MyFirstAzureWebApp.dll naar een nieuwe App Service-app.
3. Een sidecarcontainer toevoegen
In deze sectie voegt u een sidecar-container toe aan uw Linux-app. De portalervaring wordt nog steeds geïmplementeerd. Als deze nog niet beschikbaar is, gaat u verder met het onderstaande tabblad ARM-sjabloon gebruiken.
Navigeer in Azure Portal naar de beheerpagina van de app
Selecteer Deployment Center in het linkermenu op de beheerpagina van de app.
Selecteer de banner Geïnteresseerd in het toevoegen van containers die naast uw app moeten worden uitgevoerd? Klik hier om het te proberen.
Als u de banner niet ziet, wordt de gebruikersinterface van de portal nog niet geïmplementeerd voor uw abonnement. Selecteer in plaats daarvan het tabblad ARM-sjabloon gebruiken en ga door.
Wanneer de pagina opnieuw wordt geladen, selecteert u het tabblad Containers (nieuw).
Selecteer De nieuwe container als volgt toevoegen en configureren:
- Naam: otel-collector
- Bron van installatiekopieën: Azure Container Registry
- Verificatie: beheerdersreferenties
- Register: het register dat is gemaakt door
azd provision
- Afbeelding: otel-collector
- Tag: meest recente
Selecteer Toepassen.
4. Omgevingsvariabelen configureren
Voor het voorbeeldscenario is de sidecar van de otel-collector geconfigureerd voor het exporteren van de OpenTelemetry-gegevens naar Azure Monitor, maar het heeft de verbindingsreeks nodig als een omgevingsvariabele (zie het OpenTelemetry-configuratiebestand voor de installatiekopie van metry).
U configureert omgevingsvariabelen voor de containers zoals elke App Service-app door app-instellingen te configureren. De app-instellingen zijn toegankelijk voor alle containers in de app.
Navigeer naar de beheerpagina van de App Service-app.
Selecteer omgevingsvariabelen in het linkermenu.
Voeg een app-instelling toe door deze als volgt toe te voegen en te configureren:
- Naam: APPLICATIONINSIGHTS_CONNECTION_STRING
- Waarde: de verbindingsreeks in de uitvoer van
azd provision
. Als u de Cloud Shell-sessie kwijtraakt, kunt u deze ook vinden op de pagina Overzicht van de Application Insight-resource onder Verbindingsreeks.
Selecteer Toepassen en vervolgens Toepassen en vervolgens Bevestigen.
5. Instrumentatie bij opstarten configureren
In deze stap maakt u de instrumentatie voor uw app volgens de stappen die worden beschreven in de instrumentatie van OpenTelemetry .NET zero-code.
Maak in Cloud Shell startup.sh met de volgende regels.
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
Implementeer dit bestand in uw app met de volgende Azure CLI-opdracht. Als u zich nog steeds in de map ~/MyFirstAzureWebApp bevindt, zijn er geen andere parameters nodig omdat
az webapp up
er al standaardwaarden zijn ingesteld voor de resourcegroep en de naam van de app.az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type static
Tip
Met deze methode wordt het startup.sh-bestand afzonderlijk van uw toepassing geïmplementeerd. Op die manier is de instrumentatieconfiguratie gescheiden van uw toepassingscode. U kunt echter andere implementatiemethoden gebruiken om het script samen met uw toepassing te implementeren.
Selecteer Configuratie in het linkermenu op de beheerpagina van de app.
Stel de opstartopdracht in op /home/site/startup.sh. Het is hetzelfde pad waarnaar u in de vorige stap hebt geïmplementeerd.
Selecteer Opslaan en vervolgens Doorgaan.
5. Controleren in Application Insights
De sidecar van de otel-collector moet nu gegevens exporteren naar Application Insights.
Vernieuw de pagina een paar keer op het browsertabblad om
https://<app-name>.azurewebsites.net
enkele webaanvragen te genereren.Ga terug naar de overzichtspagina van de resourcegroep en selecteer vervolgens de Application Insights-resource die is
azd up
gemaakt. U ziet nu enkele gegevens in de standaardgrafieken.
Notitie
In dit veelvoorkomende bewakingsscenario is Application Insights slechts een van de OpenTelemetry-doelen die u kunt gebruiken, zoals Jaeger, Prometheus en Zipkin.
6. Resources opschonen
Wanneer u de omgeving niet meer nodig hebt, kunt u de resourcegroepen en alle gerelateerde resources verwijderen. Voer deze opdrachten uit in de Cloud Shell:
cd ~/MyFirstAzureWebApp
az group delete --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down
Veelgestelde vragen
Hoe verwerken sidecarcontainers interne communicatie?
Sidecar-containers delen dezelfde netwerkhost als de hoofdcontainer, zodat de hoofdcontainer (en andere sidecarcontainers) elke poort in de sidecar met localhost:<port>
kunnen bereiken. Het voorbeeld startup.sh gebruikt localhost:4318
voor toegang tot poort 4318 op de sidecar van de otel-collector .
In het dialoogvenster Container bewerken wordt het poortvak momenteel niet gebruikt door App Service. U kunt deze gebruiken als onderdeel van de sidecar-metagegevens, bijvoorbeeld om aan te geven naar welke poort de sidecar luistert.
Hoe kan ik andere taalstacks instrumenteert?
U kunt een vergelijkbare benadering gebruiken om apps in andere taalstacks te instrumenteren. Zie de OpenTelemetry-documentatie voor meer informatie: