This post walks you through the steps of creating a Java Application Health Check Example with Prometheus, Grafana, MySQL and Docker Compose.

What you'll need

  • Docker CE 18+

Stack

  • Java
  • Prometheus
  • Grafana
  • MySQL
  • Docker Compose

Project structure

Project dependencies


Define Health Check

Extends Strengthened's HealthCheck and implements MySQL Database connection status checking method


Export Health Check for Prometheus

Start a simple HTTP Sever by using Jetty, listening connection on port 8080 and expose health check through /metrics end point.


Glue things together

Create a HealthChecksCollector with metric name as hello_koding_health_check (to be use as a key to query on Prometheus and Grafana), add above health check definition to the collector and trigger export function.


Prepare Dockerfile to build the Java application


Prepare docker-compose.yaml to provision MySQL, Prometheus and Grafana


Start your application and infrastructure via Docker Compose. Make sure your local Docker is running

docker-compose up  

Access to localhost:8080/metrics, you should see something like this in the console

# HELP hello_koding_health_check Health check status results
# TYPE hello_koding_health_check gauge
hello_koding_health_check{system="database",} 1.0

Access to Prometheus console through localhost:9090

And finally access to Grafana through localhost:3000

Source code

[email protected]:hellokoding/java-app-healthcheck-prometheus.git

https://github.com/hellokoding/java-app-healthcheck-prometheus