Search code examples
javaspring-bootspring-kafkahealth-monitoringnon-web

Monitoring Health of a Non web spring boot application


I have a Kafka consumer built using spring boot and spring-kafka. It is not a Web Application (only spring-boot-starter dependency) and hence there is no port that is exposed by the application. And I donot want to expose a port just for the sake of health checks.

This kafka consumer application is being packaged as a docker image. The CI/CD pipeline has a stage that verifies if the container is up and the service is started. One option I thought was to check for an active java process that uses the service jar file.

ps aux | grep java ...

But the catch here is that a Kafka consumer can keep running for a while if the Kafka broker is not up and eventually stop with errors. So, using the process based approach is not reliable always.

Are there any other alternative options to find out if the application is up and running fine, given that the application is a standalone non-web app?


Solution

  • you need to schedule a job in the spring boot application that checks whatever needs to be checked

    and write the health check result to a file in the container

    you can have a cronjob on container level to check output of the spring application in the file and make a final decision about the health status of the container