Integrace monitorování výkonu aplikací do imagí kontejnerů
Poznámka:
Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.
Tento článek se vztahuje na:✅ Basic/Standard ✅ Enterprise
Tento článek vysvětluje, jak integrovat agenta Java Application Insights do image kontejneru. Podobně můžete do image kontejneru integrovat i další agenty monitorování výkonu aplikací (APM), včetně AppDynamics, New Relic a Dynatrace.
Azure Spring Apps se hladce integruje s agenty APM. Při migraci aplikací do Azure Container Apps nebo Azure Kubernetes Service (AKS) je potřeba při sestavování image integrovat s APM. Tento proces se podobá přístupu používanému službou Azure Spring Apps. Agenta APM můžete také přidat do samostatného kontejneru init-container a během inicializace ji vložit do aplikace kontejneru.
Požadavky
Volba agenta Application Insights v Javě
Azure Spring Apps aktuálně používá agenta Application Insights v Javě 3.5.2. V závislosti na vašich potřebách můžete zvolit jinou verzi. Všechny verze najdete na stránce vydaných verzí Java pro Application Insights.
Připojovací řetězec Application Insights najdete na webu Azure Portal v podokně Přehled vaší instance Application Insights. Tento řetězec je vyžadován pro pokyny v tomto článku.
Existují některé možnosti konfigurace pro agenta Java Application Insights, například procento vzorkování a název cloudové role. Další informace najdete v tématu Možnosti konfigurace Application Insights pro Javu.
Pokud k sestavení image kontejneru používáte soubor Dockerfile, přečtěte si část Použití souboru Dockerfile . Pokud k sestavení image kontejneru používáte balíčky Paketo Buildpacks, přečtěte si část Použití balíčků Paketo Buildpacks .
Použití souboru Dockerfile
Pomocí následujících kroků upravte soubor Dockerfile:
- Stáhněte si agenta Java Application Insights a vytvořte pro něj konfigurační soubor s názvem applicationinsights.json.
-
-javaagent
Přidejte možnost do vstupního bodu image kontejneru.
Další informace o vytváření souboru JAR nebo souboru WAR pomocí souboru Dockerfile najdete v tématu Sestavení image kontejneru z JAR nebo WAR.
Vytvoření souboru JAR
Následující příklad Dockerfile sestaví soubor JAR s předchozími změnami:
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"]
Při sestavování image kontejneru s tímto souborem Dockerfile je potřeba přidat argumenty sestavení pomocí --build-arg
, jak je znázorněno v následujícím příkladu:
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> \
.
Vytvoření souboru WAR
Následující příklad Dockerfile vytvoří soubor WAR s předchozími změnami:
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"]
Při sestavování image kontejneru s tímto souborem Dockerfile je potřeba přidat argumenty sestavení pomocí --build-arg
, jak je znázorněno v následujícím příkladu:
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> \
.
Integrace dalších agentů monitorování výkonu aplikací pomocí souboru Dockerfile
Podobným způsobem můžete integrovat další agenty monitorování výkonu aplikací (APM). Následující seznam obsahuje několik dalších agentů APM a stručný popis toho, jak je integrovat. Pokyny ke stažení najdete v oficiální dokumentaci APM.
- Dynatrace
- Stáhněte agenta Dynatrace v souboru Dockerfile.
- Nastavte následující proměnné prostředí za běhu:
LD_PRELOAD=<path-to-agent>
DT_TENANT=<tenant>
DT_TENANTTOKEN=<token>
DT_CONNECTION_POINT=<connection-point>
-
DT_LOGLEVELCON=info
Další informace naleznete v tématu Nastavení OneAgent pro kontejnery pro monitorování pouze aplikací.
- AppDynamics
- Stáhněte agenta AppDynamics v souboru Dockerfile.
- Přidejte
-javaagent:<path-to-agent>
do možností prostředí JVM. - Nastavte požadované proměnné prostředí, včetně
APPDYNAMICS_AGENT_ACCOUNT_NAME
APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY
a tak dále, za běhu. Úplný seznam vlastností konfigurace naleznete v tématu Vlastnosti konfigurace agenta AppDynamics Java.
- New Relic
- Stáhněte agenta New Relic do souboru Dockerfile. Pokud máte konfigurační soubor agenta New Relic Java, zkopírujte ho z místního počítače do kontejneru. Další informace o konfiguračních souborech najdete v tématu Konfigurace agenta Java: Konfigurační soubor.
- Přidejte
-javaagent:<path-to-agent>
do možností prostředí JVM. - Nastavte proměnné
NEW_RELIC_LICENSE_KEY=<license-key>
prostředí aNEW_RELIC_APP_NAME=<app-name>
za běhu, pokud jste je nenastavili v konfiguračním souboru nebo chcete přepsat hodnoty v konfiguračním souboru.
Existuje další přístup k integraci agenta APM, který je předvytyčit image kontejneru pro agenta APM a spustit ho jako inicializační kontejner. Další informace o tomto přístupu najdete v tématu Kurz: Konfigurace agenta Java pro správu výkonu aplikací (APM) s kontejnery inicializace v Azure Container Apps.
Použití balíčků Paketo Buildpacks
K integraci agenta Application Insights do image kontejneru potřebujete vazbu. Další informace o vazbách naleznete v tématu Vazby v dokumentaci paketo.
Nejprve pomocí následujících příkazů vytvořte vazbu s názvem application-insights v adresáři vazeb na místním počítači. Vazba se skládá pouze z jednoho souboru pojmenovaného typu. Obsah souboru typu je text ApplicationInsights
označující vazbu Application Insights.
mkdir -p bindings/application-insights
echo "ApplicationInsights" > bindings/application-insights/type
Následující diagram znázorňuje adresářovou strukturu:
bindings
└── application-insights
└── type
Potom pomocí následujícího příkazu sestavte image. Pomocí této možnosti zadejte vazbu k sestavení --volume
. Rozhraní příkazového řádku balíčku připojí adresář vazeb do kontejneru sestavení. Potom ho buildpack Application Insights zjistí a účastní se procesu sestavení.
pack build <image-name>:<image-tag> \
--volume $(pwd)/bindings/application-insights:/platform/bindings/application-insights" \
--path <path-to-source-root> \
--builder <builder-name>
Pokud chcete nasadit image kontejneru v prostředí Azure Container Apps, můžete použít Azure CLI. Další informace najdete v tématu Nasazení azure Container Apps pomocí příkazu az containerapp up. Existují dva přístupy k předání připojovací řetězec Application Insights agentu Application Insights za běhu. Jedním z přístupů je předání připojovací řetězec jako proměnné prostředí. Další informace najdete v části Konfigurace s proměnnými prostředí. Druhým přístupem je předání připojovací řetězec prostřednictvím vazeb. Další informace najdete v části Konfigurace s vazbami .
Konfigurace s proměnnými prostředí
Pokud chcete službě Application Insights předat připojovací řetězec, zadejte APPLICATIONINSIGHTS_CONNECTION_STRING
v --env-vars
této možnosti, jak je znázorněno v následujícím příkladu. Pokud chcete agentu předat další možnosti konfigurace, můžete zadat další proměnné prostředí.
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>"
Konfigurace s využitím vazeb
Pokud chcete nakonfigurovat agenta Application Insights pomocí vazeb, můžete do aplikace kontejneru uložit připojovací řetězec Application Insights, typ vazby a všechny další konfigurace jako tajné kódy. Připojte tajné kódy ke svazku, aby je buildpack Application Insights mohl číst za běhu.
Pomocí následujícího příkazu deklarujete dvě tajné kódy na úrovni aplikace: type
a connection-string
. Připojí se k /bindings/application-insights v kontejneru. Balíček sestavení vyhledá vazby v adresáři /bindings , protože SERVICE_BINDING_ROOT
je nastavena proměnná prostředí.
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"
Případně můžete připojovací řetězec uložit ve službě Azure Key Vault a odkazovat na něj v tajných kódech. Další informace najdete v tématu Správa tajných kódů v Azure Container Apps.
Pokud chcete nasadit image kontejneru do služby Azure Kubernetes Service, přečtěte si, jak používat buildpacky v Kubernetes pro Javu.
Integrace dalších agentů monitorování výkonu aplikací pomocí balíčků Paketo Buildpacks
Existují balíčky buildů pro různé agenty APM, včetně následujících agentů. Další informace o nastavení vazby a konfiguracích najdete v dokumentaci pro každého agenta.