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.
Deployment
We are assuming a pre-existing Ceph cluster.
Deploy the ceph-dashboard as a subordinate to the ceph-mon charm.
juju deploy --channel reef/stable ceph-dashboard
juju integrate ceph-dashboard:dashboard ceph-mon:dashboard
TLS is a requirement for this charm. Enable it by adding a relation to the vault application:
juju integrate 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 integrate 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 integrate 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 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 integrate ceph-dashboard:grafana-dashboard grafana:dashboards
juju integrate ceph-dashboard:prometheus prometheus:website
juju integrate ceph-mon:prometheus prometheus:target
juju integrate ceph-osd:juju-info telegraf:juju-info
juju integrate ceph-mon:juju-info telegraf:juju-info
Grafana, Telegraf, and Prometheus should be related in the standard way:
juju integrate grafana:grafana-source prometheus:grafana-source
juju integrate telegraf:prometheus-client prometheus:target
juju integrate 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 integrate 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 integrate ceph-dashboard:prometheus prometheus:website
juju integrate ceph-mon:prometheus prometheus:target
juju integrate ceph-dashboard:alertmanager-service prometheus-alertmanager:alertmanager-service
juju integrate 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 integrate 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.
iSCSI targets
To display information for an existing iSCSI gateway/target service add the following relation:
juju integrate ceph-iscsi:admin-access ceph-dashboard:iscsi-dashboard