solution: docs for health check
This commit is contained in:
@@ -119,4 +119,61 @@ This dashboard contains:
|
|||||||
|
|
||||||
- JSON RPC upstream conn seconds 50,75,90,99 percentiles
|
- JSON RPC upstream conn seconds 50,75,90,99 percentiles
|
||||||
|
|
||||||
|
== Health Checks
|
||||||
|
|
||||||
|
Dshackle provides a http endpoint to check status of the servers.
|
||||||
|
This check is compatible with https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#http-probes[Kubernetes Liveness and Readiness Probes].
|
||||||
|
|
||||||
|
By default, it's disabled, and you have to set up which blockchain are required to be available to consider Dshackle alive.
|
||||||
|
|
||||||
|
.Example config:
|
||||||
|
[source,yaml]
|
||||||
|
----
|
||||||
|
health:
|
||||||
|
port: 8082 # <1>
|
||||||
|
host: 127.0.0.1 # <2>
|
||||||
|
path: /health # <3>
|
||||||
|
blockchains: # <4>
|
||||||
|
- chain: ethereum # <5>
|
||||||
|
min-available: 2 # <6>
|
||||||
|
- chain: bitcoin
|
||||||
|
min-available: 1
|
||||||
|
----
|
||||||
|
|
||||||
|
<1> (optional) port to bind the Health server.
|
||||||
|
Default: `8082`
|
||||||
|
<2> (optional) host to bind the Health server.
|
||||||
|
Default: `127.0.0.1`
|
||||||
|
<3> (optional) path on the server.
|
||||||
|
Default: `/health`.
|
||||||
|
I.e., `http://127.0.0.1:8082/health` with default config
|
||||||
|
<4> list of blockchain to check availability
|
||||||
|
<5> a Blockchain to check
|
||||||
|
<6> minimum available (i.e., fully synced) Upstreams for that blockchain
|
||||||
|
|
||||||
|
With the config above the server is considered healthy if:
|
||||||
|
|
||||||
|
- Dshackle has connected to at least two valid Ethereum upstreams
|
||||||
|
- **and** at least one valid Bitcoin upstream.
|
||||||
|
|
||||||
|
When the server is healthy is responds with `OK` and 200 as HTTP Status Code.
|
||||||
|
When any of the checks failed, it responds with a short description and 503 as HTTP Status Code.
|
||||||
|
|
||||||
|
Example of a response for an unhealthy server that doesn't have enough upstreams for a Ethereum Classic Blockchain.
|
||||||
|
|
||||||
|
.GET http://127.0.0.1:8082/health
|
||||||
|
----
|
||||||
|
ETHEREUM_CLASSIC UNAVAILABLE
|
||||||
|
----
|
||||||
|
|
||||||
|
Optionally, the server can be called with `?detailed` query, which provides a more detailed response:
|
||||||
|
|
||||||
|
.GET http://127.0.0.1:8082/health?detailed
|
||||||
|
----
|
||||||
|
ETHEREUM_CLASSIC UNAVAILABLE
|
||||||
|
BITCOIN AVAILABLE
|
||||||
|
local-btc-1 OK with lag=0
|
||||||
|
ETHEREUM AVAILABLE
|
||||||
|
local-eth-1 OK with lag=0
|
||||||
|
local-eth-2 OK with lag=0
|
||||||
|
----
|
||||||
|
|||||||
@@ -31,6 +31,14 @@ monitoring:
|
|||||||
port: 8081
|
port: 8081
|
||||||
path: /metrics
|
path: /metrics
|
||||||
|
|
||||||
|
health:
|
||||||
|
port: 8082
|
||||||
|
host: 127.0.0.1
|
||||||
|
path: /health
|
||||||
|
blockchains:
|
||||||
|
- chain: ethereum
|
||||||
|
min-availability: 1
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
redis:
|
redis:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -164,6 +172,10 @@ See <<tls>> section
|
|||||||
| Setup Prometheus monitoring.
|
| Setup Prometheus monitoring.
|
||||||
See <<monitoring>> section
|
See <<monitoring>> section
|
||||||
|
|
||||||
|
| `health`
|
||||||
|
|
|
||||||
|
| Setup Health Check endpoint See <<health>> section
|
||||||
|
|
||||||
| `proxy`
|
| `proxy`
|
||||||
|
|
|
|
||||||
| Setup HTTP proxy that emulates all standard JSON RPC requests.
|
| Setup HTTP proxy that emulates all standard JSON RPC requests.
|
||||||
@@ -285,6 +297,52 @@ _Reserved for future use_, in case of multiple different types of endpoints.
|
|||||||
|
|
||||||
|===
|
|===
|
||||||
|
|
||||||
|
[#health]
|
||||||
|
== Health Check endpoint
|
||||||
|
|
||||||
|
[source,yaml]
|
||||||
|
----
|
||||||
|
health:
|
||||||
|
port: 8082
|
||||||
|
host: 127.0.0.1
|
||||||
|
path: /health
|
||||||
|
blockchains:
|
||||||
|
- chain: ethereum
|
||||||
|
min-available: 2
|
||||||
|
- chain: bitcoin
|
||||||
|
min-available: 1
|
||||||
|
----
|
||||||
|
|
||||||
|
[cols="2a,2a,5"]
|
||||||
|
|===
|
||||||
|
| Option | Default Value | Description
|
||||||
|
|
||||||
|
| `port`
|
||||||
|
| `8082`
|
||||||
|
| HTTP port to bind the server
|
||||||
|
|
||||||
|
| `host`
|
||||||
|
| `127.0.0.1`
|
||||||
|
| HTTP host to bind the server
|
||||||
|
|
||||||
|
| `path`
|
||||||
|
| `/health`
|
||||||
|
| HTTP path to respond on requests
|
||||||
|
|
||||||
|
| `blockchains`
|
||||||
|
|
|
||||||
|
| List of blockchains that must be available to consider the server _healthy_
|
||||||
|
|
||||||
|
| `[blockchain].chain`
|
||||||
|
|
|
||||||
|
| Blockchain id
|
||||||
|
|
||||||
|
| `[blockchain].min-available`
|
||||||
|
| 1
|
||||||
|
| How many _available_ upstreams for the blockchain is required to pass
|
||||||
|
|
||||||
|
|===
|
||||||
|
|
||||||
[#proxy]
|
[#proxy]
|
||||||
== Proxy config
|
== Proxy config
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user