Kong: active health checks probe targets on a schedule

Passive checks only observe real traffic. Active checks call a health endpoint on an interval, which is the only mechanism that can return a recovered target to the pool.

Code
curl -X PATCH http://localhost:8001/upstreams/billing-upstream \
  --data healthchecks.active.type=http \
  --data healthchecks.active.http_path=/actuator/health \
  --data healthchecks.active.healthy.interval=5 \
  --data healthchecks.active.healthy.successes=2 \
  --data healthchecks.active.unhealthy.interval=5 \
  --data healthchecks.active.unhealthy.http_failures=3

curl -s localhost:8001/upstreams/billing-upstream/health | jq '.data[]'
Output
{"target":"10.0.1.11:8080","health":"HEALTHY"}
{"target":"10.0.1.12:8080","health":"UNHEALTHY"}

# interval defaults to 0, which DISABLES that half of the check. Both the
# healthy and unhealthy blocks need a non-zero interval.
#
# Health state is per Kong node and is not shared across the cluster, so two
# nodes can disagree about the same target.
Advertisement

Run this yourself in the Online Java Compiler, spin up a live REST API in the API Sandbox, or practise with Java interview questions.

Published 2026-08-25