Home

Health check API

This API can be used for measuring a node health.

To get an HTTP status code response that indicates the node’s health, make a GET request to /ext/health. If the node is healthy, it will return a 200 status code. If you want more in-depth information about a node’s health, use the methods below.

info

This API set is for a specific node, it is unavailable on the public server.

Format#

This API uses the json 2.0 RPC format. For more information on making JSON RPC calls, see here.

Endpoint#

/ext/health

Methods#

health.health#

The node runs a set of health checks every 30 seconds, including a health check for each chain. This method returns the last set of health check results.

Signature:

health.health() -> {
    checks: []{
        checkName: {
            message: JSON,
            error: JSON,
            timestamp: string,
            duration: int,
            contiguousFailures: int,
            timeOfFirstFailure: int
        }
    },
    healthy: bool
}

healthy is true if the node if all health checks are passing.

checks is a list of health check responses.

  • A check response may include a message with additional context.
  • A check response may include an error describing why the check failed.
  • timestamp is the timestamp of the last health check.
  • duration is the execution duration of the last health check, in nanoseconds.
  • contiguousFailures is the number of times in a row this check failed.
  • timeOfFirstFailure is the time this check first failed.

More information on these measurements can be found in the documentation for the go-sundheit library.

Example Call:

curl -X POST --data '{
    "jsonrpc":"2.0",
    "id"     :1,
    "method" :"health.health"
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/health

Example Response:

In this example response, the Utility Chain’s health check is failing.

{
  "jsonrpc": "2.0",
  "result": {
    "checks": {
      "C": {
        "message": null,
        "error": {
          "message": "example error message"
        },
        "timestamp": "2020-10-14T14:04:20.57759662Z",
        "duration": 465253,
        "contiguousFailures": 50,
        "timeOfFirstFailure": "2020-10-14T13:16:10.576435413Z"
      },
      "P": {
        "message": {
          "percentConnected": 0.9967694992864075
        },
        "timestamp": "2020-10-14T14:04:08.668743851Z",
        "duration": 433363830,
        "contiguousFailures": 0,
        "timeOfFirstFailure": null
      },
      "X": {
        "timestamp": "2020-10-14T14:04:20.3962705Z",
        "duration": 1853,
        "contiguousFailures": 0,
        "timeOfFirstFailure": null
      },
      "chains.default.bootstrapped": {
        "timestamp": "2020-10-14T14:04:04.238623814Z",
        "duration": 8075,
        "contiguousFailures": 0,
        "timeOfFirstFailure": null
      },
      "network.validators.heartbeat": {
        "message": {
          "heartbeat": 1602684245
        },
        "timestamp": "2020-10-14T14:04:05.610007874Z",
        "duration": 6124,
        "contiguousFailures": 0,
        "timeOfFirstFailure": null
      }
    },
    "healthy": false
  },
  "id": 1
}
Need some help?

You can join Dijets Support Space for a live chat with one of the team members. Join us on Qowalts.