Spring Boot-apps bewaken met Elastic APM Java Agent
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 elastische APM-agent gebruikt om Spring Boot-toepassingen te bewaken die worden uitgevoerd in Azure Spring Apps.
Met de elastische waarneembaarheidsoplossing kunt u uniforme waarneembaarheid bereiken voor:
- Bewaak apps met behulp van de Elastic APM Java Agent en gebruik permanente opslag met Azure Spring Apps.
- Gebruik diagnostische instellingen om Azure Spring Apps-logboeken naar Elastic te verzenden. Zie Logboeken analyseren met Elastic (ELK) met behulp van diagnostische instellingen voor meer informatie.
In de volgende video maakt u kennis met geïntegreerde waarneembaarheid voor Spring Boot-toepassingen met behulp van Elastic.
Vereisten
De Spring Petclinic-toepassing implementeren
In dit artikel wordt het Spring Petclinic-voorbeeld gebruikt om de vereiste stappen te doorlopen. Gebruik de volgende stappen om de voorbeeldtoepassing te implementeren:
Volg de stappen in Spring Boot-apps implementeren met behulp van Azure Spring Apps en MySQL totdat u bij de sectie Spring Boot-toepassingen implementeren bent en omgevingsvariabelen instelt.
Gebruik de Azure Spring Apps-extensie voor Azure CLI met de volgende opdracht om een toepassing te maken die moet worden uitgevoerd in Azure Spring Apps:
az spring app create \ --resource-group <your-resource-group-name> \ --service <your-Azure-Spring-Apps-instance-name> \ --name <your-app-name> \ --is-public true
Aangepaste permanente opslag inschakelen voor Azure Spring Apps
Gebruik de volgende stappen om aangepaste permanente opslag in te schakelen:
Volg de stappen in Het inschakelen van uw eigen permanente opslag in Azure Spring Apps.
Gebruik de volgende Azure CLI-opdracht om permanente opslag toe te voegen voor uw Azure Spring Apps-apps.
az spring app append-persistent-storage \ --resource-group <your-resource-group-name> \ --service <your-Azure-Spring-Apps-instance-name> \ --name <your-app-name> \ --persistent-storage-type AzureFileVolume \ --share-name <your-Azure-file-share-name> \ --mount-path <unique-mount-path> \ --storage-name <your-mounted-storage-name>
Elastische APM Java-agent activeren
Voordat u doorgaat, hebt u de connectiviteitsgegevens van uw Elastic APM-server handig nodig. Hierbij wordt ervan uitgegaan dat u Elastic hebt geïmplementeerd in Azure. Zie Elastic implementeren en beheren in Microsoft Azure voor meer informatie. Gebruik de volgende stappen om deze informatie op te halen:
Ga in De Azure-portal naar de overzichtspagina van uw elastische implementatie en selecteer vervolgens Elastische cloudimplementatie beheren.
Selecteer onder uw implementatie in de Elastic Cloud-console de sectie APM & Fleet om een elastic APM Server-eindpunt en geheim token op te halen.
Download elastic APM Java Agent van Maven Central.
Upload elastische APM-agent naar de aangepaste permanente opslag die u eerder hebt ingeschakeld. Ga naar Azure Fileshare en selecteer Uploaden om het JAR-bestand van de agent toe te voegen.
Nadat u het Elastic APM-eindpunt en het token voor geheim hebt, gebruikt u de volgende opdracht om elastic APM Java-agent te activeren bij het implementeren van toepassingen. De tijdelijke aanduiding
<agent-location>
verwijst naar de gekoppelde opslaglocatie van de Elastic APM Java Agent.az spring app deploy \ --name <your-app-name> \ --artifact-path <unique-path-to-your-app-jar-on-custom-storage> \ --jvm-options='-javaagent:<elastic-agent-location>' \ --env ELASTIC_APM_SERVICE_NAME=<your-app-name> \ ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package-name>' \ ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>' \ ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
Inrichting automatiseren
U kunt ook een pijplijn voor inrichtingsautomatisering uitvoeren met behulp van Terraform, Bicep of een Arm-sjabloon (Azure Resource Manager). Deze pijplijn kan een volledige hands-off ervaring bieden voor het instrumenteren en bewaken van nieuwe toepassingen die u maakt en implementeert.
Inrichting automatiseren met Terraform
Als u de omgevingsvariabelen in een Terraform-sjabloon wilt configureren, voegt u de volgende code toe aan de sjabloon, waarbij u de <tijdelijke aanduidingen voor ...> vervangt door uw eigen waarden. Zie Een actieve Implementatie van Azure Spring Apps beheren voor meer informatie.
resource "azurerm_spring_cloud_java_deployment" "example" {
...
jvm_options = "-javaagent:<elastic-agent-location>"
...
environment_variables = {
"ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
"ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
"ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
"ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
}
}
Inrichting automatiseren met behulp van een Bicep-bestand
Als u de omgevingsvariabelen in een Bicep-bestand wilt configureren, voegt u de volgende code toe aan het bestand, waarbij u de <tijdelijke aanduidingen voor ...> vervangt door uw eigen waarden. Zie Microsoft.AppPlatform Spring/apps/deployments voor meer informatie.
deploymentSettings: {
environmentVariables: {
ELASTIC_APM_SERVICE_NAME='<your-app-name>',
ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package>',
ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>',
ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
},
jvmOptions: '-javaagent:<elastic-agent-location>',
...
}
Inrichting automatiseren met behulp van een ARM-sjabloon
Als u de omgevingsvariabelen in een ARM-sjabloon wilt configureren, voegt u de volgende code toe aan de sjabloon, waarbij u de <tijdelijke aanduidingen voor ...> vervangt door uw eigen waarden. Zie Microsoft.AppPlatform Spring/apps/deployments voor meer informatie.
"deploymentSettings": {
"environmentVariables": {
"ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
"ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
"ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
"ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
},
"jvmOptions": "-javaagent:<elastic-agent-location>",
...
}
Elastische APM Java-agent upgraden
Zie Upgradeversies voor Elastic Cloud in Azure en belangrijke wijzigingen voor APM om uw upgrade te plannen. Nadat u de APM-server hebt bijgewerkt, uploadt u het JAR-bestand van de Elastic APM Java-agent in de aangepaste permanente opslag. Start vervolgens uw apps opnieuw met de bijgewerkte JVM-opties die verwijzen naar de bijgewerkte JAR van de Elastic APM Java-agent.
Toepassingen en metrische gegevens bewaken met Elastic APM
Gebruik de volgende stappen om toepassingen en metrische gegevens te bewaken:
Ga in Azure Portal naar de overzichtspagina van uw elastische implementatie en selecteer vervolgens de Kibana-koppeling.
Nadat Kibana is geopend, zoekt u APM in de zoekbalk en selecteert u APM.
Kibana APM is de gecureerde toepassing ter ondersteuning van Application Monitoring-werkstromen. Hier kunt u details op hoog niveau bekijken, zoals aanvraag-/reactietijden, doorvoer en de transacties in een service met de meeste invloed op de duur.
U kunt inzoomen op een specifieke transactie om inzicht te verkrijgen in de transactiespecifieke details, zoals gedistribueerde tracering.
Elastische APM Java-agent legt ook de metrische JVM-gegevens vast van de Azure Spring Apps-apps die beschikbaar zijn met Kibana App voor gebruikers voor probleemoplossing.
Met behulp van de ingebouwde AI-engine in de elastische oplossing kunt u ook Anomaliedetectie inschakelen in Azure Spring Apps Services en een geschikte actie kiezen, zoals Teams-meldingen, het maken van een JIRA-probleem, een webhook-API-aanroep en andere.