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.

4 Answers 4

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?

4
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).

3
  • 1
    Excellent, didn't think of that. My monitoring service was getting 403 Forbidden errors when trying to hit the primary URL but this one worked fine. (A browser was redirected the primary URL OK; not sure why that followed a different path.) Feb 24, 2023 at 8:11
  • IMHO http://localhost:8080/static/<anystring>/images/svgs/logo.svg this URL will be less load to the server. Mar 28, 2023 at 11:18
  • @arulraj.net feel free to add your own answer Mar 28, 2023 at 13:03
1

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.

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 5, 2023 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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.