All Projects → Crapworks → Ceph Dash

Crapworks / Ceph Dash

Licence: bsd-2-clause
Flask based api / dashboard for viewing a ceph clusters overall health status

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Ceph Dash

Netdata
Real-time performance monitoring, done right! https://www.netdata.cloud
Stars: ✭ 57,056 (+14235.68%)
Mutual labels:  influxdb, monitoring, graphite, dashboard
Vsphere2metrics
VMware vSphere Performance Metrics Integration with Graphite & InfluxDB
Stars: ✭ 28 (-92.96%)
Mutual labels:  influxdb, monitoring, graphite
Pgwatch2
PostgreSQL metrics monitor/dashboard
Stars: ✭ 960 (+141.21%)
Mutual labels:  influxdb, monitoring, dashboard
Chronograf
Open source monitoring and visualization UI for the TICK stack
Stars: ✭ 1,245 (+212.81%)
Mutual labels:  influxdb, monitoring, dashboard
Tessera
A dashboard front-end for graphite.
Stars: ✭ 1,202 (+202.01%)
Mutual labels:  monitoring, graphite, dashboard
Influxgraph
Graphite InfluxDB backend. InfluxDB storage finder / plugin for Graphite API.
Stars: ✭ 87 (-78.14%)
Mutual labels:  influxdb, monitoring, graphite
Graylog Plugin Metrics Reporter
Graylog Metrics Reporter Plugins
Stars: ✭ 71 (-82.16%)
Mutual labels:  influxdb, monitoring, graphite
Appmetrics
App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
Stars: ✭ 1,986 (+398.99%)
Mutual labels:  influxdb, monitoring, graphite
Icinga2
Icinga is a monitoring system which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting.
Stars: ✭ 1,670 (+319.6%)
Mutual labels:  influxdb, monitoring, graphite
Grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Stars: ✭ 45,930 (+11440.2%)
Mutual labels:  influxdb, monitoring, dashboard
Icingaweb2 Module Grafana
Grafana module for Icinga Web 2 (supports InfluxDB & Graphite)
Stars: ✭ 190 (-52.26%)
Mutual labels:  influxdb, monitoring, graphite
Hastic Server
Hastic data management server for analyzing patterns and anomalies from Grafana
Stars: ✭ 292 (-26.63%)
Mutual labels:  influxdb, monitoring, graphite
Chartbrew
Open-source web platform for creating charts out of different data sources (databases and APIs) 📈📊
Stars: ✭ 199 (-50%)
Mutual labels:  api, dashboard
Crick
📊 Crick is a backend for the Watson time-tracker.
Stars: ✭ 207 (-47.99%)
Mutual labels:  api, dashboard
Strapi Sdk Javascript
🔌 Official JavaScript SDK for APIs built with Strapi.
Stars: ✭ 247 (-37.94%)
Mutual labels:  api, dashboard
commonpp
Small library helping you with basic stuff like getting metrics out of your code, thread naming, etc.
Stars: ✭ 29 (-92.71%)
Mutual labels:  influxdb, graphite
Orange
OpenResty/Nginx Gateway for API Monitoring and Management.
Stars: ✭ 2,208 (+454.77%)
Mutual labels:  api, monitoring
inspector-metrics
Typescript metrics / monitoring library
Stars: ✭ 19 (-95.23%)
Mutual labels:  influxdb, graphite
request log analyzer
Extract some performance metrics from the request.log of a CQ/AEM instance. It can be used as an alternative to or in addition to `rlog.jar`.
Stars: ✭ 27 (-93.22%)
Mutual labels:  influxdb, graphite
Questdb
An open source SQL database designed to process time series data, faster
Stars: ✭ 7,544 (+1795.48%)
Mutual labels:  monitoring, influxdb

ceph-dash - a free ceph dashboard / monitoring api

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 dependencies to the existing ceph-rest-api. This wsgi application talks to the cluster directly via librados.

You can find a blog entry regarding monitoring a Ceph cluster with ceph-dash on Crapworks.

Here you can find a presentation from Paul Evans, taken from the Ceph Day in San Francisco (March 12, 2015) where he is comparing several Ceph-GUIs, including ceph-dash.

Newest Feature

Rook on Kubernetes

I recently played around with Rook on Kubernetes. This was so far my fastest Ceph cluster to setup. Since Rook provides some secrets and config maps already, I made the docker container for Ceph-dash compatible with their format. I also added Kubernetes deployment files in the contrib folder (tested on GKE, but should work on any Kubernetes cluster). No need to configure anything, they should just work out of the box.

Docker container

Since everybody recently seems to be hyped as hell about the container stuff, I've decided that I can contribute to that with a ready-to-use docker container. Available at Docker Hub you can pull the ceph-dash container and configure it via the following environment variables:

  • Required: $CEPHMONS (comma separated list of ceph monitor ip addresses)
  • Required: $KEYRING (full keyring that you want to use to connect to your ceph cluster)
  • Optional: $NAME (name of the key you want to use)
  • Optional: $ID (id of the key you want to use)

Example

docker run -p 5000:5000 -e CEPHMONS='10.0.2.15,10.0.2.16' -e KEYRING="$(sudo cat /etc/ceph/keyring)" crapworks/ceph-dash:latest

InfluxDB support

I've refactored the code quite a bit to make use of Blueprints instead of Method Views. The structure of the code has changed, but I was keeping everything backwards compatible to all your deployments should still work with the current version. This is for now not a release, because I want to see if there is some negative feedback on this. And here are two new things you can cheer about!

Graphing Proxies

Your browser does not talk directly to Graphite directly anymore! It uses the /graphite endpoint which already provides flot-formated json output. Ceph-dash will establish a connection to Graphite and gather all relevant data. This should prevent Cross-Domain issues and in case of InfluxDB, also hides the database password. Due to it's generic nature, it should be easy to add more graphing backends if needed.

InfluxDB support

Ceph-dash now supports also InfluxDB as a graphing backend besides Graphite. You need client and server version > 0.9 since the api broke with that release and is not backwards compatible. If you do not have the InfluxDB python module installed, Ceph-dash will NOT enable the InfluxDB proxy and will not load any configured InfluxDB resources. So please be sure to have the latest InfluxDB python module installed if you want to use InfluxDB as a backend. You can find a sample configuration file called config.influxdb.json in the root folder, which should explain how to use it. Please understand that I can't give you support for you InfluxDB setup, because this would definitely exceed the scope of Ceph-Dash.

screenshot04

Old content warning

If an AJAX call to the underlying ceph-dash API isn't answered within 3 seconds, a silent timeout is happening. The dashboard will still show the old data. I wanted to give the user a hint if something is wrong with the api or the ceph cluster, so I've added a little warning icon that tells you if the data shown in ceph-dash is getting to old. Reasons for that can be an slow or unresponsive cluster (some error handling is happening - a monitor failover for example).

screenshot03

Unhealthy OSD popover

The current release 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!

screenshot03

I also did some minor code refactoring to clean everything up a bit.

Quickstart

  1. clone this repository
  2. place it on one of your ceph monitor nodes
  3. run ceph-dash.py
  4. point your browser to http://ceph-monitor:5000/
  5. enjoy!

Dashboard

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.

REST Api

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 (which is actually 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.

Nagios Check

A Nagios check that uses ceph-dash for monitoring your ceph cluster status is available here

Deployment

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.conf
  • keyring points to a keyring to use to authenticate with the cluster
  • client_id or client_name is used to specify the name to use with the keyring

Pictures!!

In case anyone wants to see what to expect, here you go:

screenshot01

Graphite Integration

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.

If you do not have a graphite section in your config.json the Metrics section will not appear in ceph-dash.

Configuration

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!

Example

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:

screenshot01

FAQ

How can I change the port number

The development server of Ceph-dash runs by default on port 5000. If you can't use this port since it is already used by another application, you can change it by opening ceph-dash.py and change the line

app.run(host='0.0.0.0', debug=True)

to

app.run(host='0.0.0.0', port=6666, debug=True)

Please keep in mind that the development server should not be used in a production environment. Ceph-dash should be deployed into a proper webserver like Apache or Nginx.

Running ceph-dash behind a reverse proxy

Since Version 1.2 ceph-dash is able to run behind a reverse proxy that rewrites the path where ceph-dash resides correctly. If you are using nginx, you need to use a config like this:

server {
    location /foobar {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Script-Name /foobar;
    }
}

See also: https://github.com/wilbertom/flask-reverse-proxy, which is where I got the code for doing this.

Problems with NginX and uwsgi

See this issue for a detailed explanation how to fix errors with NginX and uwsgi (Thanks to @Lighiche)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].