The plugin does not require any configuration at all and exposes an HTTP endpoint for querying the service status.
GET /config/server/healthcheck~status )]}' { "ts": 139402910202, "elapsed": 120, "blockedthreads": { "ts": 139402910202, "elapsed": 30, "result": "passed" }, "querychanges": { "ts": 139402910202, "elapsed": 20, "result": "passed" }, "projectslist": { "ts": 139402910202, "elapsed": 40, "result": "passed" }, "auth": { "ts": 139402910202, "elapsed": 30, "result": "passed" } }
The plugin allows to customize its behaviour through a specific healthcheck.config
file in the $GERRIT_SITE/etc
directory.
Each section of the form [healthcheck "<checkName>"]
can tailor the behaviour of an individual <checkName>
. The section [healthcheck]
defines the global defaults valid for all checks.
The following check names are available:
querychanges
: check the ability to query changesjgit
: check connectivity to the filesystem and ability to open a JGit ref and objectprojectslist
: check the ability to list projects with their descriptionsauth
: check the ability to authenticate with username and passwordactiveworkers
: check the number of active worker threads and the ability to create a new onedeadlock
: check if Java deadlocks are reported by the JVMblockedthreads
: check the number of blocked threadschangesindex
: check if the lucene based changes indexes (open and closed) are operable (examines index lock files)Each check name can be disabled by setting the enabled
parameter to false, by default this parameter is set to true
The following parameters are available:
healthcheck.<checkName>.timeout
: Specific timeout (msec) for the healthcheck to complete. Zero means that there is no timeout.
Default: 500
healthcheck.<checkName>.query
: Query to be executed for extracting elements from the check.
Default: status:open
healthcheck.<checkName>.limit
: Maximum number of elements to retrieve from the the check results.
Default: 10
healthcheck.jgit.project
: A project name to check for accessibility of its refs/meta/config. Multiple occurrences are allowed to configure more projects, in addition to the default ones that are always included.
Default: All-Projects, All-Users
healthcheck.auth.username
: Username to use for authentication
Default: healthcheck
healthcheck.auth.password
: Password to use for authentication
Default: no password
healthcheck.activeworkers.threshold
: Percent of queue occupancy above which queue is consider as full.
Default: 80
healthcheck.blockedthreads.threshold
: Percent of all threads that are blocked above which instance is considered as unhealthy.
Default: 50
By default healthcheck.blockedthreads
is calculated as ratio of BLOCKED threads against the all Gerrit threads. It might be not sufficient for instance in case of SSH-Interactive-Worker
threads that could be all blocked making effectively a Gerrit instance unhealthy (neither fetch nor push would succeed) but the threshold could be still not reached. Therefore one can fine tune the check by putting detailed configuration for one or more thread groups (all threads that have the name starting with a given prefix) to be checked according to the following template:
[healthcheck "blockedthreads"] threshold = [prefix]=[XX]
Note that in case when specific thread groups are configured all threads are no longer checked.
Example 1: check if BLOCKED threads are above the limit of 70
[healthcheck "blockedthreads"] threshold = 70
Example 2: check if BLOCKED foo
threads are above the 33 limit
[healthcheck "blockedthreads"] threshold = foo=45
Example 3: check if BLOCKED foo
threads are above the 33 limit and if BLOCKED bar
threads are above the the 60 limit
[healthcheck "blockedthreads"] threshold = foo=33 threshold = bar=60