commit | a3b3a5c8fc60136120010124945be6a179a73571 | [log] [tgz] |
---|---|---|
author | Luca Milanesio <luca.milanesio@gmail.com> | Mon Jan 14 15:55:19 2019 +0000 |
committer | Luca Milanesio <luca.milanesio@gmail.com> | Wed Jan 16 13:40:49 2019 +0000 |
tree | d87c296786583b39e9ce8a68cc4ee5a42cf124f5 | |
parent | 3c7cca41346ea035baf9985700bc57b9f13bfada [diff] |
Scaffolding of the healthcheck API and build Define the overall structure of the health check API, with its return code and expected payload. Add the overall Bazel build and acceptance tests. Change-Id: Ifc25fcfa97c1fb4824e472349b8ae435e0f9551b
Allow having a single entry point to check the availability of the services that Gerrit exposes.
Clone or link this plugin to the plugins directory of Gerrit‘s source tree, and then run bazel build on the plugin’s directory.
Example:
git clone --recursive https://gerrit.googlesource.com/gerrit git clone https://gerrit.googlesource.com/plugins/healthcheck pushd gerrit/plugins && ln -s ../../healthcheck . && popd cd gerrit && bazel build plugins/healthcheck
The output plugin jar is created in:
bazel-genfiles/plugins/healthcheck/healthcheck.jar
Copy the healthcheck.jar into the Gerrit's /plugins directory and wait for the plugin to be automatically loaded.
The healthcheck plugin exposes a single endpoint under its root URL and provides a JSON output of the Gerrit health status.
The HTTP status code returned indicates whether Gerrit is healthy (HTTP status 200) or has some issues (HTTP status 500).
The HTTP response payload is a JSON output that contains the details of the checks performed.
Each check returns a JSON payload with the following information:
ts: epoch timestamp in millis of the individual check
elapsed: elapsed time in millis to complete the check
result: result of the health check
Example of a healthy Gerrit response:
GET /config/server/healthcheck~status 200 OK Content-Type: application/json { "ts": 139402910202, "elapsed": 100, "reviewdb": { "ts": 139402910202, "elapsed": 50, "result": "passed" }, "projectslist": { "ts": 139402910202, "elapsed": 100, "result": "passed" }, "auth": { "ts": 139402910202, "elapsed": 80, "result": "passed" } }
Example of a Gerrit instance with the projects list timing out:
GET /config/server/healthcheck~status 500 ERROR Content-Type: application/json { "ts": 139402910202, "elapsed": 100, "reviewdb": { "ts": 139402910202, "elapsed": 50, "result": "passed" }, "projectslist": { "ts": 139402910202, "elapsed": 100, "result": "timeout" }, "auth": { "ts": 139402910202, "elapsed": 80, "result": "passed" } }