Uwaga
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 skonfigurujesz agenta java zarządzania wydajnością aplikacji (APM) z kontenerami inicjowania w usłudze Azure Container Apps. Usługa APM ułatwia obserwowanie możliwości aplikacji kontenera. Wtyczkę APM można spakować w tym samym obrazie lub pliku Dockerfile z aplikacją, ale wiąże ze sobą problemy związane z zarządzaniem, takie jak ograniczanie ryzyka związanego z wydaniami i typowymi lukami w zabezpieczeniach i ekspozycjami (CVE). Zamiast wiązać problemy razem, możesz użyć agenta Java i kontenerów inicjowania w usłudze Azure Container Apps, aby wstrzyknąć rozwiązania APM bez modyfikowania obrazu aplikacji.
W tym samouczku zostały wykonane następujące czynności:
- Przygotuj obraz, aby skonfigurować agenta Java i wypchnąć go do usługi Azure Container Registry.
- Utwórz środowisko usługi Container Apps i aplikację kontenera jako docelową aplikację Java.
- Konfigurowanie kontenerów inicjowania i instalacji woluminów w celu skonfigurowania integracji usługi Application Insights.
Wymagania wstępne
- Subskrypcja platformy Azure. Utwórz je bezpłatnie.
- Wystąpienie usługi Application Insights.
- Wystąpienie usługi Azure Container Registry lub inny rejestr obrazów kontenerów.
- Platforma Docker w celu utworzenia obrazu.
- Najnowsza wersja interfejsu wiersza polecenia platformy Azure.
Konfigurowanie środowiska
Wykonaj następujące kroki, aby zdefiniować zmienne środowiskowe i upewnić się, że rozszerzenie usługi Container Apps jest aktualne:
Zdefiniuj zmienne środowiskowe przy użyciu następujących poleceń:
export SUBSCRIPTION_ID="<SUBSCRIPTION_ID>" # Replace with your own Azure subscription ID export APP_INSIGHTS_RESOURCE_ID="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/my-resource-group/providers/microsoft.insights/components/my-app-insights" export CONTAINER_REGISTRY_NAME="myacr" export RESOURCE_GROUP="my-resource-group" export ENVIRONMENT_NAME="my-environment" export CONTAINER_APP_NAME="my-container-app" export LOCATION="eastus"
Zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu następujących poleceń:
az login az account set --subscription $SUBSCRIPTION_ID
Użyj następujących poleceń, aby upewnić się, że masz najnowszą wersję rozszerzeń interfejsu wiersza polecenia platformy Azure dla usługi Container Apps i Application Insights:
az extension add --name containerapp --upgrade az extension add --name application-insights --upgrade
Pobierz parametry połączenia dla wystąpienia usługi Application Insights, używając następujących poleceń:
CONNECTION_STRING=$(az monitor app-insights component show \ --ids $APP_INSIGHTS_RESOURCE_ID \ --query connectionString)
Przygotowywanie obrazu kontenera
Aby utworzyć obraz konfiguracji dla agenta Java usługi Application Insights, wykonaj następujące kroki w tym samym katalogu:
Utwórz plik Dockerfile z następującą zawartością:
FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 ARG version="3.5.4" RUN tdnf update -y && tdnf install -y curl ca-certificates RUN curl -L "https://github.com/microsoft/ApplicationInsights-Java/releases/download/${version}/applicationinsights-agent-${version}.jar" > agent.jar ADD setup.sh /setup.sh ENTRYPOINT ["/bin/sh", "setup.sh"]
Utwórz plik setup.sh o następującej zawartości:
#!/bin/sh if [[ -z "$CONNECTION_STRING" ]]; then echo "Environment variable CONNECTION_STRING is not found. Exiting..." exit 1 else echo "{\"connectionString\": \"$CONNECTION_STRING\"}" > /java-agent/applicationinsights.json cp agent.jar /java-agent/agent.jar fi
Utwórz obraz przy użyciu następującego polecenia:
docker build . --tag "$CONTAINER_REGISTRY_NAME.azurecr.io/samples/java-agent-setup:1.0.0"
Wypchnij obraz do usługi Azure Container Registry lub innego rejestru obrazów kontenerów przy użyciu następujących poleceń:
az acr login --name $CONTAINER_REGISTRY_NAME docker push "$CONTAINER_REGISTRY_NAME.azurecr.io/samples/java-agent-setup:1.0.0"
Napiwek
Kod odpowiedni dla tego kroku można znaleźć w repozytorium GitHub azure-container-apps-java-samples .
Tworzenie środowiska usługi Container Apps i aplikacji kontenera jako docelowej aplikacji Java
Aby utworzyć środowisko usługi Container Apps i aplikację kontenera jako docelową aplikację Java, wykonaj następujące kroki:
Utwórz środowisko usługi Container Apps przy użyciu następującego polecenia:
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --query "properties.provisioningState"
Po pomyślnym utworzeniu środowiska Container Apps wiersz polecenia zwraca
Succeeded
komunikat.Utwórz aplikację kontenera na potrzeby dalszej konfiguracji przy użyciu następującego polecenia:
az containerapp create \ --name $CONTAINER_APP_NAME \ --environment $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --query "properties.provisioningState"
Po utworzeniu aplikacji kontenera wiersz polecenia zwraca
Succeeded
komunikat.
Konfigurowanie kontenera inicjowania, wpisów tajnych, zmiennych środowiskowych i woluminów w celu skonfigurowania integracji usługi Application Insights
Wykonaj poniższe kroki, aby skonfigurować kontener inicjowania przy użyciu wpisów tajnych, zmiennych środowiskowych i woluminów. Ta konfiguracja umożliwia używanie przechowywanych informacji z wystąpieniem usługi Application Insights.
Zapisz bieżącą konfigurację uruchomionej aplikacji kontenera w pliku app.yaml w bieżącym katalogu, używając następującego polecenia:
az containerapp show \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_NAME \ --output yaml \ > app.yaml
Wykonaj poniższe kroki, aby edytować plik app.yaml . Zmiany dodają wpisy tajne, magazyn efemeryczny i kontener init do pliku oraz zaktualizują kontener aplikacji.
Dodaj wpis tajny dla parametry połączenia usługi Application Insights, korzystając z poniższego przykładu. Zastąp
$CONNECTION_STRING
element parametry połączenia usługi Application Insights.properties: configuration: secrets: - name: app-insights-connection-string value: $CONNECTION_STRING
Dodaj efemeryczny wolumin magazynu dla plików agenta Java, korzystając z następującego przykładu:
properties: template: volumes: - name: java-agent-volume storageType: EmptyDir
Dodaj kontener init z instalacjami woluminów i zmiennymi środowiskowymi, korzystając z poniższego przykładu. Zastąp
<CONTAINER_REGISTRY_NAME>
ciąg nazwą usługi Azure Container Registry.properties: template: initContainers: - image: <CONTAINER_REGISTRY_NAME>.azurecr.io/samples/java-agent-setup:1.0.0 name: java-agent-setup resources: cpu: 0.25 memory: 0.5Gi env: - name: CONNECTION_STRING secretRef: app-insights-connection-string volumeMounts: - mountPath: /java-agent volumeName: java-agent-volume
Zaktualizuj kontener aplikacji za pomocą instalacji woluminów i zmiennych środowiskowych, korzystając z następującego przykładu:
properties: template: containers: - name: test-java-app image: mcr.microsoft.com/azurespringapps/samples/hello-world:0.0.1 resources: cpu: 0.5 memory: 1Gi env: - name: JAVA_TOOL_OPTIONS value: -javaagent:/java-agent/agent.jar volumeMounts: - mountPath: /java-agent volumeName: java-agent-volume
Zaktualizuj aplikację kontenera przy użyciu zmodyfikowanego pliku app.yaml , używając następującego polecenia:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_NAME \ --yaml app.yaml \ --query "properties.provisioningState"
Po zaktualizowaniu aplikacji kontenera polecenie zwróci
Succeeded
komunikat. Teraz możesz sprawdzić, czy aplikacja kontenera jest połączona, wyświetlając wystąpienie usługi Application Insights w witrynie Azure Portal.
Czyszczenie zasobów
Zasoby utworzone w tym samouczku współtworzyją rachunek za korzystanie z platformy Azure. Jeśli nie są one potrzebne w dłuższej perspektywie, użyj następującego polecenia, aby usunąć grupę zasobów i jej zasoby:
az group delete --resource-group $RESOURCE_GROUP
Powiązana zawartość
Inne niż aplikacja systemu Azure Insights, istnieją inne popularne rozwiązania APM w społeczności. Jeśli chcesz zintegrować aplikację kontenera platformy Azure z innymi dostawcami APM, po prostu zastąp plik JAR agenta Java i powiązanymi plikami konfiguracji.