Whiskerboard is a status board for websites, services and APIs, like Amazon's AWS status page.
It is heavily based on Stashboard. Unlike Stashboard, it uses vanilla Django, so you aren't stuck using Google App Engine.
Have a look at the demo: http://status.lolnet.org/.
It's quick to get a status board up and running.
$ pip install -r requirements.txt
You might need to install pip. If you haven't got a virtualenv, you'll need to run it as root too.
Back on the admin home page, click on "services" and add the things you want to report the status of (website, API etc). To change the status of a service add an event for it.
The configuration files are located in the setting
directory. You now need
to configure your application. To do so, you can copy the local.py.dist
file
to local.py
, or create a production.py
file, depending on what you are doing
(development versus production)::
$ cp settings/local.py{.dist,}
and of course edit it with your own settings.
DATABASES
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'whiskerboard',
'USER': 'whiskerboard',
'PASSWORD': 'supersekritpassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
TIME_ZONE
TIME_ZONE = 'Etc/UTC'
ADMINS
ADMINS = (
('Your Name', 'your_email@example.com'),
)
On the first run, you need to synchronize the database and run the migrations::
$ python manage.py syncdb
$ python manage.py migrate
Whiskerboard wasn't originally made to check the availability of the services, but it now supports a way to do so, by using celery checks. If you need it, you'll need to:
- Install celery and django-celery to your virtual environment:
pip install celery django-celery
- Add
djcelery
to the INSTALLED_APPS list in your settings; - add a
connection_string
value to your services; it should be of the formprotocol://host:port
(protocol can be ping, http or https for now); - run celeryd (with
python manage.py celeryd
) in the background; - run the
check_status
task periodically, when you want to check that the services are still up.
Here is the line to put in your crontab (crontab -e
) if you want to check
things hourly::
@hourly /path/to/venv/bin/python public/manage.py check_status