25

I'm planning to supervise services by periodically checking if they are up and running, Jenkins is our central orchestration tool and must be running with near zero downtime.

How can I check health status of a Jenkins server - By health status I mean service is up and web app application is operational ?

Does Jenkins provide a native health check URL ? Or does I need to make additional scripts? if so what factors should be included in beside checking jenkins.service and curl web app home page.

storm
  • 1,759
  • 3
  • 15
  • 34

4 Answers4

16

Check the login page, e.g. http://localhost:8080/login

Most pages are password protected but not this one (or you couldn't log in).

9

The complication reside in the definition of the health status (and its usefulness).

You mentioned the definition being service is up and web app application is operational and for that indeed checking the homepage should suffice.

However that doesn't mean the service is properly configured for and correctly performing all the jobs that it's supposed to be doing. Without a consistent, universally acceptable definition of a health status there is no point of providing such information as a single, one-stop location to check.

But Jenkins offers via its Remote access API various checking points that users can combine to derive their interpretation of the overall service health status. For example maybe checking the status of all the configured jobs or at least that of the critical ones would be more useful, which could be done using the .../job_id/lastSuccessfulBuild/api/ or .../job_id/api/ checkpoints.

The JenkinsAPI could also be of interest (better docs at least), found via Where can I find jenkins restful api reference?

Dan Cornilescu
  • 6,730
  • 2
  • 19
  • 44
0

Check the logo of jenkins is accessible from outside.

For ex. http://localhost:8080/static/<anystring>/images/svgs/logo.svg

This will less load to the server than login page.

arulraj.net
  • 101
  • 1
  • The logo check as a health check, when starting a github service container in a github workflow succeeded before the jenkins service was ready to login when started from the docker image. Hence subsequent calls to the API failed with Error communicating with server. When I use the login check it works. – Max Oct 05 '23 at 20:47
0

/api/json will return 2.7 kB. This is smaller than the login page, the logo.svg, and favicon.svg. If Jenkins is responding but not ready for operation, then it returns HTML.

Nathan
  • 101
  • 2