Zelfstudie: De Java-agent application performance management (APM) configureren met init-containers in Azure Container Apps
In deze zelfstudie configureert u de Java-agent application performance management (APM) met init-containers in Azure Container Apps. Met APM kunt u de waarneembaarheid van uw container-apps verbeteren. U kunt de APM-invoegtoepassing in dezelfde installatiekopieën of Dockerfile inpakken met uw app, maar het verbindt de beheerproblemen, zoals release en Common Vulnerabilities and Exposures (CVE). In plaats van de problemen aan elkaar te koppelen, kunt u de Java-agent en init-containers in Azure Container Apps gebruiken om APM-oplossingen te injecteren zonder de installatiekopieën van uw app te wijzigen.
In deze zelfstudie hebt u:
- Bereid een installatiekopieën voor om de Java-agent in te stellen en naar een Azure Container Registry te pushen.
- Maak een Container Apps-omgeving en een container-app als doel-Java-app.
- Configureer init-containers en volumekoppelingen om Application Insights-integratie in te stellen.
Vereisten
- Een Azure-abonnement. Maak er gratis een.
- Een exemplaar van Application Insights.
- Een exemplaar van Azure Container Registry of een ander containerinstallatiekopieënregister.
- Docker, om een installatiekopieën te bouwen.
- De nieuwste versie van de Azure CLI.
De omgeving instellen
Gebruik de volgende stappen om omgevingsvariabelen te definiëren en ervoor te zorgen dat uw Container Apps-extensie up-to-date is:
Definieer omgevingsvariabelen met behulp van de volgende opdrachten:
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"
Meld u aan bij de Azure CLI met behulp van de volgende opdrachten:
az login az account set --subscription $SUBSCRIPTION_ID
Gebruik de volgende opdrachten om ervoor te zorgen dat u de nieuwste versie van de Azure CLI-extensies voor Container Apps en Application Insights hebt:
az extension add --name containerapp --upgrade az extension add --name application-insights --upgrade
Haal de verbindingsreeks voor uw Application Insights-exemplaar op met behulp van de volgende opdrachten:
CONNECTION_STRING=$(az monitor app-insights component show \ --ids $APP_INSIGHTS_RESOURCE_ID \ --query connectionString)
De containerinstallatiekopieën voorbereiden
Als u een installatiekopieën wilt maken voor de Application Insights Java-agent, gebruikt u de volgende stappen in dezelfde map:
Maak een Dockerfile met de volgende inhoud:
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"]
Maak een setup.sh-bestand met de volgende inhoud:
#!/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
Maak een installatiekopieën met behulp van de volgende opdracht:
docker build . --tag "$CONTAINER_REGISTRY_NAME.azurecr.io/samples/java-agent-setup:1.0.0"
Push de installatiekopieën naar Azure Container Registry of een ander containerinstallatiekopieënregister met behulp van de volgende opdrachten:
az acr login --name $CONTAINER_REGISTRY_NAME docker push "$CONTAINER_REGISTRY_NAME.azurecr.io/samples/java-agent-setup:1.0.0"
Tip
U vindt code die relevant is voor deze stap in de GitHub-opslagplaats azure-container-apps-java-samples .
Een Container Apps-omgeving en een container-app maken als de Java-doel-app
Als u een Container Apps-omgeving en een container-app wilt maken als doel-Java-app, gebruikt u de volgende stappen:
Maak een Container Apps-omgeving met behulp van de volgende opdracht:
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --query "properties.provisioningState"
Nadat u de Container Apps-omgeving hebt gemaakt, retourneert de opdrachtregel een
Succeeded
bericht.Maak een container-app voor verdere configuratie met behulp van de volgende opdracht:
az containerapp create \ --name $CONTAINER_APP_NAME \ --environment $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --query "properties.provisioningState"
Nadat u de container-app hebt gemaakt, retourneert de opdrachtregel een
Succeeded
bericht.
Init-container, geheimen, omgevingsvariabelen en volumes configureren voor het instellen van Application Insights-integratie
Gebruik de volgende stappen om uw init-container te configureren met geheimen, omgevingsvariabelen en volumes. Met deze configuratie kunt u de opgeslagen gegevens gebruiken met uw Application Insights-exemplaar.
Schrijf de huidige configuratie van de actieve container-app naar een app.yaml-bestand in de huidige map met behulp van de volgende opdracht:
az containerapp show \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_NAME \ --output yaml \ > app.yaml
Gebruik de volgende stappen om het bestand app.yaml te bewerken. De bewerkingen voegen geheimen, tijdelijke opslag en een init-container toe aan het bestand en werken de app-container bij.
Voeg een geheim toe voor de Application Insights-verbindingsreeks met behulp van het volgende voorbeeld. Vervang
$CONNECTION_STRING
door uw Application Insights-verbindingsreeks.properties: configuration: secrets: - name: app-insights-connection-string value: $CONNECTION_STRING
Voeg een kortstondig opslagvolume toe voor Java-agentbestanden met behulp van het volgende voorbeeld:
properties: template: volumes: - name: java-agent-volume storageType: EmptyDir
Voeg een init-container met volumekoppelingen en omgevingsvariabelen toe met behulp van het volgende voorbeeld. Vervang door
<CONTAINER_REGISTRY_NAME>
de naam van uw 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
Werk de app-container bij met volumekoppelingen en omgevingsvariabelen met behulp van het volgende voorbeeld:
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
Werk de container-app bij met het gewijzigde bestand app.yaml met behulp van de volgende opdracht:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_NAME \ --yaml app.yaml \ --query "properties.provisioningState"
Nadat u de container-app hebt bijgewerkt, retourneert de opdracht een
Succeeded
bericht. U kunt nu controleren of uw container-app is verbonden door uw Application Insights-exemplaar te bekijken in Azure Portal.
Resources opschonen
De resources die u in deze zelfstudie hebt gemaakt, dragen bij aan uw Azure-factuur. Als u deze niet op lange termijn nodig hebt, gebruikt u de volgende opdracht om de resourcegroep en de bijbehorende resources te verwijderen:
az group delete --resource-group $RESOURCE_GROUP
Gerelateerde inhoud
Behalve Azure-toepassing Insights zijn er andere populaire APM-oplossingen in de community. Als u uw Azure Container App wilt integreren met andere APM-providers, vervangt u de JAR van de Java-agent en gerelateerde configuratiebestanden.