Install:
- download and unzip current binary
- chmod +x reprobate.sh
- ./reprobate.sh start
- browse to http://localhost:8473
- that's it!
Configure your own checks:
- edit checks.csv
- ./reprobate.sh restart
- that's it!
Migrating between versions:
- install new version
- copy checks.csv and state.json from previous version
- that's it!
- A simple lightweight monitor that loops through a supplied list of "checks", alerting you in suitably annoying fashion should any checks fail. Ideally displayed on a huge monitor, for all to see.
- You have a stack of applications/services and need to know they are working all the time.
- You want to be notified of production problems before your users report them
- You need to "keep it up without touching it" (tm) - you probably work for an investment bank and enjoy segregation of duties etc
- Generally we check our assertions only run at dev/build time - why wouldn't you want to run them all the time?
- Easy integration with other monitoring tools and blink(1)
-
An assertion or invariant of your system, exposed as a JSON endpoint - adhering to the following contract:
GET {host}/check/xxx e.g. GET http://localhost:8080/check/alive
-
check successful, return an empty list of failures:
{"failures":[]}
-
check unsuccessful, return a list of (one or more) failures:
{"failures":["I am not alive"]}
- One expressed in business terms e.g.
check/reports/valid/today
orcheck/can/price/trade
- Calling it frequently should not negatively impact the application/service. If your check is expensive, abstract the expensive bit into another thing and have your check query that other thing.
- see the examples in checks.csv in your reprobate installation (it is created on first run)
- see instructions for 'defcon level' in checks.csv
-
have your deployment scripts send a broadcast message to reprobate
-
supply a message, environment and duration (in seconds) for the deploment
-
reprobate will disable any probes running against that environment for the duration of the release
-
e.g.
APP="app" VERSION="version" MACHINE_NAME="machine" DEPLOYER=`id -u -n` MESSAGE="(${APP}) ${VERSION} deployed to ${MACHINE_NAME} by ${DEPLOYER}" wget --timeout=15 --no-proxy -O- --header=Content-Type:application/json --post-data="{\"messages\":[\"${MESSAGE}\"] \"env\":\"UAT\" \"durationSeconds\": 30}" "http://localhost:8473/broadcast" Or curl --connect-timeout 15 -H "Content-Type: application/json" -d "{\"messages\":[\"${MESSAGE}\"] \"env\":\"UAT\" \"durationSeconds\": 30}" http://localhost:8473/broadcast
-
Reprobate hosts a 'check' for that -
http://{hostname}:8473/check/probes/ok/{query}
e.g. (query is optional)
http://localhost:8473/check/all/ok http://localhost:8473/check/all/ok/prod
-
all checks successful:
{"failures":[]}
-
some checks unsuccessful:
{ "failures":[ "PROD Failure active between 10am and 1pm (Demo): I always let myself down", "PROD Failure @ defcon 3 (Demo): I always let myself down" ] }
-
This is useful if you have multiple stacks monitored by reprobate you can aggregate them all into one uber reprobate
-
Integrating with other monitoring tools.
-
Configure blink-control to poll the following endpoint -
http://{hostname}:8473/blink1/status/{query}
e.g. (query is optional)
http://localhost:8473/blink1/status http://localhost:8473/blink1/status/prod
-
Reprobate will return an appropriate colour to reflect the overall status
Copyright © 2015-2017 Spabloshi Ltd