A monitoring web UI is available in the form of the upstream Ceph Dashboard. It resides in the same model alongside the existing Ceph applications.
The dashboard is deployed using the ceph-dashboard charm. It works in conjunction with the openstack-loadbalancer charm, which in turn utilises the hacluster charm.
The ceph-dashboard charm is also compatible with Prometheus (for Ceph metric gathering) and Grafana (for displaying Prometheus data). This optional enhancement results in Grafana graphs being embedded within the dashboard.
ⓘ Note:
The ceph-dashboard charm is currently in tech-preview.
Deployment
We are assuming a pre-existing Ceph cluster.
Deploy the ceph-dashboard as a subordinate to the ceph-mon charm.
juju deploy --channel quincy/stable ceph-dashboard
juju add-relation ceph-dashboard:dashboard ceph-mon:dashboard
TLS is a requirement for this charm. Enable it by adding a relation to the vault application:
juju add-relation ceph-dashboard:certificates vault:certificates
The dashboard is necessarily load balanced. It does so by using VIPs and is implemented via the openstack-loadbalancer and hacluster charms (use one or more space-separated VIP addressees local to your own environment):
juju deploy -n 3 --config vip=10.5.20.200 --channel jammy/stable openstack-loadbalancer
juju deploy hacluster openstack-loadbalancer-hacluster
juju add-relation openstack-loadbalancer:ha openstack-loadbalancer-hacluster:ha
Finally, to actually enable load balancing, add a relation between the openstack-loadbalancer and ceph-dashboard applications:
juju add-relation ceph-dashboard:loadbalancer openstack-loadbalancer:loadbalancer
Accessing the dashboard
Add a dashboard user by applying charm action add-user
to any ceph-dashboard unit:
juju run-action --wait ceph-dashboard/0 add-user username=admin role=administrator
ⓘ Note:
See the Ceph documentation on the different role types available.
This user’s password is included in the command’s output:
unit-ceph-dashboard-0:
UnitId: ceph-dashboard/0
id: "26"
results:
password: nMbKY95LmYvP
status: completed
timing:
completed: 2021-10-26 16:58:49 +0000 UTC
enqueued: 2021-10-26 16:58:47 +0000 UTC
started: 2021-10-26 16:58:48 +0000 UTC
The web UI is available on the configured VIP and on port 8443:
https://10.5.20.200:8443
This should bring you to a login page:
In this example the credentials are:
Username: admin
Password: nMbKY95LmYvP
Embedded Grafana dashboards
To embed Grafana dashboards some additional relations are required (Grafana, Telegraf, and Prometheus are assumed to be pre-existing):
juju add-relation ceph-dashboard:grafana-dashboard grafana:dashboards
juju add-relation ceph-dashboard:prometheus prometheus:website
juju add-relation ceph-mon:prometheus prometheus:target
juju add-relation ceph-osd:juju-info telegraf:juju-info
juju add-relation ceph-mon:juju-info telegraf:juju-info
Grafana, Telegraf, and Prometheus should be related in the standard way:
juju add-relation grafana:grafana-source prometheus:grafana-source
juju add-relation telegraf:prometheus-client prometheus:target
juju add-relation telegraf:dashboards grafana:dashboards
When Grafana is integrated with the Ceph Dashboard it requires TLS, so add a relation to Vault (the grafana charm also supports TLS configuration via ssl_*
charm options):
juju add-relation grafana:certificates vault:certificates
ⓘ Important:
Ceph Dashboard will (silently) fail to display Grafana output if the client browser cannot validate the Grafana server’s TLS certificate. Either ensure the signing CA certificate is known to the browser or, if in a testing environment, contact the Grafana dashboard directly and have the browser accept the unverified certificate.
Grafana should be configured with the following charm options:
juju config grafana anonymous=True
juju config grafana allow_embedding=True
The grafana charm also requires the vonage-status-panel and grafana-piechart-panel plugins. The install_plugins
configuration option should be set to include URLs from which these plugins can be downloaded. They are currently available from https://storage.googleapis.com/plugins-community. For example:
juju config grafana install_plugins="https://storage.googleapis.com/plugins-community/vonage-status-panel/release/1.0.11/vonage-status-panel-1.0.11.zip,https://storage.googleapis.com/plugins-community/grafana-piechart-panel/release/1.6.2/grafana-piechart-panel-1.6.2.zip"
Telegraf should be configured with the following charm option:
juju config telegraf hostname="{host}"
ⓘ Note:
The above command is to be invoked verbatim; no substitution is required.
Currently the dashboard does not auto-detect the API endpoint of the Grafana service. It needs to be provided via a configuration option:
juju config ceph-dashboard grafana-api-url="https://<IP of grafana unit>:3000"
Prometheus alerting
To enable alerting for an existing Prometheus service add the following relations:
juju add-relation ceph-dashboard:prometheus prometheus:website
juju add-relation ceph-mon:prometheus prometheus:target
juju add-relation ceph-dashboard:alertmanager-service prometheus-alertmanager:alertmanager-service
juju add-relation prometheus:alertmanager-service prometheus-alertmanager:alertmanager-service
Ceph Object storage
To enable Object storage management of an existing Ceph RADOS Gateway service add the following relation:
juju add-relation ceph-dashboard:radosgw-dashboard ceph-radosgw:radosgw-user
ⓘ Note:
For Ceph versions older than Pacific the dashboard can only be related to a single ceph-radosgw application.