Gridlock was built with the idea that the same service is deployed in many sites. I specifically wrote it to display the status' of Openstack apis across many installations. I use sensu to monitor the apis and services and the same script pushes a status update to Gridlock. Why the two systems you ask? Well, as much as I like sensu, I find the interface can get cluttered when you have all the operating system checks, network checks etc. So, I wanted a simple and very visual dashboard.
Each square on the main page displays the last known state for each service in each location. Each square is clickable for a historical view of the service. By default it shows the last 20 reports. To get more, append &offset=100 to the url.
Gridlock does no polling itself, it expects the data to be sent to it. I've included a bash and python script as examples. Currently it uses an sqlalchemy/sqlite3 db but should be easy to use any database via sqlalchemy.
My python foo is not strong, please look at this as more of intent than a polished, safe, secure piece of code. Forks and pull requests are most welcome!
Color legend is simple:
Green - up (status 0)
Yellow - warn (status 1)
Red - down (status 2)
Black - no data or unknown (status 3)
Grey - timeout (a service has not reported in for 10 minutes) (status 4)
When sending data to the api, it expects the following fields in json format
{ "description": "",
"service":"",
"status":"",
"location":"",
"env":"",
"timestamp":""
}
A description of the status, eg execution timing. Will be displayed as a tooltip
The service name
Must be one of 0|1|2|3
Where the service lives
Currently unused, I default to "prod"
Epoch time as an int