I'm continuing my journey on getting more familiar with HTTP APIs by reading related Request For Comments. This time, I read the Health Check Response Format for HTTP APIs on the suggestion of Stefano Fago. In this post, I'd like to summarize my reading.

Note that it's a draft. Moreover, it has been dormant for nearly two years and, thus, has been automatically expired. However, it's the closest to a specification on health checks and thus deserves some love.

Sample data visualization

Even though it's not a long read, it's a bit "dry". Fortunately, the specification offers a JSON sample. I copy-pasted it in PlantUML, and presto, it shows a visual representation of it:

Let's have a look at the proposed structure element by element.

The root object

At its simplest, the response is a JSON object with a mandatory status property:

Values can be:

One can add additional optional values:

The links objects

The links object consists of object pairs. Values are URIs, while keys can be URIs or common/registered ones: see RFC5988 for common values, e.g., self.

The checks objects

Keys of checks objects consist of two terms separated by a colon, component name, and measurement name. The latter can be either:

Values consist of one of the following keys:

I tried implementing the above with Spring Boot using a custom HealthIndicator. Here's the best I could come up with:

The current structure of the JSON response needs to be (easily?) customizable. You'd need to create your endpoint. I hope the Spring Boot team provides the option to generate a compatible structure.

Conclusion

The Healthcheck IETF draft is a great initiative to standardize health checks across the industry. It would allow monitoring tools to rely on HTTP status and response body without ad-hoc configuration on each service.

Unfortunately, the draft is expired because of a lack of activity. I'd love to see it revived, though.

To go further:


Originally published at A Java Geek on May 28th, 2023