by Sourcegraph

Simple uptime monitoring

distributed, self-hosted
health checks and status pages

Checkup Status Page Screenshot
Source GitHub



Checkup runs on Linux, Mac, BSD, and Solaris without any external dependencies. Also embeddable in any Go program.

Easily Configurable

No more fiddling with slow, complex UIs. Checkup loads everything it needs from your checkup.json file: endpoints, storage credentials, and health criteria.

Idiomatic Go Package

Import the checkup package for total control over your health checks, including custom check types, notifications, and storage providers.

How to use

Define checks in checkup.json or Go code. Checkup's CLI is beautifully symmetric to its Go API.

// configure checkup c := checkup.Checkup{ Checkers: []checkup.Checker{ checkup.HTTPChecker{ Name: "Website", URL: "", Attempts: 5, }, }, Storage: checkup.S3{ AccessKeyID: "<yours>", SecretAccessKey: "<yours>", Bucket: "<yours>", }, } // provisioning need only happen once info, err := c.Storage.Provision() if err != nil { return err } // save this info and put it in the // config of your status page fmt.Println(info) // perform a checkup results, err := c.Check() if err != nil { return err } for _, result := range results { fmt.Println(result) } // post a status update results[0].Message = "We're investigating connectivity issues." err = c.Storage.Store(results) if err != nil { return err } // perform a check and store results err = c.CheckAndStore() if err != nil { return err } // perform checks every 10 minutes c.CheckAndStoreEvery(10 * time.Minute)
$ cat checkup.json { "checkers": [{ "type": "http", "endpoint_name": "Website", "endpoint_url": "", "attempts": 5 }], "storage": { "provider": "s3", "access_key_id": "<yours>", "secret_access_key": "<yours>", "bucket": "<yours>" } } $ checkup provision One sec... Provision successful User ID: AKIAJDUI7LNDMABCDZZZZ Username: checkup-monitor-s3-public Public Access Key ID: AKIAJDXYIQOXABCDZZZZ Public Access Key: ndGU+iHdgsozx8Qco23Bpf6rFtiYfFXRmRfoob4 IMPORTANT: Copy the Public Access Key ID and Public Access Key into the config.js file for your status page. You will not be shown these credentials again. $ checkup == Website - Threshold: 0 Max: 136.296933ms Min: 37.716659ms Median: 51.626374ms Mean: 65.212206ms All: [{54.489828ms } {45.93124ms } {51.626374ms } {136.296933ms } {37.716659ms }] Assessment: healthy $ checkup message --about=Website "We're fixing it." Message posted $ checkup --store $ checkup every 10m ^C
GitHub Source
Fork me on GitHub