Sdílet prostřednictvím


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:

  1. Stáhněte si agenta Java Application Insights a vytvořte pro něj konfigurační soubor s názvem applicationinsights.json.
  2. -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:
  • 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_NAMEAPPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEYa 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í a NEW_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 ApplicationInsightsoznač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.