Configure Wavefront for Spring Boot with a sample application.

In this tutorial, you use Wavefront for Spring Boot that uses Spring Boot 3 with the Spring pet clinic sample application. This tutorial sets dependencies explicitly. In most cases, it makes sense to use the Spring Initializr instead to explore supported combinations.

Prerequisites

  • Spring Boot 3.0.0 or later.
  • Java 17 or later.
  • Maven 3.5+ or Gradle 7.5+ or later.
    See System Requirements in the Spring Boot documentation.
  • Clone the sample petclinic application.
    git clone https://github.com/spring-projects/spring-petclinic.git
    
  • Build the project and start it.
    cd spring-petclinic
    ./mvnw spring-boot:run
    
  • Verify you can access the petclinic app at http://localhost:8080/.

Configure the Petclinic Application

  1. Add the following configurations to the pom.xml file in the sample petclinic application:

    1. Import the Wavefront for Spring Boot Bill of Materials (BOM) to your project. Replace VERSION with the current version.
       <dependencyManagement>
         <dependencies>
           <dependency>
             <groupId>com.wavefront</groupId>
             <artifactId>wavefront-spring-boot-bom</artifactId>
             <version>VERSION</version>
             <type>pom</type>
             <scope>import</scope>
           </dependency>
         </dependencies>
       </dependencyManagement>
      
    2. Add the wavefront-spring-boot-starter and micrometer-registry-wavefront dependencies.
       <dependency>
         <groupId>com.wavefront</groupId>
         <artifactId>wavefront-spring-boot-starter</artifactId>
       </dependency>
       <dependency>
         <groupId>io.micrometer</groupId>
         <artifactId>micrometer-registry-wavefront</artifactId>
         <scope>runtime</scope>
       </dependency>
      
    3. Add the micrometer-tracing-bridge-brave and micrometer-tracing-reporter-wavefront dependencies to send trace data to our service.
       <dependency>
         <groupId>io.micrometer</groupId>
         <artifactId>micrometer-tracing-bridge-brave</artifactId>
       </dependency>
       <dependency>
         <groupId>io.micrometer</groupId>
         <artifactId>micrometer-tracing-reporter-wavefront</artifactId>
         <scope>runtime</scope>
       </dependency>
      
    4. Add the datasource-micrometer-spring-boot dependency to intercept and log JDBC SQL queries. You can intercept most Connection, Statement, and ResultSet methods invocations using the Datasource Micrometer dependency.
       <dependency>
         <groupId>net.ttddyy.observation</groupId>
         <artifactId>datasource-micrometer-spring-boot</artifactId>
         <version>VERSION</version>
         <scope>runtime</scope>
       </dependency>
      
  2. Add the following configurations to the application.properties file so that your:
    • Application is named spring-demo.
    • Service is named spring-petclinic.
    • The probability of traces being sampled is set to 100% for demo purposes. To learn more on trace data sampling, see Trace Sampling.
       management.wavefront.application.name=spring-demo
       management.wavefront.application.service-name=spring-petclinic
       management.tracing.sampling.probability=1.0
      
  3. To send data to your Operations for Applications account, specify the uri and api-token properties as follows:

     management.wavefront.api-token=$API_Token
     management.wavefront.uri=$wavefront_instance
    

Send Data to Our Service

  1. Restart the application.

  2. Navigate to http://localhost:8080 and generate telemetry data from the petclinic user interface. For example:

    1. Add an Owner and a Pet via the User Interface.
    2. Click VETERINARIANS to list vets in the database.
    3. Click ERROR to trigger errors.

Examine Data on the Spring Boot Inventory Dashboard

To examine the data:

  1. Go to your server instance, click Dashboards > All Dashboards and enter Spring Boot Inventory.
  2. Select Contains: Spring Boot Inventory, and click the Spring Boot Inventory result in the table.

You are taken to the Wavefront Spring Boot Inventory dashboard where you can examine the data sent by your application. This dashboard provides real-time visibility into your Spring Boot application landscape. The dashboard has several sections that include the following charts:

  • Status of hosts, applications, and services.
  • Request rate.
  • Inventory details.
  • Hosts. Use the drop-down menus to group the hosts.

If one or more applications are enabled for tracing, click the link in the Tracing section to be directed to the Tracing dashboard.

Spring Boot inventory screenshot

Examine RED Metrics and Traces

When you click the link in the Spring Boot Inventory dashboard, you are taken to the Spring Boot Traces Browser where you can:

  • View the trace data of the spring-petclinic service.
    • Once in the Traces Browser, you see the traces from the application and the trace related to the error you created.
    • If you configured the application to send trace data using OpenTracing, you can see span logs for the errors you triggered. Span logs for the petclinic application
  • View details specific to an application service, such as the Request, Error, and Duration (RED) metrics by clicking service dashboard on the Traces Browser. See Explore the Default Service Dashboard for details.

    Wavefront Service dashboard

Next Steps

  • See the Wavefront for Spring Boot FAQs.
  • You cannot save changes that you make to the preconfigured Spring Boot Inventory and Wavefront for Spring Boot Service Dashboards. If you want to modify a preconfigured dashboard, you must clone and edit the preconfigured dashboard. For details, see Create and Customize Dashboards.
  • Customers can create smart alerts that dynamically filter noise and find true anomalies. For details, see Alerts.