⛑ Automated developer-oriented status page
Go to file
TwinProduction c51f35bcea Minor update
2020-04-11 23:17:31 -04:00
.github/workflows Update build job 2020-04-10 16:50:29 -04:00
config Store config in config instead of root directory 2019-12-28 12:55:00 -05:00
core Add support for [BODY] placeholder and basic JSON path support 2020-04-10 22:56:38 -04:00
example Prevent multiple services from being evaluated at the same time 2020-04-06 18:58:13 -04:00
jsonpath Add support for [BODY] placeholder and basic JSON path support 2020-04-10 22:56:38 -04:00
metric Implement Prometheus metrics 2019-11-16 16:52:11 -05:00
static Remove duplicate __TIMESTAMP__ 2020-04-10 16:37:11 -04:00
vendor Update to Go 1.14 2020-04-10 16:35:55 -04:00
watchdog Prevent multiple services from being evaluated at the same time 2020-04-06 18:58:13 -04:00
.dockerignore Add .idea to .dockerignore 2019-10-20 22:38:50 -04:00
.gitignore Remove .idea folder 2019-11-24 13:27:52 -05:00
config.yaml Add support for [BODY] placeholder and basic JSON path support 2020-04-10 22:56:38 -04:00
Dockerfile Store config in config instead of root directory 2019-12-28 12:55:00 -05:00
go.mod Update to Go 1.14 2020-04-10 16:35:55 -04:00
go.sum Go mod vendor 2019-11-16 16:52:11 -05:00
LICENSE.md Rename LICENSE to LICENSE.md 2019-09-03 22:35:56 -04:00
main.go Add GATUS_CONFIG_FILE env var to support custom config path 2020-03-08 18:16:39 -04:00
README.md Minor update 2020-04-11 23:17:31 -04:00

gatus

build Docker pulls

A service health dashboard in Go that is meant to be used as a docker image with a custom configuration file.

Live example: https://status.twinnation.org/

Usage

By default, the configuration file is expected to be at config/config.yaml.

You can specify a custom path by setting the GATUS_CONFIG_FILE environment variable.

metrics: true         # Whether to expose metrics at /metrics
services:
  - name: twinnation  # Name of your service, can be anything
    url: https://twinnation.org/health
    interval: 15s     # Duration to wait between every status check (default: 10s)
    conditions:
      - "[STATUS] == 200"         # Status must be 200
      - "[RESPONSE_TIME] < 300"   # Response time must be under 300ms
  - name: github
    url: https://api.github.com/healthz
    interval: 2m
    conditions:
      - "[STATUS] == 200"
  - name: Example
    url: https://example.org/
    interval: 30s
    conditions:
      - "[STATUS] == 200"

Note that you can also add environment variables in the your configuration file (i.e. $DOMAIN, ${DOMAIN})

Conditions

Here are some examples of conditions you can use:

Condition Description Values that would pass Values that would fail
[STATUS] == 200 Status must be equal to 200 200 201, 404, 500
[STATUS] < 300 Status must lower than 300 200, 201, 299 301, 302, 400, 500
[STATUS] <= 299 Status must be less than or equal to 299 200, 201, 299 301, 302, 400, 500
[STATUS] > 400 Status must be greater than 400 401, 402, 403, 404 200, 201, 300, 400
[RESPONSE_TIME] < 500 Response time must be below 500ms 100ms, 200ms, 300ms 500ms, 1500ms
[BODY] == 1 The body must be equal to 1 1 literally anything else
(beta) [BODY].data.id == 1 The jsonpath $.data.id is equal to 1 { "data" : { "id": 1 } literally anything else

Docker

Building the Docker image is done as following:

docker build . -t gatus

You can then run the container with the following command:

docker run -p 8080:8080 --name gatus gatus

Running the tests

go test ./... -mod vendor

Using in Production

See the example folder.