# Plugin to verify the Gerrit health status

Allow having a single entry point to check the availability
of the services that Gerrit exposes.

## How to build

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
```

## How to install

Copy the healthcheck.jar into the Gerrit's /plugins directory and wait for the plugin to be automatically loaded.

## How to use

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.

- ts: epoch timestamp in millis of the test
- elapsed: elapsed time in millis to perform the check
- querychanges: check that Gerrit can query changes
- reviewdb: check that Gerrit can connect and query ReviewDb
- projectslist: check that Gerrit can list projects
- jgit: check that Gerrit can access repositories

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

  - passed: the check passed successfully
  - failed: the check failed with an error
  - timeout: the check took too long and timed out

Example of a healthy Gerrit response:

```
GET /config/server/healthcheck~status

200 OK
Content-Type: application/json

)]}'
{
  "ts": 139402910202,
  "elapsed": 100,
  "querychanges": {
    "ts": 139402910202,
    "elapsed": 20,
    "result": "passed"
  },
  "reviewdb": {
    "ts": 139402910202,
    "elapsed": 50,
    "result": "passed"
  },
  "projectslist": {
    "ts": 139402910202,
    "elapsed": 100,
    "result": "passed"
  },
  "jgit": {
    "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,
  "querychanges": {
    "ts": 139402910202,
    "elapsed": 20,
    "result": "passed"
  },
  "reviewdb": {
    "ts": 139402910202,
    "elapsed": 50,
    "result": "passed"
  },
  "projectslist": {
    "ts": 139402910202,
    "elapsed": 100,
    "result": "timeout"
  },
  "jgit": {
    "ts": 139402910202,
    "elapsed": 80,
    "result": "passed"
  }
}
```

## Metrics

As for all other endpoints in Gerrit, some metrics are automatically emitted when the  `/config/server/healthcheck~status`
endpoint is hit (thanks to the [Dropwizard](https://metrics.dropwizard.io/3.1.0/manual/core/) library).

Some additional metrics are also produced to give extra insights on their result about results and latency of healthcheck
sub component, such as jgit, reviewdb, etc.

More information can be found in the [config.md](resources/Documentation/config.md) file.
