This is a small and clean approach of providing the Ceph overall cluster health status via a restful json api as well as via a (hopefully) fancy web gui. There are no dependecies to the existing ceph-rest-api
. This wsgi application talks to the cluster directly via librados.
The current github version (which has no release yet) features a popover, which becomes available if there are any unhealthy osds in the cluster. If the count for Unhealthy osds is not 0, hovering over the field with the number of unhealthy osds will show a popover with additional information about those osds (including the name, the state and the host that contains this osd). To do this, ceph-dash has to issue an additional command to the cluster. This additional request will only be triggered if the first command shows any unhealthy osds!
I also did some minor code refactoring to clean everything up a bit. If I don't get any negative responses, I will create a new release in the next weeks.
- clone this repository
- place it on one of your ceph monitor nodes
- run
ceph-dash.py
- point your browser to http://ceph-monitor:5000/
- enjoy!
If you hit the address via a browser, you see the web frontend, that will inform you on a single page about all important things of your ceph cluster.
If you access the address via commandline tools or programming languages, use content-type: application/json
and you will get all the information as a json output (wich is acutally the json formatted output of ceph status --format=json
.
Anyways, this is not a wrapper around the ceph binary, it uses the python bindings of librados.
This api can be requested by, for example, a nagios check, to check your overall cluster health. This brings the advantage of querying this information without running local checks on your monitor nodes, just by accessing a read only http api.
A Nagios check that uses ceph-dash for monitoring your ceph cluster status is available here
You may want to deploy this wsgi application into a real webserver like apache or nginx. For convenience, I've put the wsgi file and a sample apache vhost config inside of the contrib
folder,
You can edit the config.json file to configure how to talk to the Ceph cluster.
ceph_config
is the location of /etc/ceph/ceph.confkeyring
points to a keyring to use to authenticate with the clusterclient_id
orclient_name
is used to specify the name to use with the keyring
In case anyone wants to see what to expect, here you go:
In the latest git version, I've integrated the flot graphing library to make it possible to show some graphs from Graphite in ceph-dash. First of all: ceph-dash does NOT put any data into graphite! You have to do it yourself. We are using our Icinga monitoring to push performance metrics to graphite. The graphs shown in the example were created by the above mentioned Nagios check for ceph-dash.
This is currently TESTING!
If you do not have a graphite section in your config.json
the Metrics section will not appear in ceph-dash.
There is a sample configuration file called config.graphite.json
. Everything in there should be quite self-explanatory. If not, feel free to open an issue on github!
Here you can see an example where one graph shows the bytes read/write per second, and another one shows the IOPS during the last two hours: