Sdílet prostřednictvím


Kurz: Konfigurace agenta Java pro správu výkonu aplikací (APM) s inicializačními kontejnery v Azure Container Apps

V tomto kurzu nakonfigurujete agenta Java pro správu výkonu aplikací (APM) s inicializačními kontejnery v Azure Container Apps. APM pomáhá zlepšit pozorovatelnost pro vaše kontejnerové aplikace. Modul plug-in APM můžete zabalit do stejné image nebo souboru Dockerfile s vaší aplikací, ale spojuje obavy týkající se správy, jako je zmírnění rizik vydaných verzí a běžných ohrožení zabezpečení a ohrožení zabezpečení (CVE). Místo vazby na obavy můžete použít agenta Java a inicializační kontejnery v Azure Container Apps k vložení řešení APM beze změny image aplikace.

V tomto kurzu se naučíte:

  • Připravte image pro nastavení agenta Javy a nasdílení změn do služby Azure Container Registry.
  • Vytvořte prostředí Container Apps a aplikaci typu kontejner jako cílovou aplikaci v Javě.
  • Nakonfigurujte inicializační kontejnery a připojení svazků pro nastavení integrace Application Insights.

Požadavky

Nastavení prostředí

Pomocí následujících kroků definujte proměnné prostředí a ujistěte se, že je vaše rozšíření Container Apps aktuální:

  1. Definujte proměnné prostředí pomocí následujících příkazů:

    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"
    
  2. Přihlaste se k Azure CLI pomocí následujících příkazů:

    az login
    az account set --subscription $SUBSCRIPTION_ID
    
  3. Pomocí následujících příkazů se ujistěte, že máte nejnovější verzi rozšíření Azure CLI pro Container Apps a Application Insights:

    az extension add --name containerapp --upgrade
    az extension add --name application-insights --upgrade
    
  4. Pomocí následujících příkazů načtěte připojovací řetězec instance Application Insights:

    CONNECTION_STRING=$(az monitor app-insights component show \
        --ids $APP_INSIGHTS_RESOURCE_ID \
        --query connectionString)
    

Příprava image kontejneru

Pokud chcete vytvořit image nastavení pro agenta Java Application Insights, použijte následující kroky ve stejném adresáři:

  1. Vytvořte soubor Dockerfile s následujícím obsahem:

    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"]
    
  2. Vytvořte soubor setup.sh s následujícím obsahem:

    #!/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
    
  3. Vytvořte image pomocí následujícího příkazu:

    docker build . --tag "$CONTAINER_REGISTRY_NAME.azurecr.io/samples/java-agent-setup:1.0.0"
    
  4. Nasdílení image do služby Azure Container Registry nebo jiného registru imagí kontejneru pomocí následujících příkazů:

    az acr login --name $CONTAINER_REGISTRY_NAME
    docker push "$CONTAINER_REGISTRY_NAME.azurecr.io/samples/java-agent-setup:1.0.0"
    

Návod

Kód, který je pro tento krok relevantní, najdete v úložišti GitHubu azure-container-apps-java-samples .

Vytvoření prostředí Container Apps a aplikace typu kontejner jako cílová aplikace v Javě

Pokud chcete vytvořit prostředí Container Apps a aplikaci typu kontejner jako cílovou aplikaci v Javě, postupujte následovně:

  1. Pomocí následujícího příkazu vytvořte prostředí Container Apps:

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location "$LOCATION" \
        --query "properties.provisioningState"
    

    Po úspěšném vytvoření prostředí Container Apps vrátí Succeeded příkazový řádek zprávu.

  2. Pomocí následujícího příkazu vytvořte aplikaci kontejneru pro další konfiguraci:

    az containerapp create \
        --name $CONTAINER_APP_NAME \
        --environment $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --query "properties.provisioningState"
    

    Po vytvoření aplikace kontejneru vrátí Succeeded příkazový řádek zprávu.

Konfigurace inicializačního kontejneru, tajných kódů, proměnných prostředí a svazků pro nastavení integrace Application Insights

Pomocí následujících kroků nakonfigurujte inicializační kontejner s tajnými kódy, proměnnými prostředí a svazky. Tato konfigurace umožňuje používat uložené informace s vaší instancí Application Insights.

  1. Pomocí následujícího příkazu napište aktuální konfiguraci spuštěné aplikace kontejneru do souboru app.yaml v aktuálním adresáři:

    az containerapp show \
        --resource-group $RESOURCE_GROUP \
        --name $CONTAINER_APP_NAME \
        --output yaml \
    > app.yaml
    
  2. K úpravě souboru app.yaml použijte následující postup. Úpravy přidávají do souboru tajné kódy, dočasné úložiště a inicializační kontejner a aktualizují kontejner aplikace.

    1. Přidejte tajný kód pro připojovací řetězec Application Insights pomocí následujícího příkladu. Nahraďte $CONNECTION_STRING připojovací řetězec Application Insights.

      properties:
        configuration:
           secrets:
           - name: app-insights-connection-string
             value: $CONNECTION_STRING
      
    2. Přidejte dočasný svazek úložiště pro soubory agenta Java pomocí následujícího příkladu:

      properties:
        template:
          volumes:
          - name: java-agent-volume
            storageType: EmptyDir
      
    3. Přidejte inicializační kontejner s připojeními svazků a proměnnými prostředí pomocí následujícího příkladu. Nahraďte <CONTAINER_REGISTRY_NAME> názvem služby 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
      
    4. Pomocí následujícího příkladu aktualizujte kontejner aplikace pomocí připojení svazků a proměnných prostředí:

      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
      
  3. Aktualizujte aplikaci kontejneru pomocí upraveného souboru app.yaml pomocí následujícího příkazu:

    az containerapp update \
        --resource-group $RESOURCE_GROUP \ 
        --name $CONTAINER_APP_NAME \
        --yaml app.yaml \
        --query "properties.provisioningState"
    

    Po aktualizaci aplikace kontejneru příkaz vrátí Succeeded zprávu. Teď můžete ověřit, že je vaše aplikace kontejneru připojená, zobrazením instance Application Insights na webu Azure Portal.

Vyčištění prostředků

Prostředky, které jste vytvořili v tomto kurzu, přispívají k faktuře za Azure. Pokud je nepotřebujete dlouhodobě, pomocí následujícího příkazu odeberte skupinu prostředků a její prostředky:

az group delete --resource-group $RESOURCE_GROUP

Kromě Aplikace Azure lication Insights jsou v komunitě k dispozici další oblíbená řešení APM. Pokud chcete integrovat vaši aplikaci Azure Container App s jinými poskytovateli APM, stačí nahradit soubor JAR agenta Java a související konfigurační soubory.