Samouczek: konfigurowanie kontenera przyczepki dla aplikacji systemu Linux w usłudze aplikacja systemu Azure Service
W tym samouczku dodasz moduł zbierający OpenTelemetry jako kontener przyczepki do aplikacji systemu Linux (bring-your-own-code) w usłudze aplikacja systemu Azure Service. W przypadku kontenerów niestandardowych zobacz Samouczek: konfigurowanie kontenera przyczepki dla kontenera niestandardowego w usłudze aplikacja systemu Azure Service.
W usłudze aplikacja systemu Azure można dodać do dziewięciu kontenerów przyczepki dla każdej aplikacji systemu Linux. Kontenery przyczepki umożliwiają wdrażanie dodatkowych usług i funkcji w aplikacjach systemu Linux bez ścisłego połączenia ich z głównym (wbudowanym) kontenerem. Można na przykład dodać monitorowanie, rejestrowanie, konfigurację i usługi sieciowe jako kontenery przyczepki. Przyczepka modułu zbierającego OpenTelemetry jest jednym z takich przykładów monitorowania.
Aby uzyskać więcej informacji na temat kontenera bocznego w usłudze App Service, zobacz:
- Wprowadzenie przyczepek dla usługi aplikacja systemu Azure dla systemu Linux: teraz ogólnie dostępne
- Ogłoszenie ogólnej dostępności rozszerzalności przyczepki w usłudze aplikacja systemu Azure Service
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
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 przyczepki w ogóle.
W usłudze Azure Cloud Shell uruchom następujące polecenia. Pamiętaj, aby dostarczyć element
<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
Po 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 provision
używa dołączonych szablonów, aby utworzyć następujące zasoby platformy Azure:- Grupa zasobów oparta na nazwie środowiska.
- Rejestr kontenerów z wdrożonym dwoma 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
AcrPull
uprawnieniem do 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. Tworzenie aplikacji internetowej
W tym kroku wdrożysz szablon ASP.NET Core aplikacji. Po powrocie do usługi Azure Cloud Shell uruchom następujące polecenia. Zastąp <app-name>
unikatową nazwą aplikacji.
cd ~
dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
cd MyFirstAzureWebApp
az webapp up --name <app-name> --os-type linux
Po kilku minutach ta aplikacja internetowa platformy .NET zostanie wdrożona jako MyFirstAzureWebApp.dll w nowej aplikacji usługi App Service.
3. Dodawanie kontenera przyczepki
W tej sekcji dodasz kontener przyczepki do aplikacji systemu Linux. Środowisko portalu jest nadal wdrażane. Jeśli nie jest jeszcze dostępna, przejdź do karty Użyj szablonu usługi ARM poniżej.
W witrynie Azure Portal przejdź do strony zarządzania aplikacją
Na stronie zarządzania aplikacją z menu po lewej stronie wybierz pozycję Centrum wdrażania.
Wybierz baner Czy chcesz dodać kontenery do uruchomienia obok aplikacji? Kliknij tutaj, aby spróbować.
Jeśli nie widzisz baneru, interfejs użytkownika portalu nie zostanie jeszcze wdrożony dla twojej subskrypcji. Wybierz tutaj kartę Użyj szablonu usługi ARM i kontynuuj.
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
- Obraz: otel-collector
- Tag: latest
Wybierz Zastosuj.
4. Konfigurowanie zmiennych środowiskowych
W przykładowym scenariuszu przyczepka modułu zbierającego otel jest skonfigurowana do eksportowania danych OpenTelemetry do usługi Azure Monitor, ale wymaga parametry połączenia jako zmiennej środowiskowej (zobacz plik konfiguracji OpenTelemetry dla obrazu modułu zbierającego otel-collector).
Zmienne środowiskowe dla kontenerów, takich jak dowolna aplikacja usługi App Service, konfigurując ustawienia aplikacji. Ustawienia aplikacji są dostępne dla wszystkich kontenerów w aplikacji.
Przejdź do strony zarządzania aplikacją usługi 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 elementu
azd provision
. Jeśli sesja usługi Cloud Shell zostanie utracona, możesz ją również znaleźć na stronie Przegląd zasobu usługi Application Insights w obszarze Parametry połączenia.
Wybierz pozycję Zastosuj, a następnie pozycję Zastosuj, a następnie potwierdź.
5. Konfigurowanie instrumentacji podczas uruchamiania
W tym kroku utworzysz instrumentację dla aplikacji zgodnie z krokami opisanymi w instrumentacji kodu zerowego platformy .NET OpenTelemetry.
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 EOF
Wdróż ten plik w aplikacji za pomocą następującego polecenia interfejsu wiersza polecenia platformy Azure. Jeśli nadal jesteś w katalogu ~/MyFirstAzureWebApp , żadne inne parametry nie są konieczne, ponieważ
az webapp up
już ustawiono wartości domyślne dla grupy zasobów i nazwy aplikacji.az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type static
Napiwek
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 pozycję Kontynuuj.
5. Sprawdź w usłudze Application Insights
Przyczepka modułu zbierającego otel powinna teraz eksportować dane do usługi Application Insights.
Wróć do karty
https://<app-name>.azurewebsites.net
przeglądarki dla polecenia , odśwież stronę kilka razy, aby wygenerować niektóre żądania internetowe.Wróć do strony przeglądu grupy zasobów, a następnie wybierz utworzony zasób
azd up
usługi Application Insights. 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 obiektó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 --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down
Często zadawane pytania
- Jak kontenery przyczepki obsługują komunikację wewnętrzną?
- Jak mogę instrumentacja innych stosów języków?
Jak kontenery przyczepki obsługują komunikację wewnętrzną?
Kontenery przyczepki współdzielą ten sam host sieciowy co główny kontener, więc główny kontener (i inne kontenery przyczepki) może dotrzeć do dowolnego portu w przyczepce za pomocą polecenia localhost:<port>
. Przykład startup.sh używa localhost:4318
do uzyskiwania dostępu do portu 4318 na przyczepce modułu zbierającego otel.
W oknie dialogowym Edytowanie kontenera okno Port nie jest obecnie używane przez usługę App Service. Można go użyć w ramach metadanych przyczepki, takich jak wskazanie, na którym porcie nasłuchuje przyczepka.
Jak mogę instrumentacja innych stosów języków?
Możesz użyć podobnego podejścia do instrumentacji aplikacji w innych stosach językowych. Aby uzyskać więcej informacji, zobacz dokumentację platformy OpenTelemetry: