Bird
Raised Fist0
Spring Bootframework~5 mins

Prometheus and Grafana integration concept in Spring Boot

Choose your learning style10 modes available
Introduction

Prometheus collects data about your app's health and performance. Grafana shows this data in easy-to-understand charts and graphs.

You want to watch how your Spring Boot app is doing in real time.
You need to find out why your app is slow or crashing.
You want to see how many users are using your app at different times.
You want to get alerts if something goes wrong with your app.
You want to share app performance reports with your team.
Syntax
Spring Boot
1. Add Prometheus dependency to Spring Boot project.
2. Configure Spring Boot to expose metrics at /actuator/prometheus.
3. Set up Prometheus server to scrape metrics from Spring Boot app.
4. Install Grafana and add Prometheus as a data source.
5. Create dashboards in Grafana to visualize metrics.

Spring Boot uses Micrometer to expose metrics in Prometheus format.

Prometheus scrapes metrics by regularly requesting the /actuator/prometheus endpoint.

Examples
Add these dependencies in your build file to enable Prometheus metrics in Spring Boot.
Spring Boot
dependencies {
  implementation 'io.micrometer:micrometer-registry-prometheus'
  implementation 'org.springframework.boot:spring-boot-starter-actuator'
}
Configure Spring Boot to expose the Prometheus endpoint.
Spring Boot
management.endpoints.web.exposure.include=health,info,prometheus
management.endpoint.prometheus.enabled=true
Example Prometheus config to scrape metrics from your Spring Boot app running on localhost port 8080.
Spring Boot
scrape_configs:
  - job_name: 'springboot-app'
    static_configs:
      - targets: ['localhost:8080']
Steps to connect Grafana to Prometheus and create visual dashboards.
Spring Boot
In Grafana UI:
- Add Prometheus as data source with URL http://localhost:9090
- Create dashboard and add panels to show metrics like JVM memory, HTTP requests
Sample Program

This setup lets Prometheus collect metrics from your Spring Boot app and Grafana display them.

Spring Boot
1. Add to build.gradle:
implementation 'io.micrometer:micrometer-registry-prometheus'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

2. In application.properties:
management.endpoints.web.exposure.include=health,info,prometheus
management.endpoint.prometheus.enabled=true

3. Run Spring Boot app on port 8080.

4. Prometheus config (prometheus.yml):
scrape_configs:
  - job_name: 'springboot-app'
    static_configs:
      - targets: ['localhost:8080']

5. Start Prometheus server.

6. Start Grafana, add Prometheus as data source (http://localhost:9090).

7. Create Grafana dashboard to visualize metrics.
OutputSuccess
Important Notes

Make sure your Spring Boot app allows access to the /actuator/prometheus endpoint.

Prometheus and Grafana usually run on ports 9090 and 3000 respectively by default.

Use Grafana's pre-built dashboards for Spring Boot and Micrometer to save time.

Summary

Prometheus collects app metrics by scraping an endpoint.

Grafana connects to Prometheus to show these metrics visually.

Spring Boot apps expose metrics easily using Micrometer and Actuator.

Practice

(1/5)
1. What is the primary role of Prometheus in a Spring Boot application monitoring setup?
easy
A. To collect metrics by scraping the application's exposed endpoint
B. To visualize metrics using dashboards
C. To expose application metrics automatically
D. To send alerts directly to users

Solution

  1. Step 1: Understand Prometheus function

    Prometheus collects metrics by scraping HTTP endpoints exposed by applications.
  2. Step 2: Differentiate roles of tools

    Grafana is used for visualization, not collection. Spring Boot exposes metrics but does not collect them.
  3. Final Answer:

    To collect metrics by scraping the application's exposed endpoint -> Option A
  4. Quick Check:

    Prometheus collects metrics = A [OK]
Hint: Remember: Prometheus scrapes, Grafana shows [OK]
Common Mistakes:
  • Confusing Grafana as the collector
  • Thinking Spring Boot collects metrics
  • Assuming Prometheus sends alerts directly
2. Which dependency must be added to a Spring Boot project to expose metrics for Prometheus scraping?
easy
A. spring-boot-starter-web
B. spring-boot-starter-data-jpa
C. micrometer-registry-prometheus
D. spring-boot-starter-security

Solution

  1. Step 1: Identify metrics registry dependency

    Micrometer provides metrics support; the Prometheus registry enables exposing metrics in Prometheus format.
  2. Step 2: Exclude unrelated dependencies

    Web starter is for REST APIs, JPA for database, Security for auth; none expose Prometheus metrics.
  3. Final Answer:

    micrometer-registry-prometheus -> Option C
  4. Quick Check:

    Prometheus metrics need micrometer-registry-prometheus [OK]
Hint: Add micrometer-registry-prometheus for Prometheus metrics [OK]
Common Mistakes:
  • Adding only spring-boot-starter-web without metrics registry
  • Confusing JPA or Security starters as metrics providers
  • Forgetting to include Prometheus registry dependency
3. Given this Spring Boot application.properties snippet:
management.endpoints.web.exposure.include=health,prometheus
management.endpoint.prometheus.enabled=true

What will be the URL path to scrape metrics for Prometheus?
medium
A. /metrics
B. /actuator/metrics
C. /prometheus/metrics
D. /actuator/prometheus

Solution

  1. Step 1: Understand actuator endpoint exposure

    Spring Boot exposes actuator endpoints under /actuator by default.
  2. Step 2: Identify Prometheus endpoint path

    Prometheus metrics endpoint is /actuator/prometheus when enabled and exposed.
  3. Final Answer:

    /actuator/prometheus -> Option D
  4. Quick Check:

    Prometheus metrics at /actuator/prometheus [OK]
Hint: Actuator endpoints default under /actuator [OK]
Common Mistakes:
  • Using /metrics instead of /actuator/prometheus
  • Assuming /prometheus/metrics is default
  • Forgetting to enable prometheus endpoint
4. You configured Prometheus to scrape your Spring Boot app, but metrics are not appearing in Grafana. Which is the most likely cause?
medium
A. Prometheus server is down but Grafana is running
B. Prometheus is not scraping the correct endpoint URL
C. Spring Boot app does not have a database connection
D. Grafana does not support Prometheus data sources

Solution

  1. Step 1: Check Prometheus scraping configuration

    If Prometheus scrapes wrong URL, no metrics collected, so Grafana shows nothing.
  2. Step 2: Exclude other causes

    Grafana supports Prometheus; database unrelated; if Prometheus down, Grafana shows errors.
  3. Final Answer:

    Prometheus is not scraping the correct endpoint URL -> Option B
  4. Quick Check:

    Wrong scrape URL blocks metrics flow [OK]
Hint: Verify Prometheus scrape URL matches app endpoint [OK]
Common Mistakes:
  • Blaming Grafana for lack of support
  • Assuming database affects metrics exposure
  • Ignoring Prometheus scrape configuration
5. You want to create a Grafana dashboard showing the average response time of your Spring Boot app over the last 5 minutes. Which Prometheus query should you use?
hard
A. rate(http_server_requests_seconds_sum[5m]) / rate(http_server_requests_seconds_count[5m])
B. sum(http_server_requests_seconds_sum) / sum(http_server_requests_seconds_count)
C. avg_over_time(http_server_requests_seconds_sum[5m])
D. count_over_time(http_server_requests_seconds_count[5m])

Solution

  1. Step 1: Understand metrics for response time

    http_server_requests_seconds_sum is total time; count is number of requests.
  2. Step 2: Calculate average over 5 minutes

    Use rate() to get per-second increase, then divide sum by count for average.
  3. Final Answer:

    rate(http_server_requests_seconds_sum[5m]) / rate(http_server_requests_seconds_count[5m]) -> Option A
  4. Quick Check:

    Average = sum rate / count rate [OK]
Hint: Divide sum rate by count rate for average response time [OK]
Common Mistakes:
  • Using sum without rate causes wrong aggregation
  • Using avg_over_time on sum metric alone
  • Counting requests instead of averaging time
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard