Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku dodasz kolektor OpenTelemetry jako kontener sidecar do aplikacji systemu Linux (bring-your-own-code) w usłudze Azure App Service. W przypadku kontenerów niestandardowych zobacz Samouczek: konfigurowanie kontenera pomocniczego dla kontenera niestandardowego w usłudze Azure App Service.
Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Kontenery boczne w usłudze App Service umożliwiają wdrażanie dodatkowych usług i funkcji w aplikacjach Linux bez ścisłego wiązania ich z wbudowanym lub niestandardowym głównym kontenerem. Kontenery sidecar działają obok głównego kontenera aplikacji w tym samym planie usługi App Service.
Możesz dodać do dziewięciu kontenerów pomocniczych dla każdej aplikacji Linux w usłudze App Service. Można na przykład dodać monitorowanie, rejestrowanie, konfigurację i usługi sieciowe jako kontenery sidecar. Przyczepka modułu zbierającego OpenTelemetry jest jednym z przykładów monitorowania.
1. Konfigurowanie wymaganych zasobów
Najpierw utworzysz zasoby, których używa samouczek. Są one używane w tym konkretnym scenariuszu i nie są wymagane w przypadku kontenerów sidecar w ogóle.
W usłudze Azure Cloud Shell uruchom następujące polecenia. Pamiętaj, aby dostarczyć
<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 provisionPo wyświetleniu monitu podaj wybraną subskrypcję i region. Na przykład:
- Subskrypcja: Twoja subskrypcja.
- Region: (Europa) Europa Zachodnia.
Po zakończeniu wdrażania powinny zostać wyświetlone następujące dane wyjściowe:
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>
Skopiuj te wartości wyjściowe do późniejszego użycia. Można je również znaleźć w portalu na stronach zarządzania odpowiednich zasobów.
Uwaga
azd provisionużywa dołączonych szablonów, aby utworzyć następujące zasoby platformy Azure:- Grupa zasobów oparta na nazwie środowiska.
-
Rejestr kontenerów z dwoma wdrożonymi obrazami:
- Obraz Nginx z modułem OpenTelemetry.
- Obraz modułu zbierającego OpenTelemetry skonfigurowany do eksportowania do usługi Azure Monitor.
- Tożsamość zarządzana przypisana przez użytkownika z
AcrPulluprawnieniem na poziomie grupy zasobów (w celu ściągnięcia obrazów z rejestru). - obszar roboczy usługi Log Analytics.
- Składnik usługi Application Insights.
2. Utwórz aplikację internetową
W tym kroku wdrożysz szablon aplikacji ASP.NET Core. Wykonaj następujące polecenia w Azure Cloud Shell. Zastąp <app-name> globalnie unikalną nazwą aplikacji i eastus preferowanym regionem.
Utwórz przykładową aplikację:
cd ~ dotnet new webapp -n MyFirstAzureWebApp --framework net8.0 cd MyFirstAzureWebAppUtwórz grupę zasobów, plan Linux App Service oraz aplikację webową:
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"Zbuduj aplikację i zapakuj zawartość katalogu publish:
dotnet publish --configuration Release --output publish cd publish zip -r ../app.zip . cd ..Wdróż pakiet.
az webapp deploy --name <app-name> --resource-group myWebAppResourceGroup --src-path app.zip --type zip
Po kilku minutach aplikacja internetowa .NET zostaje wdrożona jako MyFirstAzureWebApp.dll do nowej aplikacji App Service.
3. Dodawanie kontenera sidecar
W tej sekcji dodasz kontener sidecar do aplikacji systemu Linux.
W witrynie Azure Portal przejdź do strony zarządzania aplikacją
Na stronie zarządzania aplikacją z menu po lewej stronie wybierz pozycję Deployment Center.
Wybierz baner z tekstem Czy chcesz dodać kontenery do uruchomienia obok aplikacji? Kliknij tutaj, aby spróbować.
Po ponownym załadowaniu strony wybierz kartę Kontenery (nowe).
Wybierz pozycję Dodaj i skonfiguruj nowy kontener w następujący sposób:
- Nazwa: otel-collector
- Źródło obrazu: Azure Container Registry
- Uwierzytelnianie: Poświadczenia administratora
-
Rejestr: rejestr utworzony przez
azd provision - Image: otel-collector
- Znacznik: najnowsze
Wybierz Zastosuj.
4. Konfigurowanie zmiennych środowiskowych
W przykładowym scenariuszu kontener sidecar modułu zbierającego otel jest skonfigurowany do eksportowania danych OpenTelemetry do usługi Azure Monitor, ale wymaga ciągu połączenia w postaci zmiennej środowiskowej (zobacz plik konfiguracji OpenTelemetry dla obrazu modułu zbierającego otel-collector).
Zmienne środowiskowe dla kontenerów konfigurujesz jak w przypadku każdej aplikacji usługi App Service, konfigurując ustawienia aplikacji. Ustawienia aplikacji są dostępne dla wszystkich kontenerów w aplikacji.
Przejdź do strony zarządzania aplikacji App Service.
W menu po lewej stronie wybierz pozycję Zmienne środowiskowe.
Dodaj ustawienie aplikacji, wybierając pozycję Dodaj i skonfiguruj je w następujący sposób:
- Nazwa: APPLICATIONINSIGHTS_CONNECTION_STRING
-
Wartość: Parametry połączenia w danych wyjściowych
azd provision. Jeśli utracisz sesję usługi Cloud Shell, możesz ją również znaleźć na stronie Przegląd zasobu usługi Application Insights w obszarze Connection String.
Wybierz Zastosuj, a następnie Zastosuj, a następnie Potwierdź.
5. Konfigurowanie instrumentacji podczas uruchamiania
W tym kroku utworzysz instrumentację dla aplikacji zgodnie z krokami opisanymi w OpenTelemetry .NET zero-code instrumentation.
Po powrocie do usługi Cloud Shell utwórz startup.sh z następującymi wierszami.
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 EOFWdróż ten plik do aplikacji za pomocą następującego polecenia interfejsu wiersza polecenia platformy Azure. Zastąp
<app-name>nazwą, której użyłeś podczas tworzenia aplikacji.az webapp deploy --resource-group myWebAppResourceGroup --name <app-name> --src-path startup.sh --target-path /home/site/startup.sh --type staticNapiwek
To podejście wdraża plik startup.sh oddzielnie od aplikacji. W ten sposób konfiguracja instrumentacji jest oddzielona od kodu aplikacji. Można jednak użyć innych metod wdrażania, aby wdrożyć skrypt razem z aplikacją.
Po powrocie na stronę zarządzania aplikacją z menu po lewej stronie wybierz pozycję Konfiguracja.
Ustaw polecenie uruchamiania na /home/site/startup.sh. Jest to ta sama ścieżka, do której wdrożono w poprzednim kroku.
Wybierz pozycję Zapisz, a następnie Kontynuuj.
5. Sprawdź w usłudze Application Insights
Sidecar modułu otel-collector powinien teraz eksportować dane do usługi Application Insights.
Wróć do karty przeglądarki
https://<app-name>.azurewebsites.net, odśwież stronę kilka razy, aby wygenerować niektóre żądania internetowe.Wróć do strony przeglądu grupy zasobów, a następnie wybierz zasób usługi Application Insights utworzony przez
azd up. Powinny być teraz widoczne pewne dane na wykresach domyślnych.
Uwaga
W tym bardzo typowym scenariuszu monitorowania usługa Application Insights jest tylko jednym z systemów docelowych OpenTelemetry, których można użyć, takich jak Jaeger, Prometheus i Zipkin.
6. Czyszczenie zasobów
Gdy środowisko nie jest już potrzebne, możesz usunąć grupy zasobów i wszystkie powiązane zasoby. Wystarczy uruchomić następujące polecenia w usłudze Cloud Shell:
cd ~/MyFirstAzureWebApp
az group delete --name myWebAppResourceGroup --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down