Sometimes you just need to know, is it up? The goal of this project is to create an easy to use, but highly customizable status monitor.
First start by installing the environment.
$ mkdir example-status
$ cd example-status
$ virtualenv . -p python3 --no-site-packages
$ bin/pip install up
Now you need to create the upfile.py. It goes in the same folder as everything else. From here you can setup what you want to monitor.
from up import status, source, sink
class ExampleStatus(status.StatusMonitor):
source = source.HTTPStatusSource('Example Status', 'https://example.com/')
sink = sink.StdOutStatusSink()
You can now run it like this.
$ bin/up
Example Status: UP
Up uses a "tinker-toy" pattern allowing you to combine sources to build whatever kind of monitor you need. A StatusTreeSource will let you combine multiple sources into one.
from up import status, source, sink
class ExampleStatus(status.StatusMonitor):
# You can also try a ThreadedTreeSource which runs the monitors
# in parallel.
source = source.StatusTreeSource('Example Status', [
source.HTTPStatusSource('PROD', 'https://example.com/'),
source.HTTPStatusSource('QA', 'https://qa.example.com/')
])
sink = sink.StdOutStatusSink()
Up will query each of the sources and give you a simplified status.
$ bin/up
Example Status: HALF UP
For more information use -v.
$ bin/up -v
Example Status: HALF UP (50%)
PROD: UP
QA: DOWN
Up comes with a source that reads from GitHub's status API.
from up import status, source, sink
class ExampleStatus(status.StatusMonitor):
source = source.GitHubStatusSource('GitHub Status')
sink = sink.StdOutStatusSink()
$ bin/up -v
GitHub Status: UP
$ virtualenv . -p python3 --no-site-packages
$ bin/python setup.py develop
- Next Nothing Yet.
- 0.2.1 - Fix templates and static resources missing from egg
- 0.2.0 - Detect ConnectionError and set status to DOWN; Expose Web Interface; Experimental SNMP monitoring (will most likely change)
- 0.1.0 - Initial release