Flask application to connect to a list of sensu-api servers and displays a grid of OK, WARNING, CRITICAL, DOWN and ACK'd alerts.
- overview by data centre ( Name, OK, WARN, CRIT, DOWN, ACK )
- detail view by data centre ( Grid of hosts, color changes based on amount of alerting checks, 1 = yellow, > 1 = red, down = purple )
- Events view by data centre (Grid of events which are currently alerting/warning/unknown)
- filter by hosts' subscription/s ( Only shows matchin hosts' check results in overview and detail view)
Overview (DCs)
Amend the URL and add all the filters together as a comma-separated list, e.g.: http://localhost:5000/filtered/aaa,bbb,ccc,ddd
They filter based on the hosts' subscriptions, except in the Events view where they filter on all properties of the check and the host.
- docker (obviously)
- boot2docker (if you're on mac/windows)
docker build -t name/sensu-grid:latest .
docker run -d -p 80:5000 name/sensu-grid:latest
if you dont want to use docker
- Checkout this directory into
/opt/sensu-grid
virtualenv .
. bin/activate
Add via pip install or via your package management
- requests
- PyYAML
- Flask
- argparse
- gunicorn
-
Install all required python libs first:
pip install -r requirements.txt
-
Create the app user:
useradd -r sensu-grid
- Install supervisord (
yum -y install supervisor
) - Copy the provided config (
start-scripts/supervisord.conf
) file to/etc/supervisord.conf
- Install upstart (
yum -y install upstart
) - Copy the provided upstart config (
start-scripts/sensu-grid.conf
) file to/etc/init/
You should copy the conf/config.yaml.sample
file to conf/config.yaml
and edit as appropriate.
If you use username/password, ensure you set the appropriate permissions - e.g. chmod 640 conf/config.yaml
and set the owner to sensu-grid
which you'll be using to run this app.
---
dcs:
-
name: dev
url: sensu-dev.domain.local
port: 4567
uchiwa: http://sensu-dev.domain.local:3000
-
name: stage
url: sensu-stage.domain.local
port: 4567
user: apiuser
password: apipassword
app:
refresh: 60
bg_color: #333333
# This is a python requests layer timeout, as by default, it does not timeout
requests_timeout: 10
logging_level: info
cache_expire_time: 10
(this requires you to install all the dependencies)
cd <checkout>
/usr/bin/python sensugrid.py
## healthcheck
a healthcheck is available at /healthcheck
which returns json formatted text, which you can pipe into python -m json.tool
example:
curl http://localhost:5000/healthcheck | python -m json.tool