Kurz: Konfigurace sidecar kontejneru pro aplikaci pro Linux ve službě Azure App Service

V tomto kurzu přidáte kolektor OpenTelemetry jako kontejner sidecar do linuxové aplikace (s vlastním kódem) ve službě Azure App Service. Vlastní kontejnery najdete v tématu Kurz: Konfigurace sidecar kontejneru pro vlastní kontejner ve službě Azure App Service.

Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.

Kontejnery sidecar ve službě App Service umožňují nasadit u linuxových aplikací další služby a funkce, aniž byste je úzce propojili s integrovaným nebo vlastním hlavním kontejnerem. Kontejnery sidecar běží vedle hlavního kontejneru aplikace ve stejném plánu služby App Service.

U každé linuxové aplikace ve službě App Service můžete přidat až devět podpůrných kontejnerů. Můžete například přidat monitorování, protokolování, konfiguraci a síťové služby jako sidecar kontejnery. Sajdkárna kolektoru OpenTelemetry je jedním z příkladů monitorování.

1. Nastavte potřebné prostředky

Nejprve vytvoříte zdroje, které kurz používá. Používají se pro tento konkrétní scénář a obecně se nevyžadují pro sidecar kontejnery.

  1. V Azure Cloud Shellu spusťte následující příkazy. Nezapomeňte dodat <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. Po zobrazení výzvy zadejte předplatné a oblast podle vašeho výběru. Příklad:

    • Předplatné: Vaše předplatné.
    • Oblast: (Evropa) Západní Evropa.

    Po dokončení nasazení by se měl zobrazit následující výstup:

     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. Zkopírujte tyto výstupní hodnoty pro pozdější použití. Najdete je také na portálu na stránkách pro správu příslušných zdrojů.

    Poznámka

    azd provision používá zahrnuté šablony k vytvoření následujících prostředků Azure:

2. Vytvořte webovou aplikaci

V tomto kroku nasadíte šablonovou aplikaci ASP.NET Core. Spusť následující příkazy v Azure Cloud Shell. Nahraďte <app-name> za globálně unikátní název aplikace a eastus za vaši preferovanou oblast.

  1. Vytvořte ukázkovou aplikaci:

    cd ~
    dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
    cd MyFirstAzureWebApp
    
  2. Vytvořte skupinu zdrojů, plán Linux App Service a webovou aplikaci:

    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. Sestavte aplikaci a zabalte obsah adresáře pro publikování:

    dotnet publish --configuration Release --output publish
    cd publish
    zip -r ../app.zip .
    cd ..
    
  4. Nasaďte balíček.

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

Po několika minutách je webová aplikace .NET nasazena do nové aplikace App Service jako MyFirstAzureWebApp.dll.

3. Přidejte kontejner sidecar

V této části přidáte do aplikace pro Linux sidecar kontejner.

  1. Na webu Azure Portal přejděte na stránku pro správu aplikace.

  2. Na stránce správy aplikace v nabídce vlevo vyberte Deployment Center.

  3. Vyberte banner Chcete přidat kontejnery, které budou spuštěné společně s vaší aplikací? Kliknutím sem to můžete vyzkoušet.

  4. Po opětovném načtení stránky vyberte kartu Kontejnery (nové).

  5. Vyberte Přidat a nakonfigurujte nový kontejner následujícím způsobem:

    • Název: otel-collector
    • Zdroj image: Azure Container Registry
    • Ověřování: Přihlašovací údaje správce
    • registr: Registr vytvořený pomocí azd provision
    • Obrázek: otel-collector
    • Štítek: nejnovější
  6. Vyberte Použít.

    Snímek obrazovky znázorňující, jak nakonfigurovat sidecar kontejner v centru nasazení webové aplikace.

4. Nakonfigurujte proměnné prostředí

V ukázkovém scénáři je sidecar otel-collector nakonfigurovaný tak, aby exportoval data OpenTelemetry do služby Azure Monitor, ale potřebuje připojovací řetězec jako proměnnou prostředí (viz konfigurační soubor OpenTelemetry pro image otel-collector).

Proměnné prostředí pro kontejnery konfigurujete stejně jako v jakékoli aplikaci App Service, a to konfigurací nastavení aplikace. Nastavení aplikace jsou přístupná pro všechny kontejnery v aplikaci.

  1. Přejděte na stránku správy aplikace App Service.

  2. V nabídce vlevo vyberte Proměnné prostředí.

  3. Přidejte nastavení aplikace tak, že vyberete Přidat a nakonfigurujete ho následujícím způsobem:

    • Název: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Hodnota: Připojovací řetězec ve výstupu prvku azd provision. Pokud jste relaci Cloud Shellu ztratili, najdete ji také na stránce Přehled prostředku Application Insight v části Připojovací řetězec.
  4. Vyberte Použít, pak Použít a pak Potvrdit.

    Snímek obrazovky zobrazující stránku Konfigurace webové aplikace se dvěma přidanými nastaveními aplikace

5. Nakonfigurujte instrumentaci při spuštění

V tomto kroku vytvoříte instrumentaci pro vaši aplikaci podle kroků popsaných v instrumentaci openTelemetry .NET s nulovým kódem.

  1. Zpátky v Cloud Shellu vytvořte startup.sh s následujícími řádky.

    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. Tento soubor nasaďte do aplikace pomocí následujícího příkazu Azure CLI. Nahraďte <app-name> jménem, které jste použili při vytváření aplikace.

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

    Návod

    Tento přístup nasazuje soubor startup.sh odděleně od aplikace. Konfigurace instrumentace je tak oddělená od kódu aplikace. K nasazení skriptu společně s vaší aplikací ale můžete použít jiné metody nasazení.

  3. Zpět na stránce správy aplikace v nabídce vlevo vyberte Konfigurace.

  4. Nastavte spouštěcí příkaz na /home/site/startup.sh. Je to stejná cesta, na kterou jste nasadili v předchozím kroku.

  5. Vyberte Uložit a pak Pokračovat.

    Snímek obrazovky, který ukazuje, jak nakonfigurovat vlastní spouštěcí soubor pro aplikaci App Service na webu Azure Portal

5. Ověřte v Application Insights

Sidecar otel-collector by teď měl exportovat data do Application Insights.

  1. Zpátky na kartě https://<app-name>.azurewebsites.netprohlížeče aktualizujte stránku několikrát, aby se vygenerovaly některé webové požadavky.

  2. Vraťte se na stránku přehledu skupiny prostředků a vyberte prostředek Application Insights, který vytvořil azd up. Ve výchozích grafech byste teď měli vidět nějaká data.

    Snímek obrazovky se stránkou Application Insights zobrazující data ve výchozích grafech

Poznámka

V tomto velmi běžném scénáři monitorování je Application Insights jen jedním z cílů pro OpenTelemetry, které lze použít, například Jaeger, Prometheus a Zipkin.

6. Vyčistěte prostředky

Pokud už prostředí nepotřebujete, můžete odstranit skupiny prostředků a všechny související prostředky. Stačí spustit tyto příkazy v Cloud Shellu:

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

Další materiály