Sdílet prostřednictvím


Kurz: Konfigurace kontejneru sajdkáře pro aplikaci pro Linux ve službě Aplikace Azure Service

V tomto kurzu přidáte kolektor OpenTelemetry jako kontejner sajdkáře do linuxové aplikace (přineste si vlastní kód) ve službě Aplikace Azure Service. Vlastní kontejnery najdete v tématu Kurz: Konfigurace kontejneru sajdkáře pro vlastní kontejner ve službě Aplikace Azure 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ů. Jako kontejnery sajdkáře můžete například přidat monitorování, protokolování, konfiguraci a síťové služby. Sajdkárna kolektoru OpenTelemetry je jedním z příkladů monitorování.

1. Nastavení potřebných prostředků

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

  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 prostředků.

    Poznámka:

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

    • Skupina prostředků založená na názvu prostředí.
    • Registr kontejneru se dvěma nasazenými imagemi:
      • Obrázek Nginx s modulem OpenTelemetry.
      • Image kolektoru OpenTelemetry nakonfigurovaná pro export do služby Azure Monitor.
    • Spravovaná identita přiřazená uživatelem s oprávněním AcrPull ke skupině prostředků (pro vyžádání imagí z registru)
    • Pracovní prostor služby Log Analytics
    • Komponenta Application Insights .

2. Vytvoření webové aplikace

V tomto kroku nasadíte šablonu ASP.NET základní aplikaci. Zpátky v Azure Cloud Shellu spusťte následující příkazy. Nahraďte <app-name> jedinečným názvem aplikace.

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

Po několika minutách se tato webová aplikace .NET nasadí jako MyFirstAzureWebApp.dll do nové aplikace App Service.

3. Přidání kontejneru sajdkáře

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

  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 Zájem o přidání kontejnerů, které chcete spustit společně s vaší aplikací? Kliknutím sem ho 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
    • Značka: nejnovější
  6. Vyberte Použít.

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

4. Konfigurace proměnných prostředí

V ukázkovém scénáři je sajdkárna otel-collector nakonfigurovaná tak, aby exportovala 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 kolektoru otel-collector).

Proměnné prostředí pro kontejnery konfigurujete tak, že nakonfigurujete 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 .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. Konfigurace instrumentace 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. Pokud jste stále v adresáři ~/MyFirstAzureWebApp , nejsou potřeba žádné další parametry, protože az webapp up už jsou nastavené výchozí hodnoty pro skupinu prostředků a název aplikace.

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

    Návod

    Tento přístup nasadí 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ěření v Application Insights

Sajdkárna otel-collector by teď měla 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ý azd up se vytvořil. Ve výchozím grafu 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ů OpenTelemetry, které můžete použít, například Jaeger, Prometheus a Zipkin.

6. Vyčištění prostředků

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

Nejčastější dotazy

Jak kontejnery sajdkár zpracovávají interní komunikaci?

Kontejnery sidecar sdílejí stejný síťový hostitel jako hlavní kontejner, takže hlavní kontejner a další kontejnery sidecar mohou dosáhnout jakéhokoli portu na sidecar localhost:<port>. Příklad startup.sh používá localhost:4318 pro přístup k portu 4318 na sidecaru otel-collector.

V dialogovém okně Upravit kontejner se nastavení port momentálně ve službě App Service nepoužívá. Můžete ho použít jako součást metadat sajdkáře, například k označení portu, na kterém sajdkáře naslouchá.

Může pomocný kontejner přijímat internetové požadavky?

Ne. App Service směruje internetové požadavky pouze do hlavního kontejneru. Pro linuxové aplikace založené na kódu je integrovaný kontejner Linuxu hlavním kontejnerem a každý souběžný kontejner sitecontainers by se měl přidat s IsMain=false.

Pro vlastní kontejnery by měly všechny kromě jednoho sitecontainers mít IsMain=false. Další informace o konfiguraci IsMainnaleznete v tématu Microsoft.Web sites/sitecontainers.

Jak používat připojení svazků?

Funkce připojení svazků umožňuje sdílet neprůběžné soubory a adresáře mezi kontejnery ve vaší webové aplikaci. Pokud chcete přidat nebo nakonfigurovat připojení svazků, použijte možnost Připojení svazků na stránce Přidat kontejner nebo Upravit kontejner.

Snímek obrazovky znázorňující konfiguraci připojení svazku pro sidecar kontejner.

  • Podcesta svazku je automaticky vytvořená logická cesta, která není v kontejneru využívána. Kontejnery, které jsou nakonfigurované s totožnou cestou v rámci svazku, mohou sdílet soubory a adresáře.
  • Cesta připojení kontejneru je cesta k adresáři, na kterou v rámci kontejneru odkazujete. Cesta připojení kontejneru je mapována na dílčí cestu svazku.

Například předpokládejme, že nakonfigurujete následující připojení svazku:

Název sajdkáru Podcesta svazku Cesta připojení kontejneru Jen pro čtení
Kontejner 1 /directory1/directory2 /container1Vol Nepravda
Kontejner 2 /directory1/directory2 /container2Vol Pravdivé
Kontejner 3 /directory1/directory2/directory3 /container3Vol Nepravda
Kontejner 4 /directory4 /container1Vol Nepravda

Na základě těchto nastavení platí následující podmínky:

  • Pokud Container1 vytvoří /container1Vol/myfile.txt, container2 může přečíst soubor přes /container2Vol/myfile.txt.
  • Pokud Container1 vytvoří /container1Vol/directory3/myfile.txt, může container2 přečíst soubor přes /container2Vol/directory3/myfile.txta Container3 může číst a zapisovat do souboru prostřednictvím /container3Vol/myfile.txt.
  • Container4 nesdílí připojení svazku společně s žádným z ostatních kontejnerů.

Poznámka:

Pro kódové linuxové aplikace integrovaný kontejner v Linuxu nemůže používat připojení svazků.

Návody instrumentovat jiné zásobníky jazyka?

Podobný přístup můžete použít k instrumentaci aplikací v jiných jazycích. Další informace najdete v dokumentaci k OpenTelemetry:

Další materiály