Difference between revisions of "ZenPack:Ceph"

From Zenoss Wiki
Jump to: navigation, search
Line 5: Line 5:
|Organization=Zenoss, Inc.
|Organization=Zenoss, Inc.
|ZenPack name=ZenPacks.zenoss.Ceph
|ZenPack name=ZenPacks.zenoss.Ceph

Revision as of 15:11, 1 March 2016

Note: This ZenPack is available in commercial versions of Zenoss. Click here to request more information about this commercial ZenPack. Click here to see all commercial ZenPacks.

Current Maintainer(s)
Zenoss, Inc.
ZenPack name

Applications Monitored: 

Ceph ZenPack

Ceph is a distributed object store and file system.


The ZenPack Catalog has moved to its new home at https://www.zenoss.com/product/zenpacks as of January 17, 2017. The following information may be out of date, and this page will eventually be removed.


This ZenPack is included with commercial versions of Zenoss and enterprise support for this ZenPack is provided to Zenoss customers with an active subscription.


Version 1.0.0- Download
Released on 2016/01/22
Requires PythonCollector ZenPack
Compatible with Zenoss Resource Manager 5.0.x


This ZenPack monitors the Ceph storage clustering system using the Calamari API system. Calamari setup is covered here. You must have access both the Calamari and Graphite APIs which are bundled into the Calamari packages. Calamari has other dependencies that must be installed on the Ceph cluster.

Bulbgraph.png Note: Although this ZenPack has support for RBDs and Snapshots, this requires the RBD support in the forthcoming Calamari release. An experimental Calamari version with RBD support can be installed from this source branch.


  • Ceph version 0.94.5+ (Hammer+)
  • Calamari version



Ceph features include:

  • Overall Cluster Health Monitoring
  • Health Monitoring for Monitors, OSD's, MDS's and Hosts
  • Graphs for key Ceph settings and performance metrics
  • Service Impact and root cause analysis. (Requires Zenoss Service Dynamics)
  • Event Management

Ceph Structure and Discovery

The ZenPack class structure can be visualized in the following Diagram:

Ceph ZP Class Structure

Detailed ZenPack Class Structure

Objects are automatically discovered via Calamari API. These objects are:

Hosts (CephHost)
  • Description: Hosts that various Ceph services run on
  • Attributes: fqdn, ceph_hostname, ceph_version, managed, frontend_addr, frontend_iface, backend_addr, backend_iface: Cluster facing interface, services: Services managed on host
  • Relationships: cephEndpoint, cephServices
  • Datasources:
    • alerts/events
      • Events: Late Reporting, Rebooted, Regained Contact
    • host-data
      • Datapoints: cpu.total.idle, cpu.total.system, cpu.total.iowait, diskspace.root.byte_used, diskspace.root.byte_free, diskspace.root.byte_avail, memory.Active, memory.MemFree, memory.MemTotal
  • Graphs:
    • Idle Cpu
    • CPU IO Wait
    • Disk Space
    • Memory Utilization

Ceph Clusters (CephCluster)
  • Description: The cluster component. Ceph can host multiple clusters.
  • Attributes: Status: Health Status, FSID: The cluster ID, Cluster Name
  • Relationships: cephEndpoint, cephClusterComponents
  • Datasources:
    • alerts/events
      • Events: Health Warn, Health Ok, Regained Contact, Late Reporting
    • cluster-data
      • Datapoints: total_bytes, total_avail_bytes, total_used_bytes
  • Graphs:
    • Total Space
    • cluster-pg-data
      • Datapoints: active, backfill_toofull, backfilling, clean, creating, degraded, down, inactive, incomplete, inconsistent, peering, recovering, recovery_wait, remapped, repair, replay, scrubbing, splitting, stale, undersized, wait_backfill
  • Graphs:
    • PG States
Ceph Monitors (CephMon)
  • Description: Creates and monitors all Ceph services and health
  • Attributes: rank in_quorum, public_ipaddr, public_port, running, status
  • Relationships: cephCluster, cephHost
  • Datasources:
    • alerts/events
      • Events: Joined Quorum, Left Quorum
    • mon-data
      • Datapoints: cluster.num_mon, cluster.num_mon_quorum, mon.election_call, mon.election_win, mon.election_lose, mon.num_elections
  • Graphs:
    • Monitors in Quorum
    • Elections

Ceph Object Storage Daemon (CephOSD)
  • Description: Service that provides raw storage to Ceph
  • Attributes: status, ceph_uuid, up, in, reweight, public_ipaddr, public_port, cluster_ipaddr, cluster_port
  • Relationships: cephCluster, cephHost, cephPools
  • Datasources:
    • alerts/events
      • Events: OSD Down, OSD Up
    • osd-data
      • Datapoints: num_osd, num_osd_in, num_osd_up, osd_byte, osd_bytes_avail, osd_bytes_used
  • Graphs:
    • OSD's In and Up
    • Disk Space

Pools (CephPool)
  • Description: The basic Ceph logical areas that data is organized into
  • Attributes: status
  • Relationships: cephCluster, cephOSDs, cephMDSs, cephRBDs, cephSnaps, cephFS, cephRGW
  • Datasources:
    • pool-data
      • Datapoints: num_objects, num_objects_degraded, num_objects_dirty, num_objects_misplaced, num_objects_missing_on_primary, num_objects_recovered, num_objects_clones, num_read_kb, num_write_kb, num_scrub_errors
  • Graphs:
    • Bytes Read-Write
    • Dirty Objects
    • Misplaced Objects
    • Objects Recovered

Ceph Filesystem (CephFS)
  • Description: Global filesystem
  • Attributes: mds_pool, data_pools
  • Relationships:
    • cephCluster
    • cephMDSs
    • cephPools
  • Datasources: None

Ceph Metadata Servers (CephMDS)
  • Description: Service provides all meta-data to CephFS files and objects. It is currently modeled as a single service which requires at least max_mds active servers and one standby server.
  • Attributes: created, enabled, epoch, flags, last_failure, last_failure_osd_epoch, max_file_size, max_mds, modified, root, session_autoclose, session_timeout, tableserver
  • Relationships: cephCluster, cephPools, cephFS
  • Datasources:
    • mds: MDS Events and State Changes
      • Events: Active Damons, Standby Daemons
      • Datapoints: total_count, up_count, in_count, failed_count, stopped_count, max_mds, active_count, standby_count, other_count, datapool_count, epoch, first_committed, last_committed
  • Graphs:
    • MDS Daemons States: Note: Due to current limiations in Ceph, Totals won't sum to the subgroups of this graph.
    • MDS Daemon Secondary States

Ceph RADOS Block Device (CephRBD)
  • Description: Block devices exported to systems as disk images
  • Attributes: parent: (If COW image), size
  • Relationships: cephCluster, cephPool, cephSnaps
  • Datasources: None

Ceph Snapshots(CephSnap)
  • Description: Snapshot block devices for backups and copy-on-write (COW) images
  • Attributes: size, protected
  • Relationships: cephCluster, cephPool, cephRBD
  • Datasources: None


  • Ceph (Hammer or newer)
  • Calamari (Version 1.3.1 or newer)
  • Calamari credentials
  • Administrative credentials for your Ceph cluster


Device Setup via UI

Installation consists of the following steps:

  • Ensure all prerequisite ZenPacks are installed
  • Install the Ceph ZenPack on Zenoss
  • Restart all Zenoss Services
  • Install the target device in Zenoss:
    • Go to Infrastructure tab
    • Add Ceph Endpoint, set properties as follows:
      • Device Name: Use a unique name for the endpoint
      • Calamari Host IP
      • Calamari User Name: See zCephCalamariUsername
      • Calamari Password: See zCephCalamariPassword
      • Collector: Choose the appropriate Collector.

Batch Configuration

You can also add your devices in batch for convenience and automation.

  • Attach to the Zope container:
 serviced service attach zope
  • Create a text file (filename: /tmp/ceph.txt). Each server should have a stanza like
ceph zCephCalamariUrl='http://calamari.fqdn/api/v2', \
     zCephCalamariUsername='username', \
     zCephCalamariPassword='password', \
  • Run the zenbatchload command:
 zenbatchload /tmp/ceph.txt
  • The Ceph device should be modeled automatically

Host Discovery

If you have set zCephDiscoverHosts to true, then the first time you visit the *Hosts* components, each host listed there will be created as a device of type zCephHostDeviceClass.

These hosts will not be modeled until you provide the appropriate zProperties in each host so that the modeler can have proper access.

If your hosts already exist, they must have the same Hostname that Ceph believes them to be, either from Ceph's DNS servers for from /etc/hosts files. To avoid having multiple versions of the hosts, you should first remove the hosts from Zenoss prior to installing your first Ceph cluster.

Installed Items

Installing this ZenPack will add the following items to your Zenoss system:

Configuration and zProperties

The zProperties and example format settings for the Ceph are as follows:

  • zCephCalamariUrl: URL for Clamari, format: http://calamari.fqdn/api/v2
  • zCephGraphiteUrl: URL for Graphite, format: http://calamari.fqdn/render
  • zCephCalamariUsername: <username>
  • zCephCalamariPassword: <password>
  • zCephDiscoverHosts: Set true to create Linux devices. These devices will only monitor with correct setting of their credentials.
  • zCephHostDeviceClass: Hosts with zCephDiscoverHosts set true have device class of either /Server/Linux or /Server/SSH/Linux

Modeler Plugin

  • zenoss.Ceph

Zenoss Analytics

This ZenPack provides additional support for Zenoss Analytics. Perform the following steps to install extra reporting resources into Zenoss Analytics after installing the ZenPack.

  1. Copy analytics-bundle.zip from $ZENHOME/ZenPacks/ZenPacks.zenoss.Ceph*/ZenPacks/zenoss/Ceph/analytics/ on your Zenoss server.
  2. Navigate to Zenoss Analytics in your browser.
  3. Login as superuser.
  4. Remove any existing Ceph_ZenPack folder.
    1. Choose Repository from the View menu at the top of the page.
    2. Expand Public in the list of folders.
    3. Right-click on Ceph_ZenPack folder and choose Delete.
    4. Confirm deletion by clicking OK.
  5. Add the new Ceph_ZenPack folder.
    1. Choose Server Settings from the Manage' menu at the top of the page.
    2. Choose Import in the left page.
    3. Remove checks from all check boxes.
    4. Click Choose File to import a data file.
    5. Choose the analytics-bundle.zip file copied from your Zenoss server.
    6. Click Import.

You can now navigate back to the Ceph_ZenPack folder in the repository to see the following resources added by the bundle.

  • Ceph Domain
Ad Hoc Views
  • Ceph Instance List

Domains can be used to create ad hoc views using the following steps.

  1. Choose Ad Hoc View from the Create menu.
  2. Click Domains at the top of the data chooser dialog.
  3. Expand Public then Ceph ZenPack.
  4. Choose the Ceph Domain domain

Service Impact and Root Cause Analysis

Impact Relationship Diagram
Sample Impact Diagram

When combined with the Zenoss Service Dynamics product, this ZenPack adds built-in service impact and root cause analysis capabilities for Ceph and instances. The service impact relationships shown in the diagram (right) and described below are automatically added. These will be included in any services that contain one or more of the explicitly mentioned components.

The objects that are most interesting to model are:

  • RBD's
  • Snapshots
  • Ceph FS's
  • Ceph MDS's
  • Ceph RGW's (unsupported)

To effectively model Impact for Ceph you should add the aforementioned components as follows:

  • Go to the Impact (Services) page
  • Create a Dynamic Service with appropriate name
  • Add all Ceph Enpoint objects
  • You may need to add more objects to show a more complete diagram

Impact Relationships

Component failures will affect Impact as follows:

  • Endpoint affects all Hosts
  • Host impacts Monitors, OSD's, and MDS's
  • Monitor affect Cluster
  • Cluster affects Pool
  • OSD affects Pools
  • Pool affects RBDs, Snapshots, MDS, and CephFS
  • RBD affects Snapshots
  • MDS affects CephFS


  • Initial Release


Normal Installation (packaged egg)

  1. Download the appropriate egg file for the version of Zenoss you are running.
  2. Ensure you are logged in as the zenoss user:
    $ sudo su - zenoss
  3. Install the ZenPack:
    $ zenpack --install ZenPacks.zenoss.Ceph-*.egg
  4. Restart these services:
    $ zenoss restart


Purplemarker.png New: Don't forget to add yourself to the Zenoss User Map!

blog comments powered by Disqus