Availability
| Edition | Deployment Type |
|---|
| Community & Enterprise | Self-Managed, Hybrid |
Health checks verify the status of Tyk components (Gateway, Dashboard, Pump) and determine whether they are ready to process traffic or are simply running in an unresponsive or idle state.
Use cases
- Load Balancer Configuration: Route traffic only to healthy instances.
- Kubernetes Probes: Automatically restart unhealthy pods or remove them from service.
- Monitoring and Alerting: Track the status of Tyk components and their dependencies (like Redis, RPC).
Health Check Endpoints
Tyk provides two distinct HTTP endpoints for health checks:
- Liveness Probe (
/hello or /health): Indicates if the Tyk process is running and its web server is responsive. It returns HTTP 200 OK as long as the process is alive, regardless of dependency status like Redis.
- Readiness Probe (
/ready): Gateway Only Indicates if the Gateway is fully initialized and ready to process traffic. It returns a non-200 status code (e.g., 503 Service Unavailable) if critical dependencies are not available. The Gateway is considered “ready” only when it’s dependencies are healthy and the API definitions are loaded.
Available Endpoints
| Component | Liveness Endpoint | Readiness Endpoint | Configuration Key | Introduced In |
|---|
| Gateway | /hello | /ready | health_check_endpoint_name / readiness_check_endpoint_name | Liveness: v2.7.5 Readiness: v5.8.3+, v5.9.0+ |
| Dashboard | /hello | N/A | health_check_endpoint_name | - |
| Pump | /health | N/A | health_check_endpoint_name | Liveness: v2.9.4 |
For more details on configuring these endpoints, refer to the configuration references for Gateway, Dashboard, and Pump.
Status Levels
The following status levels can be returned in the JSON response:
- pass: Indicates that all components required for the component to work 100% are available, and there is no impact on your traffic.
- warn: Indicates that one of the components is having an outage but your component is able to keep processing traffic. The impact is medium (i.e. no quotas are applied, no analytics, no RPC connection to MDCB).
- fail: Indicates that critical dependencies (e.g., Redis AND the Tyk Dashboard) are unavailable, and can indicate other failures. The impact is high (i.e. no configuration changes are available for API/policies/keys, no quotas are applied, and no analytics).
Configuration
By default, the liveness health check runs on /hello but can be configured to any path. For example:
health_check_endpoint_name: "status"
This configures the health check to run on /status instead of /hello.
Similarly, you can customize the readiness endpoint:
readiness_check_endpoint_name: "is-ready"
Refresh Interval
The health check endpoint refreshes every 10 seconds.
For more details on configuring these endpoints, refer to the configuration references for Gateway, Dashboard, and Pump.
Kubernetes Probes Example
- Liveness Probe MUST use
/hello: Ensures Kubernetes restarts a pod only if the Gateway process has crashed or frozen.
- Readiness Probe SHOULD use
/ready: Ensures a Gateway pod receives traffic only when fully connected to dependencies and configurations are loaded.
Here is an example:
gateway:
livenessProbe:
httpGet:
path: /hello
port: 8080 # Adjust to your gateway's listen port
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /ready # Use the stricter /ready endpoint
port: 8080 # Adjust to your gateway's listen port
initialDelaySeconds: 15 # Give more time for API loading
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
Adjust initialDelaySeconds based on the number of APIs your Gateway loads and available pod resources.
Health check examples
The following examples show how the Health check endpoint returns for the Gateway.
Pass Status (Liveness)
The following is returned for a pass status level for the Open Source Gateway:
$ http :8080/hello
HTTP/1.1 200 OK
Content-Length: 156
Content-Type: application/json
Date: Wed, 14 Apr 2021 17:36:09 GMT
{
"description": "Tyk GW",
"details": {
"redis": {
"componentType": "datastore",
"status": "pass",
"time": "2021-04-14T17:36:03Z"
}
},
"status": "pass",
"version": "v3.1.1"
}
Pass Status (Readiness)
$ http :8080/ready
HTTP/1.1 200 OK
Content-Length: 162
Content-Type: application/json
Date: Thu, 05 Feb 2026 20:34:38 GMT
{
"status": "pass",
"version": "5.8.10",
"description": "Tyk GW Ready",
"details": {
"redis": {
"status": "pass",
"componentType": "datastore",
"time": "2026-02-05T20:34:38Z"
},
"rpc": {
"status": "pass",
"componentType": "system",
"time": "2026-02-05T20:34:38Z"
}
}
}
Redis outage
$ http :8080/hello
HTTP/1.1 200 OK
Content-Length: 303
Content-Type: application/json
Date: Wed, 14 Apr 2021 14:58:06 GMT
{
"description": "Tyk GW",
"details": {
"dashboard": {
"componentType": "system",
"status": "pass",
"time": "2021-04-14T14:58:03Z"
},
"redis": {
"componentType": "datastore",
"output": "storage: Redis is either down or was not configured",
"status": "fail",
"time": "2021-04-14T14:58:03Z"
}
},
"status": "warn",
"version": "v3.1.2"
}
Dashboard outage
$ http :8080/hello
HTTP/1.1 200 OK
Content-Length: 292
Content-Type: application/json
Date: Wed, 14 Apr 2021 15:52:47 GMT
{
"description": "Tyk GW",
"details": {
"dashboard": {
"componentType": "system",
"output": "dashboard is down? Heartbeat is failing",
"status": "fail",
"time": "2021-04-14T15:52:43Z"
},
"redis": {
"componentType": "datastore",
"status": "pass",
"time": "2021-04-14T15:52:43Z"
}
},
"status": "warn",
"version": "v3.1.2"
}
Dashboard and Redis outage
$ http :8080/hello
HTTP/1.1 200 OK
Content-Length: 354
Content-Type: application/json
Date: Wed, 14 Apr 2021 17:53:33 GMT
{
"description": "Tyk GW",
"details": {
"dashboard": {
"componentType": "system",
"output": "dashboard is down? Heartbeat is failing",
"status": "fail",
"time": "2021-04-14T17:53:33Z"
},
"redis": {
"componentType": "datastore",
"output": "storage: Redis is either down or was not configured",
"status": "fail",
"time": "2021-04-14T17:53:33Z"
}
},
"status": "fail",
"version": "v3.1.2"
}
MDCB Worker Gateway RPC outage
$ http :8080/hello
HTTP/1.1 200 OK
Content-Length: 333
Content-Type: application/json
Date: Wed, 14 Apr 2021 17:21:24 GMT
{
"description": "Tyk GW",
"details": {
"redis": {
"componentType": "datastore",
"output": "storage: Redis is either down or was not configured",
"status": "fail",
"time": "2021-04-14T17:21:16Z"
},
"rpc": {
"componentType": "system",
"output": "Could not connect to RPC",
"status": "fail",
"time": "2021-04-14T17:21:16Z"
}
},
"status": "fail",
"version": "v3.1.2"
}