Bewaking van toepassingsprestaties integreren in containerinstallatiekopieën
Notitie
De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.
Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.
Dit artikel is van toepassing op:✅ Basic/Standard ✅ Enterprise
In dit artikel wordt uitgelegd hoe u de Application Insights Java-agent integreert in uw containerinstallatiekopieën. Op een vergelijkbare manier kunt u ook andere APM-agents (Application Performance Monitoring) integreren in uw containerinstallatiekopieën, waaronder AppDynamics, New Relic en Dynatrace.
Azure Spring Apps kan probleemloos worden geïntegreerd met APM-agents. Wanneer u toepassingen migreert naar Azure Container Apps of Azure Kubernetes Service (AKS), moet u integreren met APM tijdens het bouwen van de installatiekopieën. Het proces is vergelijkbaar met de benadering die wordt gebruikt door Azure Spring Apps. U kunt ook een APM-agent toevoegen in een afzonderlijke init-container en deze tijdens de initialisatie in een container-app injecteren.
Vereisten
De Java-agent voor Application Insights kiezen
Azure Spring Apps maakt momenteel gebruik van Application Insights Java-agent 3.5.2. U kunt een andere versie kiezen, afhankelijk van uw behoeften. U vindt alle versies op de pagina Java-releases van Application Insights.
U vindt de Application Insights-verbindingsreeks in Azure Portal in het deelvenster Overzicht van uw Application Insights-exemplaar. Deze tekenreeks is vereist voor de instructies in dit artikel.
Er zijn enkele configuratieopties voor Application Insights Java-agent, zoals het steekproefpercentage en de naam van de cloudrol. Zie Configuratieopties van Application Insights voor Java voor meer informatie.
Als u een Dockerfile gebruikt om een containerinstallatiekopieën te maken, raadpleegt u de sectie Dockerfile gebruiken. Als u Paketo Buildpacks gebruikt om een containerinstallatiekopieën te bouwen, raadpleegt u de sectie Paketo Buildpacks gebruiken.
Dockerfile gebruiken
Gebruik de volgende stappen om uw Dockerfile te wijzigen:
- Download de Java-agent van Application Insights en maak er een configuratiebestand voor, applicationinsights.json genoemd.
- Voeg de
-javaagent
optie toe aan het toegangspunt van de containerinstallatiekopieën.
Zie Een containerinstallatiekopieën bouwen vanuit een JAR- of WAR-bestand voor meer informatie over het bouwen van een JAR-bestand of WAR-bestand met een Dockerfile.
Een JAR-bestand bouwen
In het volgende voorbeeld bouwt Dockerfile een JAR-bestand met de vorige wijzigingen:
FROM mcr.microsoft.com/openjdk/jdk:17-mariner
ARG APP_INSIGHTS_VERSION
ARG APP_INSIGHTS_CONNECTION_STRING
ARG JAR_FILENAME
# Set up Application Insights agent
ADD https://github.com/microsoft/ApplicationInsights-Java/releases/download/${APP_INSIGHTS_VERSION}/applicationinsights-agent-${APP_INSIGHTS_VERSION}.jar \
/java-agent/applicationinsights-agent.jar
RUN echo "{\"connectionString\": \"${APP_INSIGHTS_CONNECTION_STRING}\"}" > applicationinsights.json \
&& mv applicationinsights.json /java-agent/applicationinsights.json
COPY $JAR_FILENAME /opt/app/app.jar
# Add -javaagent option
ENTRYPOINT ["java", "-javaagent:/java-agent/applicationinsights-agent.jar", "-jar", "/opt/app/app.jar"]
Wanneer u een containerinstallatiekopieën maakt met dit Dockerfile, moet u buildargumenten toevoegen met behulp van --build-arg
, zoals wordt weergegeven in het volgende voorbeeld:
docker build -t <image-name>:<image-tag> \
-f JAR.dockerfile \
--build-arg APP_INSIGHTS_VERSION=3.5.2 \
--build-arg APP_INSIGHTS_CONNECTION_STRING="<connection-string>" \
--build-arg JAR_FILENAME=<path-to-jar> \
.
Een WAR-bestand bouwen
In het volgende voorbeeld bouwt Dockerfile een WAR-bestand met de vorige wijzigingen:
FROM mcr.microsoft.com/openjdk/jdk:17-mariner
ARG TOMCAT_VERSION
ARG TOMCAT_MAJOR_VERSION
ARG APP_INSIGHTS_VERSION
ARG APP_INSIGHTS_CONNECTION_STRING
ARG WAR_FILENAME
ARG TOMCAT_HOME=/opt/tomcat
# Set up Application Insights agent
ADD https://github.com/microsoft/ApplicationInsights-Java/releases/download/${APP_INSIGHTS_VERSION}/applicationinsights-agent-${APP_INSIGHTS_VERSION}.jar \
/java-agent/applicationinsights-agent.jar
RUN echo "{\"connectionString\": \"${APP_INSIGHTS_CONNECTION_STRING}\"}" > applicationinsights.json \
&& mv applicationinsights.json /java-agent/applicationinsights.json
# Set up Tomcat
ADD https://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR_VERSION/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz \
$TOMCAT_HOME/apache-tomcat-$TOMCAT_VERSION.tar.gz
RUN tdnf update -y \
&& tdnf install -y tar \
&& tar -zxf $TOMCAT_HOME/apache-tomcat-$TOMCAT_VERSION.tar.gz -C $TOMCAT_HOME --strip-components 1 \
&& rm $TOMCAT_HOME/apache-tomcat-$TOMCAT_VERSION.tar.gz \
&& rm -r $TOMCAT_HOME/webapps/*
COPY $WAR_FILENAME $TOMCAT_HOME/webapps/app.war
# Add the -javaagent option
ENTRYPOINT ["/bin/sh", "-c" , "export CATALINA_OPTS=-javaagent:/java-agent/applicationinsights-agent.jar && /opt/tomcat/bin/catalina.sh run"]
Wanneer u een containerinstallatiekopieën maakt met dit Dockerfile, moet u buildargumenten toevoegen met behulp van --build-arg
, zoals wordt weergegeven in het volgende voorbeeld:
docker build -t <image-name>:<image-tag> \
-f WAR.dockerfile \
--build-arg APP_INSIGHTS_VERSION=3.5.2 \
--build-arg APP_INSIGHTS_CONNECTION_STRING="<connection-string>" \
--build-arg WAR_FILENAME=<path-to-war> \
--build-arg TOMCAT_VERSION=<version> \
--build-arg TOMCAT_MAJOR_VERSION=<major-version> \
.
Andere bewakingsagents voor toepassingsprestaties integreren met Dockerfile
U kunt andere APM-agents (Application Performance Monitoring) op een vergelijkbare manier integreren. In de volgende lijst ziet u enkele andere APM-agents, samen met een korte beschrijving van hoe u deze kunt integreren. Zie de officiële documentatie van APM voor downloadinstructies.
- Dynatrace
- Download de Dynatrace-agent in het Dockerfile.
- Stel de volgende omgevingsvariabelen in tijdens runtime:
LD_PRELOAD=<path-to-agent>
DT_TENANT=<tenant>
DT_TENANTTOKEN=<token>
DT_CONNECTION_POINT=<connection-point>
-
DT_LOGLEVELCON=info
Zie OneAgent instellen voor containers voor toepassingsbewaking voor meer informatie.
- AppDynamics
- Download de AppDynamics-agent in het Dockerfile.
- Toevoegen
-javaagent:<path-to-agent>
aan de JVM-opties. - Stel tijdens runtime de vereiste omgevingsvariabelen in, waaronder
APPDYNAMICS_AGENT_ACCOUNT_NAME
,APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY
enzovoort. Zie AppDynamics Java Agent Configuration Properties voor een volledige lijst met configuratie-eigenschappen.
- New Relic
- Download de New Relic-agent in het Dockerfile. Als u een new Relic Java-agentconfiguratiebestand hebt, kopieert u het van de lokale computer naar uw container. Zie configuratie van Java-agent: configuratiebestand voor meer informatie over configuratiebestanden.
- Toevoegen
-javaagent:<path-to-agent>
aan de JVM-opties. - Stel de omgevingsvariabelen
NEW_RELIC_LICENSE_KEY=<license-key>
enNEW_RELIC_APP_NAME=<app-name>
tijdens runtime in als u ze niet hebt ingesteld in een configuratiebestand of als u de waarden in een configuratiebestand wilt overschrijven.
Er is een andere benadering voor het integreren van een APM-agent, namelijk het vooraf maken van een containerinstallatiekopieën voor de APM-agent en het uitvoeren als een init-container. Zie zelfstudie: De Java-agent application performance management (APM) configureren met init-containers in Azure Container Apps voor meer informatie over deze aanpak.
Paketo Buildpacks gebruiken
Als u de Application Insights-agent in uw containerinstallatiekopieën wilt integreren, hebt u een binding nodig. Zie Bindingen in de Paketo-documentatie voor meer informatie over bindingen.
Gebruik eerst de volgende opdrachten om een binding met de naam Application Insights te maken in de map bindingen op uw lokale computer. De binding bestaat uit slechts één bestand, benoemd type. De inhoud van het typebestand is de tekst ApplicationInsights
die een Application Insights-binding aangeeft.
mkdir -p bindings/application-insights
echo "ApplicationInsights" > bindings/application-insights/type
In het volgende diagram ziet u de mapstructuur:
bindings
└── application-insights
└── type
Gebruik vervolgens de volgende opdracht om de installatiekopieën te bouwen. Geef de binding op voor uw build met behulp van de --volume
optie. De pack-CLI koppelt de bindingsmap aan de buildcontainer. Vervolgens detecteert de Application Insights-buildpack het en neemt deel aan het buildproces.
pack build <image-name>:<image-tag> \
--volume $(pwd)/bindings/application-insights:/platform/bindings/application-insights" \
--path <path-to-source-root> \
--builder <builder-name>
Als u de containerinstallatiekopieën wilt implementeren in een Azure Container Apps-omgeving, kunt u de Azure CLI gebruiken. Zie Azure Container Apps implementeren met de opdracht az containerapp up voor meer informatie. Er zijn twee benaderingen om de Application Insights-verbindingsreeks tijdens runtime door te geven aan de Application Insights-agent. Een benadering is het doorgeven van de verbindingsreeks als een omgevingsvariabele. Zie de sectie Configureren met omgevingsvariabelen voor meer informatie. De andere methode is het doorgeven van de verbindingsreeks via bindingen. Zie de sectie Configureren met bindingen voor meer informatie.
Configureren met omgevingsvariabelen
Als u een verbindingsreeks wilt doorgeven aan Application Insights, geeft u APPLICATIONINSIGHTS_CONNECTION_STRING
de --env-vars
optie op, zoals wordt weergegeven in het volgende voorbeeld. U kunt andere omgevingsvariabelen opgeven als u meer configuratieopties wilt doorgeven aan de agent.
az containerapp up \
--name <container-app-name> \
--image <image-name>:<image-tag> \
--resource-group <resource-group> \
--environment <environment-name> \
--location <location> \
--env-vars "APPLICATIONINSIGHTS_CONNECTION_STRING=<connection-string>"
Configureren met bindingen
Als u de Application Insights-agent wilt configureren met bindingen, kunt u de Application Insights-verbindingsreeks, het bindingstype en andere configuraties opslaan als geheimen in uw container-app. Koppel de geheimen in een volume zodat het Application Insights-buildpack deze tijdens runtime kan lezen.
Met de volgende opdracht declareert u twee geheimen op toepassingsniveau: type
en connection-string
. Ze worden gekoppeld aan /bindingen/application-insights in de container. Het buildpack zoekt naar bindingen in de map /bindings omdat de SERVICE_BINDING_ROOT
omgevingsvariabele is ingesteld.
az containerapp create \
--name <container-app-name> \
--image <image-name>:<image-tag> \
--resource-group <resource-group> \
--environment <environment-name> \
--secrets "type=ApplicationInsights" "connection-string=<connection-string>" \
--secret-volume-mount "/bindings/application-insights" \
--env-vars "SERVICE_BINDING_ROOT=/bindings"
U kunt de verbindingsreeks ook opslaan in Azure Key Vault en ernaar verwijzen in geheimen. Zie Geheimen beheren in Azure Container Apps voor meer informatie.
Zie Buildpacks gebruiken in Kubernetes voor Java om de containerinstallatiekopieën te implementeren in Azure Kubernetes Service.
Andere bewakingsagents voor toepassingsprestaties integreren met Paketo Buildpacks
Er zijn buildpacks voor verschillende APM-agents, waaronder de volgende agents. Zie de documentatie voor elke agent voor meer informatie over het instellen en configureren van bindingen.