{"id":227874,"date":"2021-01-21T10:13:17","date_gmt":"2021-01-21T18:13:17","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/java\/?p=227874"},"modified":"2021-01-22T06:39:02","modified_gmt":"2021-01-22T14:39:02","slug":"monitor-applications-and-dependencies-in-azure-spring-cloud","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/java\/monitor-applications-and-dependencies-in-azure-spring-cloud\/","title":{"rendered":"Effortlessly monitor applications and dependencies in Azure Spring Cloud!"},"content":{"rendered":"<p>We are excited to announce that Application Performance Monitoring (APM) is now fully integrated into Azure Spring Cloud, powered by Application Insights.<\/p>\n<p><a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/spring-cloud\/\" target=\"_blank\" rel=\"noopener noreferrer\">Azure Spring Cloud<\/a> is jointly built, operated, and supported by Microsoft and VMware. It is a fully managed service for Spring Boot applications that lets you focus on building the applications that run your business without the hassle of managing infrastructure.<\/p>\n<p>APM in Azure Spring Cloud offers in-depth performance monitoring for your Spring applications without requiring ANY code changes, recompiling, retesting, or redeployment. APM on Azure Spring Cloud is so seamless that you get the insights on your applications just out of the box. You do not have to do ANYTHING &#8211; just deploy your applications and the monitoring data starts flowing. The benefits you get with application monitoring are:<\/p>\n<ul>\n<li>Visibility into all your applications with <strong>distributed tracing<\/strong>, including paths of operation requests from origins to destinations and insights into applications that are operating correctly and those with bottlenecks.<\/li>\n<li>Logs, exceptions, and metrics in the context of call paths offer <strong>meaningful insights and actionable information<\/strong> to speed root cause analysis.<\/li>\n<li>Insights into application <strong>dependencies<\/strong> \u2013 SQL Database, MySQL, PostgreSQL, MariaDB, JDBC, MongoDB, Cassandra, Redis, JMS, Kafka, Netty \/ WebFlux, etc.<\/li>\n<li><strong>Performance data <\/strong>for every call into operations exposed by applications, including data-like request counts, response times, CPU usage, and memory.<\/li>\n<li><strong>Custom metrics<\/strong> conveniently auto-collected through Micrometer, allowing you to publish custom performance indicators or business-specific metrics and visualize deeper application and business insights.<\/li>\n<li>Ability to <strong>browse, query, and alert on application metrics and logs<\/strong>.<\/li>\n<\/ul>\n<p>While both Azure Spring Cloud and Application Insights Java agent are generally available, their integration for out of the box monitoring is in preview.<\/p>\n<blockquote><p><em>&#8220;Improvements in Azure Spring Cloud are always welcome, especially when they seamlessly integrate products from across the Azure ecosystem. A great example is the introduction of the 3.0 version of the Application Insights Java agent &#8211; now we can make better horizontal autoscaling decisions by capturing requests sent to our Netty powered Spring Cloud Gateway and SQL statements issued by our applications are captured and show very nicely in the application map&#8221;. &#8211;Jonathan Jones, Lead Solutions Architect, <\/em><a href=\"https:\/\/www.swissre.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><em>Swiss Re Management Ltd<\/em><\/a><em>.<\/em><em> (Switzerland)<\/em><\/p><\/blockquote>\n<hr \/>\n<blockquote><p><em>\u201cRaley\u2019s is very excited by the continued enhancements to Azure Spring Cloud. With the addition of a Java in-process agent for Application Insights, our developers have fewer integration points to worry about! This enhancement promises to increase our productivity by reducing the development effort and decreasing the effort required to support and troubleshoot issues!\u201d \u2013 Armando Guzman, Principal Software Engineer, Unified Commerce, <\/em><a href=\"https:\/\/www.raleys.com\/about\/raleys-corporate-fact-sheet\/\" target=\"_blank\" rel=\"noopener noreferrer\"><em>Raley\u2019s<\/em><\/a><em> (United States) <\/em><\/p><\/blockquote>\n<p>You can enable the Java in-process monitoring agent when you create or update Azure Spring Cloud:<\/p>\n<pre class=\"prettyprint\">az spring-cloud create --name ${SPRING_CLOUD_SERVICE} \\\r\n--sku standard --enable-java-agent \\\r\n--resource-group ${RESOURCE_GROUP} \\\r\n--location ${REGION}<\/pre>\n<p>Then, you can open Application Insights created by Azure Spring Cloud and start monitoring applications and their dependencies \u2013 we will illustrate this using a <a href=\"https:\/\/github.com\/Azure-Samples\/spring-petclinic-microservices\" target=\"_blank\" rel=\"noopener noreferrer\">distributed version of Spring Petclinic<\/a>. Navigate to the <strong><em>Application Map<\/em><\/strong> blade where you can see an incredible, holistic view of microservices that shows applications that are operating correctly (green) and those with bottlenecks (red) [Figure 1]. Developers can easily identify issues in their applications and quickly troubleshoot and fix them.<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 1 &#8211; Microservice transactions in Application Insights<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/distributed-tracking-new-ai-agent.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227887\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/distributed-tracking-new-ai-agent.jpg\" alt=\"Image distributed tracking new ai agent\" width=\"1366\" height=\"1119\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/distributed-tracking-new-ai-agent.jpg 1366w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/distributed-tracking-new-ai-agent-300x246.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/distributed-tracking-new-ai-agent-1024x839.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/distributed-tracking-new-ai-agent-768x629.jpg 768w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p>Navigate to the <strong><em>Performance<\/em><\/strong> blade where you can see response times and request counts for operations exposed by your applications [Figure 2].<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 2 \u2013 Performance of operations exposed by applications<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-performance.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227900\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-performance.jpg\" alt=\"Image petclinic microservices performance\" width=\"1366\" height=\"1119\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-performance.jpg 1366w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-performance-300x246.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-performance-1024x839.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-performance-768x629.jpg 768w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p>Navigate to the <em><strong>Dependencies<\/strong><\/em> tab in the <em><strong>Performance<\/strong><\/em> blade where you can see all your dependencies and their response times and request counts [Figure 3].<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 3 \u2013 Performance of application dependencies<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-insights-on-dependencies.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227897\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-insights-on-dependencies.jpg\" alt=\"Image petclinic microservices insights on dependencies\" width=\"1696\" height=\"1129\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-insights-on-dependencies.jpg 1696w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-insights-on-dependencies-300x200.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-insights-on-dependencies-1024x682.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-insights-on-dependencies-768x511.jpg 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-insights-on-dependencies-1536x1022.jpg 1536w\" sizes=\"(max-width: 1696px) 100vw, 1696px\" \/><\/a><\/p>\n<p>You can click a SQL call or a dependency to see the full end-to-end transaction in context [Figure 4].<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 4 \u2013 End-to-end application to SQL call transaction details<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-end-to-end-transaction-details.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227895\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-end-to-end-transaction-details.jpg\" alt=\"Image petclinic microservices end to end transaction details\" width=\"1696\" height=\"1064\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-end-to-end-transaction-details.jpg 1696w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-end-to-end-transaction-details-300x188.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-end-to-end-transaction-details-1024x642.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-end-to-end-transaction-details-768x482.jpg 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-end-to-end-transaction-details-1536x964.jpg 1536w\" sizes=\"(max-width: 1696px) 100vw, 1696px\" \/><\/a><\/p>\n<p>Navigate to the <strong><em>Exceptions<\/em><\/strong> tab in the <em><strong>Failures<\/strong><\/em> blade to see a collection of exceptions thrown by applications [Figure 5].<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 5 \u2013 Exceptions thrown by applications<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-failures-exceptions.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227896\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-failures-exceptions.jpg\" alt=\"Image petclinic microservices failures exceptions\" width=\"1366\" height=\"1119\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-failures-exceptions.jpg 1366w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-failures-exceptions-300x246.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-failures-exceptions-1024x839.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-failures-exceptions-768x629.jpg 768w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p>Simply select an exception and drill in for meaningful insights and actionable stack trace [Figure 6].<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 6 \u2013 End-to-end transaction details for an application exception<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/end-to-end-transaction-details.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227892\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/end-to-end-transaction-details.jpg\" alt=\"Image end to end transaction details\" width=\"1366\" height=\"1119\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/end-to-end-transaction-details.jpg 1366w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/end-to-end-transaction-details-300x246.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/end-to-end-transaction-details-1024x839.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/end-to-end-transaction-details-768x629.jpg 768w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p>Navigate to the <strong><em>Metrics<\/em><\/strong> blade to see all the metrics contributed by Spring Boot applications, Spring Cloud modules, and their dependencies. The chart below showcases <em>gateway-requests<\/em> contributed by Spring Cloud Gateway and <em>hikaricp_connections<\/em>\u00a0contributed by JDBC [Figure 7]. Similarly, you can aggregate Spring Cloud Resilience4J metrics and visualize them.<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 7 \u2013 Metrics contributed by Spring modules<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-metrics.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227899\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-metrics.jpg\" alt=\"Image petclinic microservices metrics\" width=\"1366\" height=\"1119\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-metrics.jpg 1366w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-metrics-300x246.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-metrics-1024x839.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-metrics-768x629.jpg 768w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a><\/p>\n<p>Spring Boot applications register a lot of core metrics \u2013 JVM, CPU, Tomcat, Logback, etc. You can use Micrometer to contribute your own custom metrics, say using the <em><strong>@Timed<\/strong><\/em> Micrometer annotation at a class level. You can then visualize those custom metrics in Application Insights. As an example, see how pet owners, pets, and their clinical visits are tracked by custom metrics below \u2013you can also see how the pattern changes at 9 PM because applications are driving higher utilization when autoscaling kicked in [Figure 8].<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 8 \u2013 Custom metrics published by user applications<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-custom-metrics.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227894\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-custom-metrics.jpg\" alt=\"Image petclinic microservices custom metrics\" width=\"1696\" height=\"1064\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-custom-metrics.jpg 1696w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-custom-metrics-300x188.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-custom-metrics-1024x642.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-custom-metrics-768x482.jpg 768w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-custom-metrics-1536x964.jpg 1536w\" sizes=\"(max-width: 1696px) 100vw, 1696px\" \/><\/a><\/p>\n<p>You can use the Availability Test feature in Application Insights to monitor the availability of applications in Azure Spring Cloud. This is a recurring test to monitor the availability and responsiveness of applications at regular intervals from anywhere across the globe. It can proactively alert you if your applications are not responding or if they respond too slowly. The chart below shows availability tests from across North America \u2013 West US, South Central, Central US, and East US [Figure 9].<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 9 \u2013 Availability of application endpoints across time<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-availability.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227893\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-availability.jpg\" alt=\"Image petclinic microservices availability\" width=\"1243\" height=\"1064\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-availability.jpg 1243w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-availability-300x257.jpg 300w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-availability-1024x877.jpg 1024w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-availability-768x657.jpg 768w\" sizes=\"(max-width: 1243px) 100vw, 1243px\" \/><\/a><\/p>\n<p>Navigate to the <em><strong>Live Metrics<\/strong><\/em> blade where you can see live metrics practically in real-time, within only one second [Figure 10].<\/p>\n<p><span style=\"font-size: 10pt;\">Figure 10 \u2013 Real-time metrics<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-live-metrics.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-227898\" src=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-live-metrics.jpg\" alt=\"Image petclinic microservices live metrics\" width=\"843\" height=\"1016\" srcset=\"https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-live-metrics.jpg 843w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-live-metrics-249x300.jpg 249w, https:\/\/devblogs.microsoft.com\/java\/wp-content\/uploads\/sites\/51\/2021\/01\/petclinic-microservices-live-metrics-768x926.jpg 768w\" sizes=\"(max-width: 843px) 100vw, 843px\" \/><\/a><\/p>\n<p>Application Insights Java agent is based on <a href=\"https:\/\/opentelemetry.io\/docs\/java\/automatic_instrumentation\/\" target=\"_blank\" rel=\"noopener noreferrer\">OpenTelemetry<\/a> auto instrumentation effort, where Microsoft collaborates with other brightest minds of the APM space.<\/p>\n<h2>Build your solutions and monitor them today!<\/h2>\n<p>Azure Spring Cloud abstracts away the complexity of infrastructure management and Spring Cloud middleware management, so you can focus on building your business logic and let Azure take care of dynamic scaling, patches, security, compliance, and high availability. With a few steps, you can provision Azure Spring Cloud, create applications, deploy, and scale Spring Boot applications, and start monitoring in minutes. We will continue to bring more developer-friendly and enterprise-ready features to Azure Spring Cloud.<\/p>\n<p>We would love to hear how you are building impactful solutions using Azure Spring Cloud. Get started today \u2013 deploy Spring applications to Azure Spring Cloud using <a href=\"https:\/\/aka.ms\/get-started-with-azure-spring-cloud\" target=\"_blank\" rel=\"noopener noreferrer\">quickstart<\/a>!<\/p>\n<p><strong>Resources<\/strong><\/p>\n<ul>\n<li>Learn using an <a href=\"https:\/\/docs.microsoft.com\/en-us\/learn\/modules\/azure-spring-cloud-workshop\/\" target=\"_blank\" rel=\"noopener noreferrer\">MS Learn module<\/a> or <a href=\"https:\/\/github.com\/microsoft\/azure-spring-cloud-training\" target=\"_blank\" rel=\"noopener noreferrer\">self-paced workshop<\/a> on GitHub<\/li>\n<li>Learn <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/spring-cloud\/\" target=\"_blank\" rel=\"noopener noreferrer\">more<\/a> about implementing solutions on Azure Spring Cloud<\/li>\n<li>Learn <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/spring-cloud\/spring-cloud-howto-application-insights\" target=\"_blank\" rel=\"noopener noreferrer\">more<\/a> about Application Insights <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-monitor\/app\/java-in-process-agent\" target=\"_blank\" rel=\"noopener noreferrer\">Java in-process agent<\/a> in Azure Spring Cloud, including Spring Cloud <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/spring-cloud\/spring-cloud-howto-circuit-breaker-metrics\" target=\"_blank\" rel=\"noopener noreferrer\">Resilience4J Circuit Breaker metrics<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure-Samples\/spring-petclinic-microservices\" target=\"_blank\" rel=\"noopener noreferrer\">Deploy<\/a> a distributed version of Spring Petclinic built with Spring Cloud<\/li>\n<li>Migrate your <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/developer\/java\/migration\/migrate-spring-boot-to-azure-spring-cloud\" target=\"_blank\" rel=\"noopener noreferrer\">Spring Boot<\/a>, <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/developer\/java\/migration\/migrate-spring-cloud-to-azure-spring-cloud\" target=\"_blank\" rel=\"noopener noreferrer\">Spring Cloud<\/a>, and <a href=\"https:\/\/aka.ms\/migrate-tomcat-to-azure-spring-cloud-service\" target=\"_blank\" rel=\"noopener noreferrer\">Tomcat<\/a> applications to Azure Spring Cloud<\/li>\n<li>Wire Spring applications to <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/developer\/java\/spring-framework\/\" target=\"_blank\" rel=\"noopener noreferrer\">interact with Azure services<\/a><\/li>\n<li>For feedback and questions, please <a href=\"mailto:AzureSpringCloud-Talk@service.microsoft.com\">e-mail.<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>We are excited to announce that Application Performance Monitoring (APM) is now fully integrated into Azure Spring Cloud, powered by Application Insights.<\/p>\n","protected":false},"author":12323,"featured_media":227894,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[16,758,760,759,248,539,757,316,761,538],"class_list":["post-227874","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-announcement","tag-apm","tag-application-insights","tag-azure-spring-cloud","tag-java","tag-microservices","tag-monitoring","tag-spring","tag-spring-boot","tag-spring-cloud"],"acf":[],"blog_post_summary":"<p>We are excited to announce that Application Performance Monitoring (APM) is now fully integrated into Azure Spring Cloud, powered by Application Insights.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/posts\/227874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/users\/12323"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/comments?post=227874"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/posts\/227874\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/media\/227894"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/media?parent=227874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/categories?post=227874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/java\/wp-json\/wp\/v2\/tags?post=227874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}