2016-05-18 11:48:48 -04:00
|
|
|
# Health Check
|
2016-05-22 01:41:20 -04:00
|
|
|
|
2016-08-08 04:09:54 -04:00
|
|
|
> [Introduced][ce-3888] in GitLab 8.8.
|
2016-05-18 11:48:48 -04:00
|
|
|
|
|
|
|
GitLab provides a health check endpoint for uptime monitoring on the `health_check` web
|
|
|
|
endpoint. The health check reports on the overall system status based on the status of
|
|
|
|
the database connection, the state of the database migrations, and the ability to write
|
|
|
|
and access the cache. This endpoint can be provided to uptime monitoring services like
|
2016-05-18 15:00:26 -04:00
|
|
|
[Pingdom][pingdom], [Nagios][nagios-health], and [NewRelic][newrelic-health].
|
2016-05-18 11:48:48 -04:00
|
|
|
|
|
|
|
## Access Token
|
|
|
|
|
2016-05-20 13:24:06 -04:00
|
|
|
An access token needs to be provided while accessing the health check endpoint. The current
|
2016-05-24 14:26:43 -04:00
|
|
|
accepted token can be found on the `admin/health_check` page of your GitLab instance.
|
2016-05-18 11:48:48 -04:00
|
|
|
|
|
|
|
![access token](img/health_check_token.png)
|
|
|
|
|
2016-05-22 01:41:20 -04:00
|
|
|
The access token can be passed as a URL parameter:
|
2016-05-18 11:48:48 -04:00
|
|
|
|
2016-05-22 01:41:20 -04:00
|
|
|
```
|
|
|
|
https://gitlab.example.com/health_check.json?token=ACCESS_TOKEN
|
|
|
|
```
|
2016-05-18 11:48:48 -04:00
|
|
|
|
2016-05-22 01:41:20 -04:00
|
|
|
or as an HTTP header:
|
2016-05-18 11:48:48 -04:00
|
|
|
|
|
|
|
```bash
|
2016-08-08 03:47:17 -04:00
|
|
|
curl --header "TOKEN: ACCESS_TOKEN" https://gitlab.example.com/health_check.json
|
2016-05-18 11:48:48 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
## Using the Endpoint
|
|
|
|
|
|
|
|
Once you have the access token, health information can be retrieved as plain text, JSON,
|
|
|
|
or XML using the `health_check` endpoint:
|
|
|
|
|
|
|
|
- `https://gitlab.example.com/health_check?token=ACCESS_TOKEN`
|
|
|
|
- `https://gitlab.example.com/health_check.json?token=ACCESS_TOKEN`
|
|
|
|
- `https://gitlab.example.com/health_check.xml?token=ACCESS_TOKEN`
|
|
|
|
|
|
|
|
You can also ask for the status of specific services:
|
|
|
|
|
|
|
|
- `https://gitlab.example.com/health_check/cache.json?token=ACCESS_TOKEN`
|
|
|
|
- `https://gitlab.example.com/health_check/database.json?token=ACCESS_TOKEN`
|
|
|
|
- `https://gitlab.example.com/health_check/migrations.json?token=ACCESS_TOKEN`
|
|
|
|
|
2016-05-22 01:41:20 -04:00
|
|
|
For example, the JSON output of the following health check:
|
|
|
|
|
2016-05-18 11:48:48 -04:00
|
|
|
```bash
|
2016-08-08 03:47:17 -04:00
|
|
|
curl --header "TOKEN: ACCESS_TOKEN" https://gitlab.example.com/health_check.json
|
2016-05-22 01:41:20 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
would be like:
|
|
|
|
|
|
|
|
```
|
2016-05-18 11:48:48 -04:00
|
|
|
{"healthy":true,"message":"success"}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Status
|
|
|
|
|
2016-05-22 01:41:20 -04:00
|
|
|
On failure, the endpoint will return a `500` HTTP status code. On success, the endpoint
|
|
|
|
will return a valid successful HTTP status code, and a `success` message. Ideally your
|
2016-05-18 11:48:48 -04:00
|
|
|
uptime monitoring should look for the success message.
|
|
|
|
|
|
|
|
[ce-3888]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3888
|
|
|
|
[pingdom]: https://www.pingdom.com
|
|
|
|
[nagios-health]: https://nagios-plugins.org/doc/man/check_http.html
|
|
|
|
[newrelic-health]: https://docs.newrelic.com/docs/alerts/alert-policies/downtime-alerts/availability-monitoring
|