banshee is under active development: collectors will keep changing, and a version you publish will likely need adjustments. For stable use, wait for version 1.0.0.

Web

banshee/web-collection/web/https/

api-health

The health endpoint of a web service: status code, response time, declared health and version, and the health of each dependency.

  • web
  • https
  • api
  • health
  • spring-boot

by banshee1 installation2 versions

v2Latest

Published on October 28, 2026. One naming convention across collections; documentation completed.

Health of a web service

Reads the health endpoint of a web service, behind a token or not: the code of the answer, its time, the health and the version the service declares, and the health of each of its dependencies. Eight watches are offered, each one set on the probe.

Versions

Generic: any service whose health endpoint answers in one of the common forms read below, JSON with checks or components (the form of Spring Boot), or plain text (the form of ASP.NET Core), whatever its software.

How it works

One GET to the address of the health endpoint, the token, when set, in the header Authorization: Bearer; without a token, a public health endpoint is read as it is. The service answers in one of the common forms:

{"status": "UP", "components": {"db": {"status": "UP"}, "redis": {"status": "DOWN"}}}
{"status": "pass", "version": "2.4.1", "checks": {"database": {"status": "pass"}, "cache": {"status": "warn"}}}
Healthy
  • JSON (a Content-Type that holds json): the health is status, the version version, the dependencies the members of checks or, failing that, of components (the form of Spring Boot), each with its own status. A key that is not there reads missing.
  • Plain text (text/plain, the form of ASP.NET Core): the health is the body itself, and the version missing.
  • Any other type (the error page of a proxy): the health and the version read unreadable, and no dependency is returned.
  • The body is read whatever the code: a service that declares itself down often answers 503 with its health.
  • The health is said in one word: ok for ok, up, pass and healthy; down for down, fail, error, out_of_service and unhealthy; any other word as the service writes it, in lower case (degraded, warn).
  • The code and the time are returned whatever the body.
  • A service that refuses the connection, or does not answer in time, is critical: "Service down". Any other failure leaves the probe unreachable.

The token comes from protocol:http:token, a secret variable: it only goes in the header, never in a value returned. The answer is not secret, its body having carried none.

Prerequisites

  • The address reachable from the poller; https:// follows the TLS profile of the probe, and a certificate it refuses stops the collector as misconfigured, with its reason.
  • For a service behind a token, protocol:http:token set on the host or one of its folders. It goes to https:// only: a token toward http:// stops the collector as misconfigured.

Variables

NameLabelSaysDefault
web:urlHealth endpoint addressthe full address, https://api.example/health—

Outputs

NameLabelUnitPer instance
codeStatus code—no
response-timeResponse timemsno
healthDeclared health—no
versionDeclared version—no
dependencyHealth of the dependency—yes, per dependency

Watches

NameTitleKindDefaultsChecked by default
codeAnswer in errorexpected value, on codecritical when the code is anything but 200yes
slowSlow serviceabove a threshold, on response-timewarning above 500 ms, critical above 2000 ms, for 3 runsyes
unhealthyService not healthyexpected value, on healthwarning when the health is anything but okyes
downService downstate to avoid, on healthcritical on downyes
dependency-downDependency downstate to avoid, on dependencycritical on downyes
dependency-unhealthyDependency not healthyexpected value, on dependencywarning when the health is anything but okyes
dependency-missingDependency missingexpected instances, on dependencyno dependency named: it raises nothing until names are set on the probeno
versionUnexpected versionexpected value, on versionno version given: it raises nothing until a version is set on the probeno

Limits

  • A body whose type says JSON but which is not JSON stops the collector as unreachable; a JSON that is not an object (a list, a bare word) stops it as misconfigured.
  • A dependency is read only when it is an object with its own status; the list form of some drafts ("checks": {"db": [{"status": "pass"}]}) reads missing. Nested dependencies (a dependency of a dependency) are not read.
  • An account in Basic is not sent: a health endpoint behind an account is read by web/https/page, with its expected text.