Ceph is a free-software storage platform, implements object storage on a single distributed computer cluster, and provides interfaces for object-, block- and file-level storage. Ceph aims primarily for completely distributed operation without a single point of failure, scalable to the exabyte level, and freely available.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/ceph_agent2?at=release/7.4
The template to monitor Ceph cluster by Zabbix that work without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Ceph by Zabbix agent 2 — collects metrics by polling zabbix-agent2.
Zabbix version: 7.4 and higher.
This template has been tested on:
Zabbix should be configured according to the instructions in the Templates out of the box section.
Test availability: zabbix_get -s ceph-host -k ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"]
| Name | Description | Default |
|---|---|---|
| {$CEPH.USER} | zabbix |
|
| {$CEPH.API.KEY} | zabbix_pass |
|
| {$CEPH.CONNSTRING} | https://localhost:8003 |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get overall cluster status | Zabbix agent | ceph.status["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Get OSD stats | Zabbix agent | ceph.osd.stats["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Get OSD dump | Zabbix agent | ceph.osd.dump["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Get df | Zabbix agent | ceph.df.details["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ping | Zabbix agent | ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] Preprocessing
|
|
| Number of Monitors | The number of Monitors configured in a Ceph cluster. |
Dependent item | ceph.num_mon Preprocessing
|
| Overall cluster status | The overall Ceph cluster status, eg 0 - HEALTH_OK, 1 - HEALTH_WARN or 2 - HEALTH_ERR. |
Dependent item | ceph.overall_status Preprocessing
|
| Minimum Mon release version | min_mon_release_name |
Dependent item | ceph.min_mon_release_name Preprocessing
|
| Ceph Read bandwidth | The global read bytes per second. |
Dependent item | ceph.rd_bytes.rate Preprocessing
|
| Ceph Write bandwidth | The global write bytes per second. |
Dependent item | ceph.wr_bytes.rate Preprocessing
|
| Ceph Read operations per sec | The global read operations per second. |
Dependent item | ceph.rd_ops.rate Preprocessing
|
| Ceph Write operations per sec | The global write operations per second. |
Dependent item | ceph.wr_ops.rate Preprocessing
|
| Total bytes available | The total bytes available in a Ceph cluster. |
Dependent item | ceph.total_avail_bytes Preprocessing
|
| Total bytes | The total (RAW) capacity of a Ceph cluster in bytes. |
Dependent item | ceph.total_bytes Preprocessing
|
| Total bytes used | The total bytes used in a Ceph cluster. |
Dependent item | ceph.total_used_bytes Preprocessing
|
| Total number of objects | The total number of objects in a Ceph cluster. |
Dependent item | ceph.total_objects Preprocessing
|
| Number of Placement Groups | The total number of Placement Groups in a Ceph cluster. |
Dependent item | ceph.num_pg Preprocessing
|
| Number of Placement Groups in Temporary state | The total number of Placement Groups in a pg_temp state |
Dependent item | ceph.num_pg_temp Preprocessing
|
| Number of Placement Groups in Active state | The total number of Placement Groups in an active state. |
Dependent item | ceph.pg_states.active Preprocessing
|
| Number of Placement Groups in Clean state | The total number of Placement Groups in a clean state. |
Dependent item | ceph.pg_states.clean Preprocessing
|
| Number of Placement Groups in Peering state | The total number of Placement Groups in a peering state. |
Dependent item | ceph.pg_states.peering Preprocessing
|
| Number of Placement Groups in Scrubbing state | The total number of Placement Groups in a scrubbing state. |
Dependent item | ceph.pg_states.scrubbing Preprocessing
|
| Number of Placement Groups in Undersized state | The total number of Placement Groups in an undersized state. |
Dependent item | ceph.pg_states.undersized Preprocessing
|
| Number of Placement Groups in Backfilling state | The total number of Placement Groups in a backfill state. |
Dependent item | ceph.pg_states.backfilling Preprocessing
|
| Number of Placement Groups in degraded state | The total number of Placement Groups in a degraded state. |
Dependent item | ceph.pg_states.degraded Preprocessing
|
| Number of Placement Groups in inconsistent state | The total number of Placement Groups in an inconsistent state. |
Dependent item | ceph.pg_states.inconsistent Preprocessing
|
| Number of Placement Groups in Unknown state | The total number of Placement Groups in an unknown state. |
Dependent item | ceph.pg_states.unknown Preprocessing
|
| Number of Placement Groups in remapped state | The total number of Placement Groups in a remapped state. |
Dependent item | ceph.pg_states.remapped Preprocessing
|
| Number of Placement Groups in recovering state | The total number of Placement Groups in a recovering state. |
Dependent item | ceph.pg_states.recovering Preprocessing
|
| Number of Placement Groups in backfill_toofull state | The total number of Placement Groups in a backfill_toofull state. |
Dependent item | ceph.pg_states.backfill_toofull Preprocessing
|
| Number of Placement Groups in backfill_wait state | The total number of Placement Groups in a backfill_wait state. |
Dependent item | ceph.pg_states.backfill_wait Preprocessing
|
| Number of Placement Groups in recovery_wait state | The total number of Placement Groups in a recovery_wait state. |
Dependent item | ceph.pg_states.recovery_wait Preprocessing
|
| Number of Pools | The total number of pools in a Ceph cluster. |
Dependent item | ceph.num_pools Preprocessing
|
| Number of OSDs | The number of the known storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd Preprocessing
|
| Number of OSDs in state: UP | The total number of the online storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_up Preprocessing
|
| Number of OSDs in state: IN | The total number of the participating storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_in Preprocessing
|
| Ceph OSD avg fill | The average fill of OSDs. |
Dependent item | ceph.osd_fill.avg Preprocessing
|
| Ceph OSD max fill | The percentage of the most filled OSD. |
Dependent item | ceph.osd_fill.max Preprocessing
|
| Ceph OSD min fill | The percentage fill of the minimum filled OSD. |
Dependent item | ceph.osd_fill.min Preprocessing
|
| Ceph OSD max PGs | The maximum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.max Preprocessing
|
| Ceph OSD min PGs | The minimum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.min Preprocessing
|
| Ceph OSD avg PGs | The average amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.avg Preprocessing
|
| Ceph OSD Apply latency Avg | The average apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.avg Preprocessing
|
| Ceph OSD Apply latency Max | The maximum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.max Preprocessing
|
| Ceph OSD Apply latency Min | The minimum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.min Preprocessing
|
| Ceph OSD Commit latency Avg | The average commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.avg Preprocessing
|
| Ceph OSD Commit latency Max | The maximum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.max Preprocessing
|
| Ceph OSD Commit latency Min | The minimum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.min Preprocessing
|
| Ceph backfill full ratio | The backfill full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_backfillfull_ratio Preprocessing
|
| Ceph full ratio | The full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_full_ratio Preprocessing
|
| Ceph nearfull ratio | The near full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_nearfull_ratio Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: Can not connect to cluster | The connection to the Ceph RESTful module is broken (if there is any error presented including AUTH and the configuration issues). |
last(/Ceph by Zabbix agent 2/ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"])=0 |
Average | |
| Ceph: Cluster in ERROR state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=2 |
Average | Manual close: Yes | |
| Ceph: Cluster in WARNING state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=1 |
Warning | Manual close: Yes Depends on:
|
|
| Ceph: Minimum monitor release version has changed | A Ceph version has changed. Acknowledge to close the problem manually. |
last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#1)<>last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#2) and length(last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name))>0 |
Info | Manual close: Yes |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| OSD | Zabbix agent | ceph.osd.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| [osd.{#OSDNAME}] OSD in | Dependent item | ceph.osd[{#OSDNAME},in] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD up | Dependent item | ceph.osd[{#OSDNAME},up] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD PGs | Dependent item | ceph.osd[{#OSDNAME},num_pgs] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD fill | Dependent item | ceph.osd[{#OSDNAME},fill] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD latency apply | The time taken to flush an update to disks. |
Dependent item | ceph.osd[{#OSDNAME},latency_apply] Preprocessing
|
| [osd.{#OSDNAME}] OSD latency commit | The time taken to commit an operation to the journal. |
Dependent item | ceph.osd[{#OSDNAME},latency_commit] Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: OSD osd.{#OSDNAME} is down | OSD osd.{#OSDNAME} is marked "down" in the osdmap. |
last(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},up]) = 0 |
Average | |
| Ceph: OSD osd.{#OSDNAME} is full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_full_ratio)*100 |
Average | ||
| Ceph: Ceph OSD osd.{#OSDNAME} is near full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_nearfull_ratio)*100 |
Warning | Depends on:
|
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Pool | Zabbix agent | ceph.pool.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| [{#POOLNAME}] Pool Used | The total bytes used in a pool. |
Dependent item | ceph.pool["{#POOLNAME}",bytes_used] Preprocessing
|
| [{#POOLNAME}] Max available | The maximum available space in the given pool. |
Dependent item | ceph.pool["{#POOLNAME}",max_avail] Preprocessing
|
| [{#POOLNAME}] Pool RAW Used | Bytes used in pool including the copies made. |
Dependent item | ceph.pool["{#POOLNAME}",stored_raw] Preprocessing
|
| [{#POOLNAME}] Pool Percent Used | The percentage of the storage used per pool. |
Dependent item | ceph.pool["{#POOLNAME}",percent_used] Preprocessing
|
| [{#POOLNAME}] Pool objects | The number of objects in the pool. |
Dependent item | ceph.pool["{#POOLNAME}",objects] Preprocessing
|
| [{#POOLNAME}] Pool Read bandwidth | The read rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_bytes.rate] Preprocessing
|
| [{#POOLNAME}] Pool Write bandwidth | The write rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_bytes.rate] Preprocessing
|
| [{#POOLNAME}] Pool Read operations | The read rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_ops.rate] Preprocessing
|
| [{#POOLNAME}] Pool Write operations | The write rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_ops.rate] Preprocessing
|
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/ceph_agent2?at=release/7.2
The template to monitor Ceph cluster by Zabbix that work without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Ceph by Zabbix agent 2 — collects metrics by polling zabbix-agent2.
Zabbix version: 7.2 and higher.
This template has been tested on:
Zabbix should be configured according to the instructions in the Templates out of the box section.
Test availability: zabbix_get -s ceph-host -k ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"]
| Name | Description | Default |
|---|---|---|
| {$CEPH.USER} | zabbix |
|
| {$CEPH.API.KEY} | zabbix_pass |
|
| {$CEPH.CONNSTRING} | https://localhost:8003 |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get overall cluster status | Zabbix agent | ceph.status["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Get OSD stats | Zabbix agent | ceph.osd.stats["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Get OSD dump | Zabbix agent | ceph.osd.dump["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Get df | Zabbix agent | ceph.df.details["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ping | Zabbix agent | ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] Preprocessing
|
|
| Number of Monitors | The number of Monitors configured in a Ceph cluster. |
Dependent item | ceph.num_mon Preprocessing
|
| Overall cluster status | The overall Ceph cluster status, eg 0 - HEALTH_OK, 1 - HEALTH_WARN or 2 - HEALTH_ERR. |
Dependent item | ceph.overall_status Preprocessing
|
| Minimum Mon release version | min_mon_release_name |
Dependent item | ceph.min_mon_release_name Preprocessing
|
| Ceph Read bandwidth | The global read bytes per second. |
Dependent item | ceph.rd_bytes.rate Preprocessing
|
| Ceph Write bandwidth | The global write bytes per second. |
Dependent item | ceph.wr_bytes.rate Preprocessing
|
| Ceph Read operations per sec | The global read operations per second. |
Dependent item | ceph.rd_ops.rate Preprocessing
|
| Ceph Write operations per sec | The global write operations per second. |
Dependent item | ceph.wr_ops.rate Preprocessing
|
| Total bytes available | The total bytes available in a Ceph cluster. |
Dependent item | ceph.total_avail_bytes Preprocessing
|
| Total bytes | The total (RAW) capacity of a Ceph cluster in bytes. |
Dependent item | ceph.total_bytes Preprocessing
|
| Total bytes used | The total bytes used in a Ceph cluster. |
Dependent item | ceph.total_used_bytes Preprocessing
|
| Total number of objects | The total number of objects in a Ceph cluster. |
Dependent item | ceph.total_objects Preprocessing
|
| Number of Placement Groups | The total number of Placement Groups in a Ceph cluster. |
Dependent item | ceph.num_pg Preprocessing
|
| Number of Placement Groups in Temporary state | The total number of Placement Groups in a pg_temp state |
Dependent item | ceph.num_pg_temp Preprocessing
|
| Number of Placement Groups in Active state | The total number of Placement Groups in an active state. |
Dependent item | ceph.pg_states.active Preprocessing
|
| Number of Placement Groups in Clean state | The total number of Placement Groups in a clean state. |
Dependent item | ceph.pg_states.clean Preprocessing
|
| Number of Placement Groups in Peering state | The total number of Placement Groups in a peering state. |
Dependent item | ceph.pg_states.peering Preprocessing
|
| Number of Placement Groups in Scrubbing state | The total number of Placement Groups in a scrubbing state. |
Dependent item | ceph.pg_states.scrubbing Preprocessing
|
| Number of Placement Groups in Undersized state | The total number of Placement Groups in an undersized state. |
Dependent item | ceph.pg_states.undersized Preprocessing
|
| Number of Placement Groups in Backfilling state | The total number of Placement Groups in a backfill state. |
Dependent item | ceph.pg_states.backfilling Preprocessing
|
| Number of Placement Groups in degraded state | The total number of Placement Groups in a degraded state. |
Dependent item | ceph.pg_states.degraded Preprocessing
|
| Number of Placement Groups in inconsistent state | The total number of Placement Groups in an inconsistent state. |
Dependent item | ceph.pg_states.inconsistent Preprocessing
|
| Number of Placement Groups in Unknown state | The total number of Placement Groups in an unknown state. |
Dependent item | ceph.pg_states.unknown Preprocessing
|
| Number of Placement Groups in remapped state | The total number of Placement Groups in a remapped state. |
Dependent item | ceph.pg_states.remapped Preprocessing
|
| Number of Placement Groups in recovering state | The total number of Placement Groups in a recovering state. |
Dependent item | ceph.pg_states.recovering Preprocessing
|
| Number of Placement Groups in backfill_toofull state | The total number of Placement Groups in a backfill_toofull state. |
Dependent item | ceph.pg_states.backfill_toofull Preprocessing
|
| Number of Placement Groups in backfill_wait state | The total number of Placement Groups in a backfill_wait state. |
Dependent item | ceph.pg_states.backfill_wait Preprocessing
|
| Number of Placement Groups in recovery_wait state | The total number of Placement Groups in a recovery_wait state. |
Dependent item | ceph.pg_states.recovery_wait Preprocessing
|
| Number of Pools | The total number of pools in a Ceph cluster. |
Dependent item | ceph.num_pools Preprocessing
|
| Number of OSDs | The number of the known storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd Preprocessing
|
| Number of OSDs in state: UP | The total number of the online storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_up Preprocessing
|
| Number of OSDs in state: IN | The total number of the participating storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_in Preprocessing
|
| Ceph OSD avg fill | The average fill of OSDs. |
Dependent item | ceph.osd_fill.avg Preprocessing
|
| Ceph OSD max fill | The percentage of the most filled OSD. |
Dependent item | ceph.osd_fill.max Preprocessing
|
| Ceph OSD min fill | The percentage fill of the minimum filled OSD. |
Dependent item | ceph.osd_fill.min Preprocessing
|
| Ceph OSD max PGs | The maximum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.max Preprocessing
|
| Ceph OSD min PGs | The minimum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.min Preprocessing
|
| Ceph OSD avg PGs | The average amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.avg Preprocessing
|
| Ceph OSD Apply latency Avg | The average apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.avg Preprocessing
|
| Ceph OSD Apply latency Max | The maximum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.max Preprocessing
|
| Ceph OSD Apply latency Min | The minimum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.min Preprocessing
|
| Ceph OSD Commit latency Avg | The average commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.avg Preprocessing
|
| Ceph OSD Commit latency Max | The maximum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.max Preprocessing
|
| Ceph OSD Commit latency Min | The minimum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.min Preprocessing
|
| Ceph backfill full ratio | The backfill full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_backfillfull_ratio Preprocessing
|
| Ceph full ratio | The full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_full_ratio Preprocessing
|
| Ceph nearfull ratio | The near full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_nearfull_ratio Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: Can not connect to cluster | The connection to the Ceph RESTful module is broken (if there is any error presented including AUTH and the configuration issues). |
last(/Ceph by Zabbix agent 2/ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"])=0 |
Average | |
| Ceph: Cluster in ERROR state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=2 |
Average | Manual close: Yes | |
| Ceph: Cluster in WARNING state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=1 |
Warning | Manual close: Yes Depends on:
|
|
| Ceph: Minimum monitor release version has changed | A Ceph version has changed. Acknowledge to close the problem manually. |
last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#1)<>last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#2) and length(last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name))>0 |
Info | Manual close: Yes |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| OSD | Zabbix agent | ceph.osd.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| [osd.{#OSDNAME}] OSD in | Dependent item | ceph.osd[{#OSDNAME},in] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD up | Dependent item | ceph.osd[{#OSDNAME},up] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD PGs | Dependent item | ceph.osd[{#OSDNAME},num_pgs] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD fill | Dependent item | ceph.osd[{#OSDNAME},fill] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD latency apply | The time taken to flush an update to disks. |
Dependent item | ceph.osd[{#OSDNAME},latency_apply] Preprocessing
|
| [osd.{#OSDNAME}] OSD latency commit | The time taken to commit an operation to the journal. |
Dependent item | ceph.osd[{#OSDNAME},latency_commit] Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: OSD osd.{#OSDNAME} is down | OSD osd.{#OSDNAME} is marked "down" in the osdmap. |
last(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},up]) = 0 |
Average | |
| Ceph: OSD osd.{#OSDNAME} is full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_full_ratio)*100 |
Average | ||
| Ceph: Ceph OSD osd.{#OSDNAME} is near full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_nearfull_ratio)*100 |
Warning | Depends on:
|
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Pool | Zabbix agent | ceph.pool.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| [{#POOLNAME}] Pool Used | The total bytes used in a pool. |
Dependent item | ceph.pool["{#POOLNAME}",bytes_used] Preprocessing
|
| [{#POOLNAME}] Max available | The maximum available space in the given pool. |
Dependent item | ceph.pool["{#POOLNAME}",max_avail] Preprocessing
|
| [{#POOLNAME}] Pool RAW Used | Bytes used in pool including the copies made. |
Dependent item | ceph.pool["{#POOLNAME}",stored_raw] Preprocessing
|
| [{#POOLNAME}] Pool Percent Used | The percentage of the storage used per pool. |
Dependent item | ceph.pool["{#POOLNAME}",percent_used] Preprocessing
|
| [{#POOLNAME}] Pool objects | The number of objects in the pool. |
Dependent item | ceph.pool["{#POOLNAME}",objects] Preprocessing
|
| [{#POOLNAME}] Pool Read bandwidth | The read rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_bytes.rate] Preprocessing
|
| [{#POOLNAME}] Pool Write bandwidth | The write rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_bytes.rate] Preprocessing
|
| [{#POOLNAME}] Pool Read operations | The read rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_ops.rate] Preprocessing
|
| [{#POOLNAME}] Pool Write operations | The write rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_ops.rate] Preprocessing
|
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/ceph_agent2?at=release/7.0
The template to monitor Ceph cluster by Zabbix that work without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Ceph by Zabbix agent 2 — collects metrics by polling zabbix-agent2.
Zabbix version: 7.0 and higher.
This template has been tested on:
Zabbix should be configured according to the instructions in the Templates out of the box section.
Test availability: zabbix_get -s ceph-host -k ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"]
| Name | Description | Default |
|---|---|---|
| {$CEPH.USER} | zabbix |
|
| {$CEPH.API.KEY} | zabbix_pass |
|
| {$CEPH.CONNSTRING} | https://localhost:8003 |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get overall cluster status | Zabbix agent | ceph.status["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Get OSD stats | Zabbix agent | ceph.osd.stats["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Get OSD dump | Zabbix agent | ceph.osd.dump["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Get df | Zabbix agent | ceph.df.details["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ping | Zabbix agent | ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] Preprocessing
|
|
| Number of Monitors | The number of Monitors configured in a Ceph cluster. |
Dependent item | ceph.num_mon Preprocessing
|
| Overall cluster status | The overall Ceph cluster status, eg 0 - HEALTH_OK, 1 - HEALTH_WARN or 2 - HEALTH_ERR. |
Dependent item | ceph.overall_status Preprocessing
|
| Minimum Mon release version | min_mon_release_name |
Dependent item | ceph.min_mon_release_name Preprocessing
|
| Ceph Read bandwidth | The global read bytes per second. |
Dependent item | ceph.rd_bytes.rate Preprocessing
|
| Ceph Write bandwidth | The global write bytes per second. |
Dependent item | ceph.wr_bytes.rate Preprocessing
|
| Ceph Read operations per sec | The global read operations per second. |
Dependent item | ceph.rd_ops.rate Preprocessing
|
| Ceph Write operations per sec | The global write operations per second. |
Dependent item | ceph.wr_ops.rate Preprocessing
|
| Total bytes available | The total bytes available in a Ceph cluster. |
Dependent item | ceph.total_avail_bytes Preprocessing
|
| Total bytes | The total (RAW) capacity of a Ceph cluster in bytes. |
Dependent item | ceph.total_bytes Preprocessing
|
| Total bytes used | The total bytes used in a Ceph cluster. |
Dependent item | ceph.total_used_bytes Preprocessing
|
| Total number of objects | The total number of objects in a Ceph cluster. |
Dependent item | ceph.total_objects Preprocessing
|
| Number of Placement Groups | The total number of Placement Groups in a Ceph cluster. |
Dependent item | ceph.num_pg Preprocessing
|
| Number of Placement Groups in Temporary state | The total number of Placement Groups in a pg_temp state |
Dependent item | ceph.num_pg_temp Preprocessing
|
| Number of Placement Groups in Active state | The total number of Placement Groups in an active state. |
Dependent item | ceph.pg_states.active Preprocessing
|
| Number of Placement Groups in Clean state | The total number of Placement Groups in a clean state. |
Dependent item | ceph.pg_states.clean Preprocessing
|
| Number of Placement Groups in Peering state | The total number of Placement Groups in a peering state. |
Dependent item | ceph.pg_states.peering Preprocessing
|
| Number of Placement Groups in Scrubbing state | The total number of Placement Groups in a scrubbing state. |
Dependent item | ceph.pg_states.scrubbing Preprocessing
|
| Number of Placement Groups in Undersized state | The total number of Placement Groups in an undersized state. |
Dependent item | ceph.pg_states.undersized Preprocessing
|
| Number of Placement Groups in Backfilling state | The total number of Placement Groups in a backfill state. |
Dependent item | ceph.pg_states.backfilling Preprocessing
|
| Number of Placement Groups in degraded state | The total number of Placement Groups in a degraded state. |
Dependent item | ceph.pg_states.degraded Preprocessing
|
| Number of Placement Groups in inconsistent state | The total number of Placement Groups in an inconsistent state. |
Dependent item | ceph.pg_states.inconsistent Preprocessing
|
| Number of Placement Groups in Unknown state | The total number of Placement Groups in an unknown state. |
Dependent item | ceph.pg_states.unknown Preprocessing
|
| Number of Placement Groups in remapped state | The total number of Placement Groups in a remapped state. |
Dependent item | ceph.pg_states.remapped Preprocessing
|
| Number of Placement Groups in recovering state | The total number of Placement Groups in a recovering state. |
Dependent item | ceph.pg_states.recovering Preprocessing
|
| Number of Placement Groups in backfill_toofull state | The total number of Placement Groups in a backfill_toofull state. |
Dependent item | ceph.pg_states.backfill_toofull Preprocessing
|
| Number of Placement Groups in backfill_wait state | The total number of Placement Groups in a backfill_wait state. |
Dependent item | ceph.pg_states.backfill_wait Preprocessing
|
| Number of Placement Groups in recovery_wait state | The total number of Placement Groups in a recovery_wait state. |
Dependent item | ceph.pg_states.recovery_wait Preprocessing
|
| Number of Pools | The total number of pools in a Ceph cluster. |
Dependent item | ceph.num_pools Preprocessing
|
| Number of OSDs | The number of the known storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd Preprocessing
|
| Number of OSDs in state: UP | The total number of the online storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_up Preprocessing
|
| Number of OSDs in state: IN | The total number of the participating storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_in Preprocessing
|
| Ceph OSD avg fill | The average fill of OSDs. |
Dependent item | ceph.osd_fill.avg Preprocessing
|
| Ceph OSD max fill | The percentage of the most filled OSD. |
Dependent item | ceph.osd_fill.max Preprocessing
|
| Ceph OSD min fill | The percentage fill of the minimum filled OSD. |
Dependent item | ceph.osd_fill.min Preprocessing
|
| Ceph OSD max PGs | The maximum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.max Preprocessing
|
| Ceph OSD min PGs | The minimum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.min Preprocessing
|
| Ceph OSD avg PGs | The average amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.avg Preprocessing
|
| Ceph OSD Apply latency Avg | The average apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.avg Preprocessing
|
| Ceph OSD Apply latency Max | The maximum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.max Preprocessing
|
| Ceph OSD Apply latency Min | The minimum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.min Preprocessing
|
| Ceph OSD Commit latency Avg | The average commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.avg Preprocessing
|
| Ceph OSD Commit latency Max | The maximum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.max Preprocessing
|
| Ceph OSD Commit latency Min | The minimum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.min Preprocessing
|
| Ceph backfill full ratio | The backfill full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_backfillfull_ratio Preprocessing
|
| Ceph full ratio | The full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_full_ratio Preprocessing
|
| Ceph nearfull ratio | The near full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_nearfull_ratio Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: Can not connect to cluster | The connection to the Ceph RESTful module is broken (if there is any error presented including AUTH and the configuration issues). |
last(/Ceph by Zabbix agent 2/ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"])=0 |
Average | |
| Ceph: Cluster in ERROR state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=2 |
Average | Manual close: Yes | |
| Ceph: Cluster in WARNING state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=1 |
Warning | Manual close: Yes Depends on:
|
|
| Ceph: Minimum monitor release version has changed | A Ceph version has changed. Acknowledge to close the problem manually. |
last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#1)<>last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#2) and length(last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name))>0 |
Info | Manual close: Yes |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| OSD | Zabbix agent | ceph.osd.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| [osd.{#OSDNAME}] OSD in | Dependent item | ceph.osd[{#OSDNAME},in] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD up | Dependent item | ceph.osd[{#OSDNAME},up] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD PGs | Dependent item | ceph.osd[{#OSDNAME},num_pgs] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD fill | Dependent item | ceph.osd[{#OSDNAME},fill] Preprocessing
|
|
| [osd.{#OSDNAME}] OSD latency apply | The time taken to flush an update to disks. |
Dependent item | ceph.osd[{#OSDNAME},latency_apply] Preprocessing
|
| [osd.{#OSDNAME}] OSD latency commit | The time taken to commit an operation to the journal. |
Dependent item | ceph.osd[{#OSDNAME},latency_commit] Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: OSD osd.{#OSDNAME} is down | OSD osd.{#OSDNAME} is marked "down" in the osdmap. |
last(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},up]) = 0 |
Average | |
| Ceph: OSD osd.{#OSDNAME} is full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_full_ratio)*100 |
Average | ||
| Ceph: Ceph OSD osd.{#OSDNAME} is near full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_nearfull_ratio)*100 |
Warning | Depends on:
|
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Pool | Zabbix agent | ceph.pool.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| [{#POOLNAME}] Pool Used | The total bytes used in a pool. |
Dependent item | ceph.pool["{#POOLNAME}",bytes_used] Preprocessing
|
| [{#POOLNAME}] Max available | The maximum available space in the given pool. |
Dependent item | ceph.pool["{#POOLNAME}",max_avail] Preprocessing
|
| [{#POOLNAME}] Pool RAW Used | Bytes used in pool including the copies made. |
Dependent item | ceph.pool["{#POOLNAME}",stored_raw] Preprocessing
|
| [{#POOLNAME}] Pool Percent Used | The percentage of the storage used per pool. |
Dependent item | ceph.pool["{#POOLNAME}",percent_used] Preprocessing
|
| [{#POOLNAME}] Pool objects | The number of objects in the pool. |
Dependent item | ceph.pool["{#POOLNAME}",objects] Preprocessing
|
| [{#POOLNAME}] Pool Read bandwidth | The read rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_bytes.rate] Preprocessing
|
| [{#POOLNAME}] Pool Write bandwidth | The write rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_bytes.rate] Preprocessing
|
| [{#POOLNAME}] Pool Read operations | The read rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_ops.rate] Preprocessing
|
| [{#POOLNAME}] Pool Write operations | The write rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_ops.rate] Preprocessing
|
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/ceph_agent2?at=release/6.4
The template to monitor Ceph cluster by Zabbix that work without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Ceph by Zabbix agent 2 — collects metrics by polling zabbix-agent2.
Zabbix version: 6.4 and higher.
This template has been tested on:
Zabbix should be configured according to the instructions in the Templates out of the box section.
Test availability: zabbix_get -s ceph-host -k ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"]
| Name | Description | Default |
|---|---|---|
| {$CEPH.USER} | zabbix |
|
| {$CEPH.API.KEY} | zabbix_pass |
|
| {$CEPH.CONNSTRING} | https://localhost:8003 |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Ceph: Get overall cluster status | Zabbix agent | ceph.status["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ceph: Get OSD stats | Zabbix agent | ceph.osd.stats["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ceph: Get OSD dump | Zabbix agent | ceph.osd.dump["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ceph: Get df | Zabbix agent | ceph.df.details["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ceph: Ping | Zabbix agent | ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] Preprocessing
|
|
| Ceph: Number of Monitors | The number of Monitors configured in a Ceph cluster. |
Dependent item | ceph.num_mon Preprocessing
|
| Ceph: Overall cluster status | The overall Ceph cluster status, eg 0 - HEALTH_OK, 1 - HEALTH_WARN or 2 - HEALTH_ERR. |
Dependent item | ceph.overall_status Preprocessing
|
| Ceph: Minimum Mon release version | min_mon_release_name |
Dependent item | ceph.min_mon_release_name Preprocessing
|
| Ceph: Ceph Read bandwidth | The global read bytes per second. |
Dependent item | ceph.rd_bytes.rate Preprocessing
|
| Ceph: Ceph Write bandwidth | The global write bytes per second. |
Dependent item | ceph.wr_bytes.rate Preprocessing
|
| Ceph: Ceph Read operations per sec | The global read operations per second. |
Dependent item | ceph.rd_ops.rate Preprocessing
|
| Ceph: Ceph Write operations per sec | The global write operations per second. |
Dependent item | ceph.wr_ops.rate Preprocessing
|
| Ceph: Total bytes available | The total bytes available in a Ceph cluster. |
Dependent item | ceph.total_avail_bytes Preprocessing
|
| Ceph: Total bytes | The total (RAW) capacity of a Ceph cluster in bytes. |
Dependent item | ceph.total_bytes Preprocessing
|
| Ceph: Total bytes used | The total bytes used in a Ceph cluster. |
Dependent item | ceph.total_used_bytes Preprocessing
|
| Ceph: Total number of objects | The total number of objects in a Ceph cluster. |
Dependent item | ceph.total_objects Preprocessing
|
| Ceph: Number of Placement Groups | The total number of Placement Groups in a Ceph cluster. |
Dependent item | ceph.num_pg Preprocessing
|
| Ceph: Number of Placement Groups in Temporary state | The total number of Placement Groups in a pg_temp state |
Dependent item | ceph.num_pg_temp Preprocessing
|
| Ceph: Number of Placement Groups in Active state | The total number of Placement Groups in an active state. |
Dependent item | ceph.pg_states.active Preprocessing
|
| Ceph: Number of Placement Groups in Clean state | The total number of Placement Groups in a clean state. |
Dependent item | ceph.pg_states.clean Preprocessing
|
| Ceph: Number of Placement Groups in Peering state | The total number of Placement Groups in a peering state. |
Dependent item | ceph.pg_states.peering Preprocessing
|
| Ceph: Number of Placement Groups in Scrubbing state | The total number of Placement Groups in a scrubbing state. |
Dependent item | ceph.pg_states.scrubbing Preprocessing
|
| Ceph: Number of Placement Groups in Undersized state | The total number of Placement Groups in an undersized state. |
Dependent item | ceph.pg_states.undersized Preprocessing
|
| Ceph: Number of Placement Groups in Backfilling state | The total number of Placement Groups in a backfill state. |
Dependent item | ceph.pg_states.backfilling Preprocessing
|
| Ceph: Number of Placement Groups in degraded state | The total number of Placement Groups in a degraded state. |
Dependent item | ceph.pg_states.degraded Preprocessing
|
| Ceph: Number of Placement Groups in inconsistent state | The total number of Placement Groups in an inconsistent state. |
Dependent item | ceph.pg_states.inconsistent Preprocessing
|
| Ceph: Number of Placement Groups in Unknown state | The total number of Placement Groups in an unknown state. |
Dependent item | ceph.pg_states.unknown Preprocessing
|
| Ceph: Number of Placement Groups in remapped state | The total number of Placement Groups in a remapped state. |
Dependent item | ceph.pg_states.remapped Preprocessing
|
| Ceph: Number of Placement Groups in recovering state | The total number of Placement Groups in a recovering state. |
Dependent item | ceph.pg_states.recovering Preprocessing
|
| Ceph: Number of Placement Groups in backfill_toofull state | The total number of Placement Groups in a backfill_toofull state. |
Dependent item | ceph.pg_states.backfill_toofull Preprocessing
|
| Ceph: Number of Placement Groups in backfill_wait state | The total number of Placement Groups in a backfill_wait state. |
Dependent item | ceph.pg_states.backfill_wait Preprocessing
|
| Ceph: Number of Placement Groups in recovery_wait state | The total number of Placement Groups in a recovery_wait state. |
Dependent item | ceph.pg_states.recovery_wait Preprocessing
|
| Ceph: Number of Pools | The total number of pools in a Ceph cluster. |
Dependent item | ceph.num_pools Preprocessing
|
| Ceph: Number of OSDs | The number of the known storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd Preprocessing
|
| Ceph: Number of OSDs in state: UP | The total number of the online storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_up Preprocessing
|
| Ceph: Number of OSDs in state: IN | The total number of the participating storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_in Preprocessing
|
| Ceph: Ceph OSD avg fill | The average fill of OSDs. |
Dependent item | ceph.osd_fill.avg Preprocessing
|
| Ceph: Ceph OSD max fill | The percentage of the most filled OSD. |
Dependent item | ceph.osd_fill.max Preprocessing
|
| Ceph: Ceph OSD min fill | The percentage fill of the minimum filled OSD. |
Dependent item | ceph.osd_fill.min Preprocessing
|
| Ceph: Ceph OSD max PGs | The maximum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.max Preprocessing
|
| Ceph: Ceph OSD min PGs | The minimum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.min Preprocessing
|
| Ceph: Ceph OSD avg PGs | The average amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.avg Preprocessing
|
| Ceph: Ceph OSD Apply latency Avg | The average apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.avg Preprocessing
|
| Ceph: Ceph OSD Apply latency Max | The maximum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.max Preprocessing
|
| Ceph: Ceph OSD Apply latency Min | The minimum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.min Preprocessing
|
| Ceph: Ceph OSD Commit latency Avg | The average commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.avg Preprocessing
|
| Ceph: Ceph OSD Commit latency Max | The maximum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.max Preprocessing
|
| Ceph: Ceph OSD Commit latency Min | The minimum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.min Preprocessing
|
| Ceph: Ceph backfill full ratio | The backfill full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_backfillfull_ratio Preprocessing
|
| Ceph: Ceph full ratio | The full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_full_ratio Preprocessing
|
| Ceph: Ceph nearfull ratio | The near full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_nearfull_ratio Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: Can not connect to cluster | The connection to the Ceph RESTful module is broken (if there is any error presented including AUTH and the configuration issues). |
last(/Ceph by Zabbix agent 2/ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"])=0 |
Average | |
| Ceph: Cluster in ERROR state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=2 |
Average | Manual close: Yes | |
| Ceph: Cluster in WARNING state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=1 |
Warning | Manual close: Yes Depends on:
|
|
| Ceph: Minimum monitor release version has changed | A Ceph version has changed. Acknowledge to close the problem manually. |
last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#1)<>last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#2) and length(last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name))>0 |
Info | Manual close: Yes |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| OSD | Zabbix agent | ceph.osd.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Ceph: [osd.{#OSDNAME}] OSD in | Dependent item | ceph.osd[{#OSDNAME},in] Preprocessing
|
|
| Ceph: [osd.{#OSDNAME}] OSD up | Dependent item | ceph.osd[{#OSDNAME},up] Preprocessing
|
|
| Ceph: [osd.{#OSDNAME}] OSD PGs | Dependent item | ceph.osd[{#OSDNAME},num_pgs] Preprocessing
|
|
| Ceph: [osd.{#OSDNAME}] OSD fill | Dependent item | ceph.osd[{#OSDNAME},fill] Preprocessing
|
|
| Ceph: [osd.{#OSDNAME}] OSD latency apply | The time taken to flush an update to disks. |
Dependent item | ceph.osd[{#OSDNAME},latency_apply] Preprocessing
|
| Ceph: [osd.{#OSDNAME}] OSD latency commit | The time taken to commit an operation to the journal. |
Dependent item | ceph.osd[{#OSDNAME},latency_commit] Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: OSD osd.{#OSDNAME} is down | OSD osd.{#OSDNAME} is marked "down" in the osdmap. |
last(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},up]) = 0 |
Average | |
| Ceph: OSD osd.{#OSDNAME} is full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_full_ratio)*100 |
Average | ||
| Ceph: Ceph OSD osd.{#OSDNAME} is near full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_nearfull_ratio)*100 |
Warning | Depends on:
|
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Pool | Zabbix agent | ceph.pool.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Ceph: [{#POOLNAME}] Pool Used | The total bytes used in a pool. |
Dependent item | ceph.pool["{#POOLNAME}",bytes_used] Preprocessing
|
| Ceph: [{#POOLNAME}] Max available | The maximum available space in the given pool. |
Dependent item | ceph.pool["{#POOLNAME}",max_avail] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool RAW Used | Bytes used in pool including the copies made. |
Dependent item | ceph.pool["{#POOLNAME}",stored_raw] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Percent Used | The percentage of the storage used per pool. |
Dependent item | ceph.pool["{#POOLNAME}",percent_used] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool objects | The number of objects in the pool. |
Dependent item | ceph.pool["{#POOLNAME}",objects] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Read bandwidth | The read rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_bytes.rate] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Write bandwidth | The write rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_bytes.rate] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Read operations | The read rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_ops.rate] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Write operations | The write rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_ops.rate] Preprocessing
|
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/ceph_agent2?at=release/6.2
For Zabbix version: 6.2 and higher. The template is designed to monitor Ceph cluster by Zabbix, which works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The template Ceph by Zabbix agent 2 — collects metrics by polling zabbix-agent2.
This template was tested on:
See Zabbix template operation for basic instructions.
Test availability: zabbix_get -s ceph-host -k ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"]
No specific Zabbix configuration is required.
| Name | Description | Default |
|---|---|---|
| {$CEPH.API.KEY} | - |
zabbix_pass |
| {$CEPH.CONNSTRING} | - |
https://localhost:8003 |
| {$CEPH.USER} | - |
zabbix |
There are no template links in this template.
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| OSD | - |
ZABBIX_PASSIVE | ceph.osd.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Pool | - |
ZABBIX_PASSIVE | ceph.pool.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Group | Name | Description | Type | Key and additional info |
|---|---|---|---|---|
| Ceph | Ceph: Ping | ZABBIX_PASSIVE | ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
|
| Ceph | Ceph: Number of Monitors | The number of Monitors configured in a Ceph cluster. |
DEPENDENT | ceph.num_mon Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Overall cluster status | The overall Ceph cluster status, eg 0 - HEALTH_OK, 1 - HEALTH_WARN or 2 - HEALTH_ERR. |
DEPENDENT | ceph.overall_status Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Minimum Mon release version | min_mon_release_name |
DEPENDENT | ceph.min_mon_release_name Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph Read bandwidth | The global read bytes per second. |
DEPENDENT | ceph.rd_bytes.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Ceph Write bandwidth | The global write bytes per second |
DEPENDENT | ceph.wr_bytes.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Ceph Read operations per sec | The global read operations per second. |
DEPENDENT | ceph.rd_ops.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Ceph Write operations per sec | The global write operations per second. |
DEPENDENT | ceph.wr_ops.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Total bytes available | The total bytes available in a Ceph cluster. |
DEPENDENT | ceph.total_avail_bytes Preprocessing: - JSONPATH: |
| Ceph | Ceph: Total bytes | The total (RAW) capacity of a Ceph cluster in bytes. |
DEPENDENT | ceph.total_bytes Preprocessing: - JSONPATH: |
| Ceph | Ceph: Total bytes used | The total bytes used in a Ceph cluster. |
DEPENDENT | ceph.total_used_bytes Preprocessing: - JSONPATH: |
| Ceph | Ceph: Total number of objects | The total number of objects in a Ceph cluster. |
DEPENDENT | ceph.total_objects Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups | The total number of Placement Groups in a Ceph cluster. |
DEPENDENT | ceph.num_pg Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Number of Placement Groups in Temporary state | The total number of Placement Groups in a pg_temp state |
DEPENDENT | ceph.num_pg_temp Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Active state | The total number of Placement Groups in an active state. |
DEPENDENT | ceph.pg_states.active Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Clean state | The total number of Placement Groups in a clean state. |
DEPENDENT | ceph.pg_states.clean Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Peering state | The total number of Placement Groups in a peering state. |
DEPENDENT | ceph.pg_states.peering Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Scrubbing state | The total number of Placement Groups in a scrubbing state. |
DEPENDENT | ceph.pg_states.scrubbing Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Undersized state | The total number of Placement Groups in an undersized state. |
DEPENDENT | ceph.pg_states.undersized Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Backfilling state | The total number of Placement Groups in a backfill state. |
DEPENDENT | ceph.pg_states.backfilling Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in degraded state | The total number of Placement Groups in a degraded state. |
DEPENDENT | ceph.pg_states.degraded Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in inconsistent state | The total number of Placement Groups in an inconsistent state. |
DEPENDENT | ceph.pg_states.inconsistent Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Unknown state | The total number of Placement Groups in an unknown state. |
DEPENDENT | ceph.pg_states.unknown Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in remapped state | The total number of Placement Groups in a remapped state. |
DEPENDENT | ceph.pg_states.remapped Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in recovering state | The total number of Placement Groups in a recovering state. |
DEPENDENT | ceph.pg_states.recovering Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in backfill_toofull state | The total number of Placement Groups in a backfill_toofull state. |
DEPENDENT | ceph.pg_states.backfill_toofull Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in backfill_wait state | The total number of Placement Groups in a backfill_wait state. |
DEPENDENT | ceph.pg_states.backfill_wait Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in recovery_wait state | The total number of Placement Groups in a recovery_wait state. |
DEPENDENT | ceph.pg_states.recovery_wait Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Pools | The total number of pools in a Ceph cluster. |
DEPENDENT | ceph.num_pools Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of OSDs | The number of the known storage daemons in a Ceph cluster. |
DEPENDENT | ceph.num_osd Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Number of OSDs in state: UP | The total number of the online storage daemons in a Ceph cluster. |
DEPENDENT | ceph.num_osd_up Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Number of OSDs in state: IN | The total number of the participating storage daemons in a Ceph cluster. |
DEPENDENT | ceph.num_osd_in Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph OSD avg fill | The average fill of OSDs. |
DEPENDENT | ceph.osd_fill.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD max fill | The percentage of the most filled OSD. |
DEPENDENT | ceph.osd_fill.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD min fill | The percentage fill of the minimum filled OSD. |
DEPENDENT | ceph.osd_fill.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD max PGs | The maximum amount of Placement Groups on OSDs. |
DEPENDENT | ceph.osd_pgs.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD min PGs | The minimum amount of Placement Groups on OSDs. |
DEPENDENT | ceph.osd_pgs.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD avg PGs | The average amount of Placement Groups on OSDs. |
DEPENDENT | ceph.osd_pgs.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Apply latency Avg | The average apply latency of OSDs. |
DEPENDENT | ceph.osd_latency_apply.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Apply latency Max | The maximum apply latency of OSDs. |
DEPENDENT | ceph.osd_latency_apply.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Apply latency Min | The minimum apply latency of OSDs. |
DEPENDENT | ceph.osd_latency_apply.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Commit latency Avg | The average commit latency of OSDs. |
DEPENDENT | ceph.osd_latency_commit.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Commit latency Max | The maximum commit latency of OSDs. |
DEPENDENT | ceph.osd_latency_commit.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Commit latency Min | The minimum commit latency of OSDs. |
DEPENDENT | ceph.osd_latency_commit.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph backfill full ratio | The backfill full ratio setting of the Ceph cluster as configured on OSDMap. |
DEPENDENT | ceph.osd_backfillfull_ratio Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph full ratio | The full ratio setting of the Ceph cluster as configured on OSDMap. |
DEPENDENT | ceph.osd_full_ratio Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph nearfull ratio | The near full ratio setting of the Ceph cluster as configured on OSDMap. |
DEPENDENT | ceph.osd_nearfull_ratio Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: [osd.{#OSDNAME}] OSD in | DEPENDENT | ceph.osd[{#OSDNAME},in] Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD up | DEPENDENT | ceph.osd[{#OSDNAME},up] Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD PGs | DEPENDENT | ceph.osd[{#OSDNAME},num_pgs] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD fill | DEPENDENT | ceph.osd[{#OSDNAME},fill] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD latency apply | The time taken to flush an update to disks. |
DEPENDENT | ceph.osd[{#OSDNAME},latency_apply] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
| Ceph | Ceph: [osd.{#OSDNAME}] OSD latency commit | The time taken to commit an operation to the journal. |
DEPENDENT | ceph.osd[{#OSDNAME},latency_commit] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
| Ceph | Ceph: [{#POOLNAME}] Pool Used | The total bytes used in a pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",bytes_used] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Max available | The maximum available space in the given pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",max_avail] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool RAW Used | Bytes used in pool including the copies made. |
DEPENDENT | ceph.pool["{#POOLNAME}",stored_raw] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool Percent Used | The percentage of the storage used per pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",percent_used] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool objects | The number of objects in the pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",objects] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool Read bandwidth | The read rate per pool (bytes per second). |
DEPENDENT | ceph.pool["{#POOLNAME}",rd_bytes.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: [{#POOLNAME}] Pool Write bandwidth | The write rate per pool (bytes per second). |
DEPENDENT | ceph.pool["{#POOLNAME}",wr_bytes.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: [{#POOLNAME}] Pool Read operations | The read rate per pool (operations per second). |
DEPENDENT | ceph.pool["{#POOLNAME}",rd_ops.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: [{#POOLNAME}] Pool Write operations | The write rate per pool (operations per second). |
DEPENDENT | ceph.pool["{#POOLNAME}",wr_ops.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Zabbix raw items | Ceph: Get overall cluster status | ZABBIX_PASSIVE | ceph.status["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Zabbix raw items | Ceph: Get OSD stats | ZABBIX_PASSIVE | ceph.osd.stats["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Zabbix raw items | Ceph: Get OSD dump | ZABBIX_PASSIVE | ceph.osd.dump["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Zabbix raw items | Ceph: Get df | ZABBIX_PASSIVE | ceph.df.details["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: Can not connect to cluster | The connection to the Ceph RESTful module is broken (if there is any error presented including AUTH and the configuration issues). |
last(/Ceph by Zabbix agent 2/ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"])=0 |
AVERAGE | |
| Ceph: Cluster in ERROR state | - |
last(/Ceph by Zabbix agent 2/ceph.overall_status)=2 |
AVERAGE | Manual close: YES |
| Ceph: Cluster in WARNING state | - |
last(/Ceph by Zabbix agent 2/ceph.overall_status)=1Recovery expression: last(/Ceph by Zabbix agent 2/ceph.overall_status)=0 |
WARNING | Manual close: YES Depends on: - Ceph: Cluster in ERROR state |
| Ceph: Minimum monitor release version has changed | A Ceph version has changed. Perform Ack to close manually. |
last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#1)<>last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#2) and length(last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name))>0 |
INFO | Manual close: YES |
| Ceph: OSD osd.{#OSDNAME} is down | OSD osd.{#OSDNAME} is marked "down" in the osdmap. The OSD daemon may have been stopped, or peer OSDs may be unable to reach the OSD over the network. |
last(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},up]) = 0 |
AVERAGE | |
| Ceph: OSD osd.{#OSDNAME} is full | - |
min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_full_ratio)*100 |
AVERAGE | |
| Ceph: Ceph OSD osd.{#OSDNAME} is near full | - |
min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_nearfull_ratio)*100 |
WARNING | Depends on: - Ceph: OSD osd.{#OSDNAME} is full |
Please report any issues with the template at https://support.zabbix.com.
You can also provide feedback, discuss the template or ask for help at ZABBIX forums.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/ceph_agent2?at=release/6.0
The template to monitor Ceph cluster by Zabbix that work without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Ceph by Zabbix agent 2 — collects metrics by polling zabbix-agent2.
Zabbix version: 6.0 and higher.
This template has been tested on:
Zabbix should be configured according to the instructions in the Templates out of the box section.
Test availability: zabbix_get -s ceph-host -k ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"]
| Name | Description | Default |
|---|---|---|
| {$CEPH.USER} | zabbix |
|
| {$CEPH.API.KEY} | zabbix_pass |
|
| {$CEPH.CONNSTRING} | https://localhost:8003 |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Ceph: Get overall cluster status | Zabbix agent | ceph.status["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ceph: Get OSD stats | Zabbix agent | ceph.osd.stats["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ceph: Get OSD dump | Zabbix agent | ceph.osd.dump["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ceph: Get df | Zabbix agent | ceph.df.details["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Ceph: Ping | Zabbix agent | ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] Preprocessing
|
|
| Ceph: Number of Monitors | The number of Monitors configured in a Ceph cluster. |
Dependent item | ceph.num_mon Preprocessing
|
| Ceph: Overall cluster status | The overall Ceph cluster status, eg 0 - HEALTH_OK, 1 - HEALTH_WARN or 2 - HEALTH_ERR. |
Dependent item | ceph.overall_status Preprocessing
|
| Ceph: Minimum Mon release version | min_mon_release_name |
Dependent item | ceph.min_mon_release_name Preprocessing
|
| Ceph: Ceph Read bandwidth | The global read bytes per second. |
Dependent item | ceph.rd_bytes.rate Preprocessing
|
| Ceph: Ceph Write bandwidth | The global write bytes per second. |
Dependent item | ceph.wr_bytes.rate Preprocessing
|
| Ceph: Ceph Read operations per sec | The global read operations per second. |
Dependent item | ceph.rd_ops.rate Preprocessing
|
| Ceph: Ceph Write operations per sec | The global write operations per second. |
Dependent item | ceph.wr_ops.rate Preprocessing
|
| Ceph: Total bytes available | The total bytes available in a Ceph cluster. |
Dependent item | ceph.total_avail_bytes Preprocessing
|
| Ceph: Total bytes | The total (RAW) capacity of a Ceph cluster in bytes. |
Dependent item | ceph.total_bytes Preprocessing
|
| Ceph: Total bytes used | The total bytes used in a Ceph cluster. |
Dependent item | ceph.total_used_bytes Preprocessing
|
| Ceph: Total number of objects | The total number of objects in a Ceph cluster. |
Dependent item | ceph.total_objects Preprocessing
|
| Ceph: Number of Placement Groups | The total number of Placement Groups in a Ceph cluster. |
Dependent item | ceph.num_pg Preprocessing
|
| Ceph: Number of Placement Groups in Temporary state | The total number of Placement Groups in a pg_temp state |
Dependent item | ceph.num_pg_temp Preprocessing
|
| Ceph: Number of Placement Groups in Active state | The total number of Placement Groups in an active state. |
Dependent item | ceph.pg_states.active Preprocessing
|
| Ceph: Number of Placement Groups in Clean state | The total number of Placement Groups in a clean state. |
Dependent item | ceph.pg_states.clean Preprocessing
|
| Ceph: Number of Placement Groups in Peering state | The total number of Placement Groups in a peering state. |
Dependent item | ceph.pg_states.peering Preprocessing
|
| Ceph: Number of Placement Groups in Scrubbing state | The total number of Placement Groups in a scrubbing state. |
Dependent item | ceph.pg_states.scrubbing Preprocessing
|
| Ceph: Number of Placement Groups in Undersized state | The total number of Placement Groups in an undersized state. |
Dependent item | ceph.pg_states.undersized Preprocessing
|
| Ceph: Number of Placement Groups in Backfilling state | The total number of Placement Groups in a backfill state. |
Dependent item | ceph.pg_states.backfilling Preprocessing
|
| Ceph: Number of Placement Groups in degraded state | The total number of Placement Groups in a degraded state. |
Dependent item | ceph.pg_states.degraded Preprocessing
|
| Ceph: Number of Placement Groups in inconsistent state | The total number of Placement Groups in an inconsistent state. |
Dependent item | ceph.pg_states.inconsistent Preprocessing
|
| Ceph: Number of Placement Groups in Unknown state | The total number of Placement Groups in an unknown state. |
Dependent item | ceph.pg_states.unknown Preprocessing
|
| Ceph: Number of Placement Groups in remapped state | The total number of Placement Groups in a remapped state. |
Dependent item | ceph.pg_states.remapped Preprocessing
|
| Ceph: Number of Placement Groups in recovering state | The total number of Placement Groups in a recovering state. |
Dependent item | ceph.pg_states.recovering Preprocessing
|
| Ceph: Number of Placement Groups in backfill_toofull state | The total number of Placement Groups in a backfill_toofull state. |
Dependent item | ceph.pg_states.backfill_toofull Preprocessing
|
| Ceph: Number of Placement Groups in backfill_wait state | The total number of Placement Groups in a backfill_wait state. |
Dependent item | ceph.pg_states.backfill_wait Preprocessing
|
| Ceph: Number of Placement Groups in recovery_wait state | The total number of Placement Groups in a recovery_wait state. |
Dependent item | ceph.pg_states.recovery_wait Preprocessing
|
| Ceph: Number of Pools | The total number of pools in a Ceph cluster. |
Dependent item | ceph.num_pools Preprocessing
|
| Ceph: Number of OSDs | The number of the known storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd Preprocessing
|
| Ceph: Number of OSDs in state: UP | The total number of the online storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_up Preprocessing
|
| Ceph: Number of OSDs in state: IN | The total number of the participating storage daemons in a Ceph cluster. |
Dependent item | ceph.num_osd_in Preprocessing
|
| Ceph: Ceph OSD avg fill | The average fill of OSDs. |
Dependent item | ceph.osd_fill.avg Preprocessing
|
| Ceph: Ceph OSD max fill | The percentage of the most filled OSD. |
Dependent item | ceph.osd_fill.max Preprocessing
|
| Ceph: Ceph OSD min fill | The percentage fill of the minimum filled OSD. |
Dependent item | ceph.osd_fill.min Preprocessing
|
| Ceph: Ceph OSD max PGs | The maximum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.max Preprocessing
|
| Ceph: Ceph OSD min PGs | The minimum amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.min Preprocessing
|
| Ceph: Ceph OSD avg PGs | The average amount of Placement Groups on OSDs. |
Dependent item | ceph.osd_pgs.avg Preprocessing
|
| Ceph: Ceph OSD Apply latency Avg | The average apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.avg Preprocessing
|
| Ceph: Ceph OSD Apply latency Max | The maximum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.max Preprocessing
|
| Ceph: Ceph OSD Apply latency Min | The minimum apply latency of OSDs. |
Dependent item | ceph.osd_latency_apply.min Preprocessing
|
| Ceph: Ceph OSD Commit latency Avg | The average commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.avg Preprocessing
|
| Ceph: Ceph OSD Commit latency Max | The maximum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.max Preprocessing
|
| Ceph: Ceph OSD Commit latency Min | The minimum commit latency of OSDs. |
Dependent item | ceph.osd_latency_commit.min Preprocessing
|
| Ceph: Ceph backfill full ratio | The backfill full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_backfillfull_ratio Preprocessing
|
| Ceph: Ceph full ratio | The full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_full_ratio Preprocessing
|
| Ceph: Ceph nearfull ratio | The near full ratio setting of the Ceph cluster as configured on OSDMap. |
Dependent item | ceph.osd_nearfull_ratio Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: Can not connect to cluster | The connection to the Ceph RESTful module is broken (if there is any error presented including AUTH and the configuration issues). |
last(/Ceph by Zabbix agent 2/ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"])=0 |
Average | |
| Ceph: Cluster in ERROR state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=2 |
Average | Manual close: Yes | |
| Ceph: Cluster in WARNING state | last(/Ceph by Zabbix agent 2/ceph.overall_status)=1 |
Warning | Manual close: Yes Depends on:
|
|
| Ceph: Minimum monitor release version has changed | A Ceph version has changed. Acknowledge to close the problem manually. |
last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#1)<>last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#2) and length(last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name))>0 |
Info | Manual close: Yes |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| OSD | Zabbix agent | ceph.osd.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Ceph: [osd.{#OSDNAME}] OSD in | Dependent item | ceph.osd[{#OSDNAME},in] Preprocessing
|
|
| Ceph: [osd.{#OSDNAME}] OSD up | Dependent item | ceph.osd[{#OSDNAME},up] Preprocessing
|
|
| Ceph: [osd.{#OSDNAME}] OSD PGs | Dependent item | ceph.osd[{#OSDNAME},num_pgs] Preprocessing
|
|
| Ceph: [osd.{#OSDNAME}] OSD fill | Dependent item | ceph.osd[{#OSDNAME},fill] Preprocessing
|
|
| Ceph: [osd.{#OSDNAME}] OSD latency apply | The time taken to flush an update to disks. |
Dependent item | ceph.osd[{#OSDNAME},latency_apply] Preprocessing
|
| Ceph: [osd.{#OSDNAME}] OSD latency commit | The time taken to commit an operation to the journal. |
Dependent item | ceph.osd[{#OSDNAME},latency_commit] Preprocessing
|
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: OSD osd.{#OSDNAME} is down | OSD osd.{#OSDNAME} is marked "down" in the osdmap. |
last(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},up]) = 0 |
Average | |
| Ceph: OSD osd.{#OSDNAME} is full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_full_ratio)*100 |
Average | ||
| Ceph: Ceph OSD osd.{#OSDNAME} is near full | min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_nearfull_ratio)*100 |
Warning | Depends on:
|
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Pool | Zabbix agent | ceph.pool.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Ceph: [{#POOLNAME}] Pool Used | The total bytes used in a pool. |
Dependent item | ceph.pool["{#POOLNAME}",bytes_used] Preprocessing
|
| Ceph: [{#POOLNAME}] Max available | The maximum available space in the given pool. |
Dependent item | ceph.pool["{#POOLNAME}",max_avail] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool RAW Used | Bytes used in pool including the copies made. |
Dependent item | ceph.pool["{#POOLNAME}",stored_raw] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Percent Used | The percentage of the storage used per pool. |
Dependent item | ceph.pool["{#POOLNAME}",percent_used] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool objects | The number of objects in the pool. |
Dependent item | ceph.pool["{#POOLNAME}",objects] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Read bandwidth | The read rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_bytes.rate] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Write bandwidth | The write rate per pool (bytes per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_bytes.rate] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Read operations | The read rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",rd_ops.rate] Preprocessing
|
| Ceph: [{#POOLNAME}] Pool Write operations | The write rate per pool (operations per second). |
Dependent item | ceph.pool["{#POOLNAME}",wr_ops.rate] Preprocessing
|
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/ceph_agent2?at=release/5.4
For Zabbix version: 5.4 and higher
The template to monitor Ceph cluster by Zabbix that work without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Ceph by Zabbix agent 2 — collects metrics by polling zabbix-agent2.
This template was tested on:
See Zabbix template operation for basic instructions.
Test availability: zabbix_get -s ceph-host -k ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"]
No specific Zabbix configuration is required.
| Name | Description | Default |
|---|---|---|
| {$CEPH.API.KEY} | - |
zabbix_pass |
| {$CEPH.CONNSTRING} | - |
https://localhost:8003 |
| {$CEPH.USER} | - |
zabbix |
There are no template links in this template.
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| OSD | - |
ZABBIX_PASSIVE | ceph.osd.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Pool | - |
ZABBIX_PASSIVE | ceph.pool.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Group | Name | Description | Type | Key and additional info |
|---|---|---|---|---|
| Ceph | Ceph: Ping | ZABBIX_PASSIVE | ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
|
| Ceph | Ceph: Number of Monitors | Number of Monitors configured in Ceph cluster |
DEPENDENT | ceph.num_mon Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Overall cluster status | Overall Ceph cluster status, eg 0 - HEALTH_OK, 1 - HEALTH_WARN or 2 - HEALTH_ERR |
DEPENDENT | ceph.overall_status Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Minimum Mon release version | min_mon_release_name |
DEPENDENT | ceph.min_mon_release_name Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph Read bandwidth | Global read Bytes per second |
DEPENDENT | ceph.rd_bytes.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Ceph Write bandwidth | Global write Bytes per second |
DEPENDENT | ceph.wr_bytes.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Ceph Read operations per sec | Global read operations per second |
DEPENDENT | ceph.rd_ops.rate Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph Write operations per sec | Global write operations per second |
DEPENDENT | ceph.wr_ops.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Total bytes available | Total bytes available in Ceph cluster |
DEPENDENT | ceph.total_avail_bytes Preprocessing: - JSONPATH: |
| Ceph | Ceph: Total bytes | Total (RAW) capacity of Ceph cluster in bytes |
DEPENDENT | ceph.total_bytes Preprocessing: - JSONPATH: |
| Ceph | Ceph: Total bytes used | Total bytes used in Ceph cluster |
DEPENDENT | ceph.total_used_bytes Preprocessing: - JSONPATH: |
| Ceph | Ceph: Total number of objects | Total number of objects in Ceph cluster |
DEPENDENT | ceph.total_objects Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups | Total number of Placement Groups in Ceph cluster |
DEPENDENT | ceph.num_pg Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Number of Placement Groups in Temporary state | Total number of Placement Groups in pg_temp state |
DEPENDENT | ceph.num_pg_temp Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Active state | Total number of Placement Groups in active state |
DEPENDENT | ceph.pg_states.active Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Clean state | Total number of Placement Groups in clean state |
DEPENDENT | ceph.pg_states.clean Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Peering state | Total number of Placement Groups in peering state |
DEPENDENT | ceph.pg_states.peering Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Scrubbing state | Total number of Placement Groups in scrubbing state |
DEPENDENT | ceph.pg_states.scrubbing Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Undersized state | Total number of Placement Groups in undersized state |
DEPENDENT | ceph.pg_states.undersized Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Backfilling state | Total number of Placement Groups in backfilling state |
DEPENDENT | ceph.pg_states.backfilling Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in degraded state | Total number of Placement Groups in degraded state |
DEPENDENT | ceph.pg_states.degraded Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in inconsistent state | Total number of Placement Groups in inconsistent state |
DEPENDENT | ceph.pg_states.inconsistent Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Unknown state | Total number of Placement Groups in unknown state |
DEPENDENT | ceph.pg_states.unknown Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in remapped state | Total number of Placement Groups in remapped state |
DEPENDENT | ceph.pg_states.remapped Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in recovering state | Total number of Placement Groups in recovering state |
DEPENDENT | ceph.pg_states.recovering Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in backfill_toofull state | Total number of Placement Groups in backfill_toofull state |
DEPENDENT | ceph.pg_states.backfill_toofull Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in backfill_wait state | Total number of Placement Groups in backfill_wait state |
DEPENDENT | ceph.pg_states.backfill_wait Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in recovery_wait state | Total number of Placement Groups in recovery_wait state |
DEPENDENT | ceph.pg_states.recovery_wait Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Pools | Total number of pools in Ceph cluster |
DEPENDENT | ceph.num_pools Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of OSDs | Number of known storage daemons in Ceph cluster |
DEPENDENT | ceph.num_osd Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Number of OSDs in state: UP | Total number of online storage daemons in Ceph cluster |
DEPENDENT | ceph.num_osd_up Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Number of OSDs in state: IN | Total number of participating storage daemons in Ceph cluster |
DEPENDENT | ceph.num_osd_in Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph OSD avg fill | Average fill of OSDs |
DEPENDENT | ceph.osd_fill.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD max fill | Percentage fill of maximum filled OSD |
DEPENDENT | ceph.osd_fill.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD min fill | Percentage fill of minimum filled OSD |
DEPENDENT | ceph.osd_fill.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD max PGs | Maximum amount of PGs on OSDs |
DEPENDENT | ceph.osd_pgs.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD min PGs | Minimum amount of PGs on OSDs |
DEPENDENT | ceph.osd_pgs.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD avg PGs | Average amount of PGs on OSDs |
DEPENDENT | ceph.osd_pgs.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Apply latency Avg | Average apply latency of OSDs |
DEPENDENT | ceph.osd_latency_apply.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Apply latency Max | Maximum apply latency of OSDs |
DEPENDENT | ceph.osd_latency_apply.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Apply latency Min | Minimum apply latency of OSDs |
DEPENDENT | ceph.osd_latency_apply.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Commit latency Avg | Average commit latency of OSDs |
DEPENDENT | ceph.osd_latency_commit.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Commit latency Max | Maximum commit latency of OSDs |
DEPENDENT | ceph.osd_latency_commit.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Commit latency Min | Minimum commit latency of OSDs |
DEPENDENT | ceph.osd_latency_commit.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph backfill full ratio | Backfill full ratio setting of Ceph cluster as configured on OSDMap |
DEPENDENT | ceph.osd_backfillfull_ratio Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph full ratio | Full ratio setting of Ceph cluster as configured on OSDMap |
DEPENDENT | ceph.osd_full_ratio Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph nearfull ratio | Near full ratio setting of Ceph cluster as configured on OSDMap |
DEPENDENT | ceph.osd_nearfull_ratio Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: [osd.{#OSDNAME}] OSD in | DEPENDENT | ceph.osd[{#OSDNAME},in] Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD up | DEPENDENT | ceph.osd[{#OSDNAME},up] Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD PGs | DEPENDENT | ceph.osd[{#OSDNAME},num_pgs] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD fill | DEPENDENT | ceph.osd[{#OSDNAME},fill] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD latency apply | Time taken to flush an update to disks. |
DEPENDENT | ceph.osd[{#OSDNAME},latency_apply] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
| Ceph | Ceph: [osd.{#OSDNAME}] OSD latency commit | Time taken to commit an operation to the journal. |
DEPENDENT | ceph.osd[{#OSDNAME},latency_commit] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
| Ceph | Ceph: [{#POOLNAME}] Pool Used | Total bytes used in pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",bytes_used] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Max available | The maximum available space in the given pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",max_avail] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool RAW Used | Bytes used in pool including copies made. |
DEPENDENT | ceph.pool["{#POOLNAME}",stored_raw] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool Percent Used | Percentage of storage used per pool |
DEPENDENT | ceph.pool["{#POOLNAME}",percent_used] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool objects | Number of objects in the pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",objects] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool Read bandwidth | Per-pool read Bytes/second |
DEPENDENT | ceph.pool["{#POOLNAME}",rd_bytes.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: [{#POOLNAME}] Pool Write bandwidth | Per-pool write Bytes/second |
DEPENDENT | ceph.pool["{#POOLNAME}",wr_bytes.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: [{#POOLNAME}] Pool Read operations | Per-pool read operations/second |
DEPENDENT | ceph.pool["{#POOLNAME}",rd_ops.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: [{#POOLNAME}] Pool Write operations | Per-pool write operations/second |
DEPENDENT | ceph.pool["{#POOLNAME}",wr_ops.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Zabbix_raw_items | Ceph: Get overall cluster status | ZABBIX_PASSIVE | ceph.status["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Zabbix_raw_items | Ceph: Get OSD stats | ZABBIX_PASSIVE | ceph.osd.stats["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Zabbix_raw_items | Ceph: Get OSD dump | ZABBIX_PASSIVE | ceph.osd.dump["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Zabbix_raw_items | Ceph: Get df | ZABBIX_PASSIVE | ceph.df.details["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: Can not connect to cluster | Connection to Ceph RESTful module is broken (if there is any error presented including AUTH and configuration issues). |
last(/Ceph by Zabbix agent 2/ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"])=0 |
AVERAGE | |
| Ceph: Cluster in ERROR state | - |
last(/Ceph by Zabbix agent 2/ceph.overall_status)=2 |
AVERAGE | Manual close: YES |
| Ceph: Cluster in WARNING state | - |
last(/Ceph by Zabbix agent 2/ceph.overall_status)=1Recovery expression: last(/Ceph by Zabbix agent 2/ceph.overall_status)=0 |
WARNING | Manual close: YES Depends on: - Ceph: Cluster in ERROR state |
| Ceph: Minimum monitor release version has changed (new version: {ITEM.VALUE}) | Ceph version has changed. Ack to close. |
last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#1)<>last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name,#2) and length(last(/Ceph by Zabbix agent 2/ceph.min_mon_release_name))>0 |
INFO | Manual close: YES |
| Ceph: OSD osd.{#OSDNAME} is down | OSD osd.{#OSDNAME} is marked "down" in the osdmap. The OSD daemon may have been stopped, or peer OSDs may be unable to reach the OSD over the network. |
last(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},up]) = 0 |
AVERAGE | |
| Ceph: OSD osd.{#OSDNAME} is full | - |
min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_full_ratio)*100 |
AVERAGE | |
| Ceph: Ceph OSD osd.{#OSDNAME} is near full | - |
min(/Ceph by Zabbix agent 2/ceph.osd[{#OSDNAME},fill],15m) > last(/Ceph by Zabbix agent 2/ceph.osd_nearfull_ratio)*100 |
WARNING | Depends on: - Ceph: OSD osd.{#OSDNAME} is full |
Please report any issues with the template at https://support.zabbix.com
You can also provide a feedback, discuss the template or ask for help with it at ZABBIX forums.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/ceph_agent2?at=release/5.0
For Zabbix version: 5.0 and higher.
The template is designed to monitor Ceph cluster by Zabbix, which works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The template Ceph by Zabbix Agent2 — collects metrics by polling zabbix-agent2.
This template was tested on:
See Zabbix template operation for basic instructions.
Test availability: zabbix_get -s ceph-host -k ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"]
No specific Zabbix configuration is required.
| Name | Description | Default |
|---|---|---|
| {$CEPH.API.KEY} | - |
zabbix_pass |
| {$CEPH.CONNSTRING} | - |
https://localhost:8003 |
| {$CEPH.USER} | - |
zabbix |
There are no template links in this template.
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| OSD | - |
ZABBIX_PASSIVE | ceph.osd.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Pool | - |
ZABBIX_PASSIVE | ceph.pool.discovery["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Group | Name | Description | Type | Key and additional info |
|---|---|---|---|---|
| Ceph | Ceph: Ping | ZABBIX_PASSIVE | ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
|
| Ceph | Ceph: Number of Monitors | The number of Monitors configured in a Ceph cluster. |
DEPENDENT | ceph.num_mon Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Overall cluster status | The overall Ceph cluster status, eg 0 - HEALTH_OK, 1 - HEALTH_WARN or 2 - HEALTH_ERR. |
DEPENDENT | ceph.overall_status Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Minimum Mon release version | min_mon_release_name |
DEPENDENT | ceph.min_mon_release_name Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph Read bandwidth | The global read bytes per second. |
DEPENDENT | ceph.rd_bytes.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Ceph Write bandwidth | The global write bytes per second. |
DEPENDENT | ceph.wr_bytes.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Ceph Read operations per sec | The global read operations per second. |
DEPENDENT | ceph.rd_ops.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Ceph Write operations per sec | The global write operations per second. |
DEPENDENT | ceph.wr_ops.rate Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: Total bytes available | The total bytes available in a Ceph cluster. |
DEPENDENT | ceph.total_avail_bytes Preprocessing: - JSONPATH: |
| Ceph | Ceph: Total bytes | The total (RAW) capacity of a Ceph cluster in bytes. |
DEPENDENT | ceph.total_bytes Preprocessing: - JSONPATH: |
| Ceph | Ceph: Total bytes used | The total bytes used in a Ceph cluster. |
DEPENDENT | ceph.total_used_bytes Preprocessing: - JSONPATH: |
| Ceph | Ceph: Total number of objects | The total number of objects in a Ceph cluster. |
DEPENDENT | ceph.total_objects Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups | The total number of Placement Groups in a Ceph cluster. |
DEPENDENT | ceph.num_pg Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Number of Placement Groups in Temporary state | The total number of Placement Groups in a pg_temp state. |
DEPENDENT | ceph.num_pg_temp Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Active state | The total number of Placement Groups in an active state. |
DEPENDENT | ceph.pg_states.active Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Clean state | The total number of Placement Groups in a clean state. |
DEPENDENT | ceph.pg_states.clean Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Peering state | The total number of Placement Groups in a peering state. |
DEPENDENT | ceph.pg_states.peering Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Scrubbing state | The total number of Placement Groups in a scrubbing state. |
DEPENDENT | ceph.pg_states.scrubbing Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Undersized state | The total number of Placement Groups in an undersized state. |
DEPENDENT | ceph.pg_states.undersized Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Backfilling state | The total number of Placement Groups in a backfill state. |
DEPENDENT | ceph.pg_states.backfilling Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in degraded state | The total number of Placement Groups in a degraded state. |
DEPENDENT | ceph.pg_states.degraded Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in inconsistent state | The total number of Placement Groups in an inconsistent state. |
DEPENDENT | ceph.pg_states.inconsistent Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in Unknown state | The total number of Placement Groups in an unknown state. |
DEPENDENT | ceph.pg_states.unknown Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in remapped state | The total number of Placement Groups in a remapped state. |
DEPENDENT | ceph.pg_states.remapped Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in recovering state | The total number of Placement Groups in a recovering state. |
DEPENDENT | ceph.pg_states.recovering Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in backfill_toofull state | The total number of Placement Groups in a backfill_toofull state. |
DEPENDENT | ceph.pg_states.backfill_toofull Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in backfill_wait state | The total number of Placement Groups in a backfill_wait state. |
DEPENDENT | ceph.pg_states.backfill_wait Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Placement Groups in recovery_wait state | The total number of Placement Groups in a recovery_wait state. |
DEPENDENT | ceph.pg_states.recovery_wait Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of Pools | The total number of pools in a Ceph cluster. |
DEPENDENT | ceph.num_pools Preprocessing: - JSONPATH: |
| Ceph | Ceph: Number of OSDs | The number of the known storage daemons in a Ceph cluster. |
DEPENDENT | ceph.num_osd Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Number of OSDs in state: UP | The total number of the online storage daemons in a Ceph cluster. |
DEPENDENT | ceph.num_osd_up Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Number of OSDs in state: IN | The total number of the participating storage daemons in a Ceph cluster. |
DEPENDENT | ceph.num_osd_in Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph OSD avg fill | The average fill of OSDs. |
DEPENDENT | ceph.osd_fill.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD max fill | The percentage of the most filled OSD. |
DEPENDENT | ceph.osd_fill.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD min fill | The percentage fill of the minimum filled OSD. |
DEPENDENT | ceph.osd_fill.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD max PGs | The maximum amount of Placement Groups on OSDs. |
DEPENDENT | ceph.osd_pgs.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD min PGs | The minimum amount of Placement Groups on OSDs. |
DEPENDENT | ceph.osd_pgs.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD avg PGs | The average amount of Placement Groups on OSDs. |
DEPENDENT | ceph.osd_pgs.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Apply latency Avg | The average apply latency of OSDs. |
DEPENDENT | ceph.osd_latency_apply.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Apply latency Max | The maximum apply latency of OSDs. |
DEPENDENT | ceph.osd_latency_apply.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Apply latency Min | The minimum apply latency of OSDs. |
DEPENDENT | ceph.osd_latency_apply.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Commit latency Avg | The average commit latency of OSDs. |
DEPENDENT | ceph.osd_latency_commit.avg Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Commit latency Max | The maximum commit latency of OSDs. |
DEPENDENT | ceph.osd_latency_commit.max Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph OSD Commit latency Min | The minimum commit latency of OSDs. |
DEPENDENT | ceph.osd_latency_commit.min Preprocessing: - JSONPATH: |
| Ceph | Ceph: Ceph backfill full ratio | The backfill full ratio setting of the Ceph cluster as configured on OSDMap. |
DEPENDENT | ceph.osd_backfillfull_ratio Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph full ratio | The full ratio setting of the Ceph cluster as configured on OSDMap. |
DEPENDENT | ceph.osd_full_ratio Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: Ceph nearfull ratio | The near full ratio setting of the Ceph cluster as configured on OSDMap. |
DEPENDENT | ceph.osd_nearfull_ratio Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
| Ceph | Ceph: [osd.{#OSDNAME}] OSD in | DEPENDENT | ceph.osd[{#OSDNAME},in] Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD up | DEPENDENT | ceph.osd[{#OSDNAME},up] Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD PGs | DEPENDENT | ceph.osd[{#OSDNAME},num_pgs] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD fill | DEPENDENT | ceph.osd[{#OSDNAME},fill] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
|
| Ceph | Ceph: [osd.{#OSDNAME}] OSD latency apply | The time taken to flush an update to disks. |
DEPENDENT | ceph.osd[{#OSDNAME},latency_apply] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
| Ceph | Ceph: [osd.{#OSDNAME}] OSD latency commit | The time taken to commit an operation to the journal. |
DEPENDENT | ceph.osd[{#OSDNAME},latency_commit] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
| Ceph | Ceph: [{#POOLNAME}] Pool Used | The total bytes used in a pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",bytes_used] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Max available | The maximum available space in the given pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",max_avail] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool RAW Used | Bytes used in pool including the copies made. |
DEPENDENT | ceph.pool["{#POOLNAME}",stored_raw] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool Percent Used | The percentage of the storage used per pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",percent_used] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool objects | The number of objects in the pool. |
DEPENDENT | ceph.pool["{#POOLNAME}",objects] Preprocessing: - JSONPATH: |
| Ceph | Ceph: [{#POOLNAME}] Pool Read bandwidth | The read rate per pool (bytes per second). |
DEPENDENT | ceph.pool["{#POOLNAME}",rd_bytes.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: [{#POOLNAME}] Pool Write bandwidth | The write rate per pool (bytes per second). |
DEPENDENT | ceph.pool["{#POOLNAME}",wr_bytes.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: [{#POOLNAME}] Pool Read operations | The read rate per pool (operations per second). |
DEPENDENT | ceph.pool["{#POOLNAME}",rd_ops.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Ceph | Ceph: [{#POOLNAME}] Pool Write operations | The read rate per pool (operations per second). |
DEPENDENT | ceph.pool["{#POOLNAME}",wr_ops.rate] Preprocessing: - JSONPATH: - CHANGE_PER_SECOND |
| Zabbix_raw_items | Ceph: Get overall cluster status | ZABBIX_PASSIVE | ceph.status["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Zabbix_raw_items | Ceph: Get OSD stats | ZABBIX_PASSIVE | ceph.osd.stats["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Zabbix_raw_items | Ceph: Get OSD dump | ZABBIX_PASSIVE | ceph.osd.dump["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] | |
| Zabbix_raw_items | Ceph: Get df | ZABBIX_PASSIVE | ceph.df.details["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"] |
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Ceph: Can not connect to cluster | Connection to Ceph RESTful module is broken (if there is any error presented including AUTH and configuration issues). |
{TEMPLATE_NAME:ceph.ping["{$CEPH.CONNSTRING}","{$CEPH.USER}","{$CEPH.API.KEY}"].last()}=0 |
AVERAGE | |
| Ceph: Cluster in ERROR state | - |
{TEMPLATE_NAME:ceph.overall_status.last()}=2 |
AVERAGE | Manual close: YES |
| Ceph: Cluster in WARNING state | - |
{TEMPLATE_NAME:ceph.overall_status.last()}=1Recovery expression: {TEMPLATE_NAME:ceph.overall_status.last()}=0 |
WARNING | Manual close: YES Depends on: - Ceph: Cluster in ERROR state |
| Ceph: Minimum monitor release version has changed (new version: {ITEM.VALUE}) | Ceph version has changed. Ack to close. |
{TEMPLATE_NAME:ceph.min_mon_release_name.diff()}=1 and {TEMPLATE_NAME:ceph.min_mon_release_name.strlen()}>0 |
INFO | Manual close: YES |
| Ceph: OSD osd.{#OSDNAME} is down | OSD osd.{#OSDNAME} is marked "down" in the osdmap. The OSD daemon may have been stopped, or peer OSDs may be unable to reach the OSD over the network. |
{TEMPLATE_NAME:ceph.osd[{#OSDNAME},up].last()} = 0 |
AVERAGE | |
| Ceph: OSD osd.{#OSDNAME} is full | - |
{TEMPLATE_NAME:ceph.osd[{#OSDNAME},fill].min(15m)} > {Ceph by Zabbix Agent2:ceph.osd_full_ratio.last()}*100 |
AVERAGE | |
| Ceph: Ceph OSD osd.{#OSDNAME} is near full | - |
{TEMPLATE_NAME:ceph.osd[{#OSDNAME},fill].min(15m)} > {Ceph by Zabbix Agent2:ceph.osd_nearfull_ratio.last()}*100 |
WARNING | Depends on: - Ceph: OSD osd.{#OSDNAME} is full |
Please report any issues with the template at https://support.zabbix.com.
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/ceph?at=release/7.4
Provides native Zabbix solution for monitoring Ceph clusters (distributed storage system). It can monitor several Ceph instances simultaneously, remote or local to the Zabbix Agent. Best for use in conjunction with the official Ceph template. You can extend it or create your template for your specific needs.
mgr instance providing the restful module requires
extended capabilities for mon instances.
ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *' ...other caps...
# Omitting other caps, run `ceph auth ls` to find out what they are on
# your setup.
# Running `ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *'` with just
# the `mon` capability, will remove all other capabilities from the instance
# so make sure to include them all.
mgr instance.restful module from the mgr instance to run
commands that the mgr component further executes on other Ceph components
like mon and osd. The default capabilities are not enough to run
pg dumg command, hence the capability boost.The Zabbix agent 2 configuration file is used to configure plugins.
Plugins.Ceph.InsecureSkipVerify — InsecureSkipVerify controls whether an http client verifies the server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks. This should be used only for testing. Default value: false Limits: false | true
Plugins.Ceph.Timeout — The maximum time in seconds for waiting when a request has to be done. The timeout includes connection time, any redirects, and reading the response body. Default value: equals the global Timeout configuration parameter. Limits: 1-30
Plugins.Ceph.KeepAlive — Sets a time for waiting before unused connections will be closed. Default value: 300 sec. Limits: 60-900
A connection can be configured using either keys' parameters or named sessions.
Notes:
You can leave any connection parameter empty, a default hard-coded value will be used in the such case.
Embedded URI credentials (userinfo) are forbidden and will be ignored. So, you can't pass the credentials by this:
ceph.ping[https://user:[email protected]] — WRONG
The correct way is:
ceph.ping[https://127.0.0.1,user,apikey]
The only supported network schema for a URI is "https". Examples of valid URIs:
The common parameters for all keys are: [ConnString][,User][,ApiKey] Where ConnString can be either a URI or a session name. ConnString will be treated as a URI if no session with the given name is found. If you use ConnString as a session name, just skip the rest of the connection parameters.
Named sessions allow you to define specific parameters for each Ceph instance. Currently, there are only three supported parameters: Uri, User and ApiKey. It's a bit more secure way to store credentials compared to item keys or macros.
E.g: suppose you have two Ceph clusters: "Prod" and "Test". You should add the following options to the agent configuration file:
Plugins.Ceph.Sessions.Prod.Uri=https://192.168.1.1:8003
Plugins.Ceph.Sessions.Prod.User=<UserForProd>
Plugins.Ceph.Sessions.Prod.ApiKey=<ApiKeyForProd>
Plugins.Ceph.Sessions.Test.Uri=https://192.168.0.1:8003
Plugins.Ceph.Sessions.Test.User=<UserForTest>
Plugins.Ceph.Sessions.Test.ApiKey=<ApiKeyForTest>
Then you will be able to use these names as the 1st parameter (ConnString) in keys instead of URIs, e.g:
ceph.ping[Prod]
ceph.ping[Test]
Note: sessions names are case-sensitive.
ceph.df.details[<commonParams>] — Returns information about cluster’s data usage and distribution among pools. Uses data provided by "df detail" command. Output sample:
{
"pools": {
"device_health_metrics": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
},
"new_pool": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 695039808
},
"test_zabbix": {
"percent_used": 0,
"objects": 4,
"bytes_used": 786432,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"stored_raw": 66618,
"max_avail": 1390035968
},
"zabbix": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
}
},
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"num_pools": 4,
"total_bytes": 12872318976,
"total_avail_bytes": 6898843648,
"total_used_bytes": 2752249856,
"total_objects": 4
}
ceph.osd.stats[<commonParams>] — Returns aggregated and per OSD statistics. Uses data provided by "pg dump" command. Output sample:
{
"osd_latency_apply": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_latency_commit": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_fill": {
"min": 47,
"max": 47,
"avg": 47
},
"osd_pgs": {
"min": 65,
"max": 65,
"avg": 65
},
"osds": {
"0": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"1": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"2": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
}
}
}
ceph.osd.discovery[<commonParams>] — Returns a list of discovered OSDs in LLD format. Can be used in conjunction with "ceph.osd.stats" and "ceph.osd.dump" in order to create "per osd" items. Uses data provided by "osd crush tree" command. Output sample:
[
{
"{#OSDNAME}": "0",
"{#CLASS}": "hdd",
"{#HOST}": "node1"
},
{
"{#OSDNAME}": "1",
"{#CLASS}": "hdd",
"{#HOST}": "node2"
},
{
"{#OSDNAME}": "2",
"{#CLASS}": "hdd",
"{#HOST}": "node3"
}
]
ceph.osd.dump[<commonParams>] — Returns usage thresholds and statuses of OSDs. Uses data provided by "osd dump" command. Output sample:
{
"osd_backfillfull_ratio": 0.9,
"osd_full_ratio": 0.95,
"osd_nearfull_ratio": 0.85,
"num_pg_temp": 65,
"osds": {
"0": {
"in": 1,
"up": 1
},
"1": {
"in": 1,
"up": 1
},
"2": {
"in": 1,
"up": 1
}
}
}
ceph.ping[<commonParams>] — Tests if a connection is alive or not. Uses data provided by "health" command. Returns:
ceph.pool.discovery[<commonParams>] — Returns a list of discovered pools in LLD format. Can be used in conjunction with "ceph.df.details" in order to create "per pool" items. Uses data provided by "osd dump" and "osd crush rule dump" commands. Output sample:
[
{
"{#POOLNAME}": "device_health_metrics",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "test_zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "new_pool",
"{#CRUSHRULE}": "newbucket"
}
]
ceph.status[<commonParams>] — Returns an overall cluster's status. Uses data provided by "status" command. Output sample:
{
"overall_status": 2,
"num_mon": 3,
"num_osd": 3,
"num_osd_in": 2,
"num_osd_up": 1,
"num_pg": 66,
"pg_states": {
"activating": 0,
"active": 0,
"backfill_toofull": 0,
"backfill_unfound": 0,
"backfill_wait": 0,
"backfilling": 0,
"clean": 0,
"creating": 0,
"deep": 0,
"degraded": 36,
"down": 0,
"forced_backfill": 0,
"forced_recovery": 0,
"incomplete": 0,
"inconsistent": 0,
"laggy": 0,
"peered": 65,
"peering": 0,
"recovering": 0,
"recovery_toofull": 0,
"recovery_unfound": 1,
"recovery_wait": 0,
"remapped": 0,
"repair": 0,
"scrubbing": 0,
"snaptrim": 0,
"snaptrim_error": 0,
"snaptrim_wait": 0,
"stale": 0,
"undersized": 65,
"unknown": 1,
"wait": 0
},
"min_mon_release_name": "octopus"
}
The plugin uses Zabbix agent's logs. You can increase debugging level of Zabbix Agent if you need more details about what is happening.
If you get the error "x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs", probably you need to set the InsecureSkipVerify option to "true" or use a certificate that is signed by the organization’s certificate authority.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/ceph?at=release/7.2
Provides native Zabbix solution for monitoring Ceph clusters (distributed storage system). It can monitor several Ceph instances simultaneously, remote or local to the Zabbix Agent. Best for use in conjunction with the official Ceph template. You can extend it or create your template for your specific needs.
mgr instance providing the restful module requires
extended capabilities for mon instances.
ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *' ...other caps...
# Omitting other caps, run `ceph auth ls` to find out what they are on
# your setup.
# Running `ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *'` with just
# the `mon` capability, will remove all other capabilities from the instance
# so make sure to include them all.
mgr instance.restful module from the mgr instance to run
commands that the mgr component further executes on other Ceph components
like mon and osd. The default capabilities are not enough to run
pg dumg command, hence the capability boost.The Zabbix agent 2 configuration file is used to configure plugins.
Plugins.Ceph.InsecureSkipVerify — InsecureSkipVerify controls whether an http client verifies the server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks. This should be used only for testing. Default value: false Limits: false | true
Plugins.Ceph.Timeout — The maximum time in seconds for waiting when a request has to be done. The timeout includes connection time, any redirects, and reading the response body. Default value: equals the global Timeout configuration parameter. Limits: 1-30
Plugins.Ceph.KeepAlive — Sets a time for waiting before unused connections will be closed. Default value: 300 sec. Limits: 60-900
A connection can be configured using either keys' parameters or named sessions.
Notes:
You can leave any connection parameter empty, a default hard-coded value will be used in the such case.
Embedded URI credentials (userinfo) are forbidden and will be ignored. So, you can't pass the credentials by this:
ceph.ping[https://user:[email protected]] — WRONG
The correct way is:
ceph.ping[https://127.0.0.1,user,apikey]
The only supported network schema for a URI is "https". Examples of valid URIs:
The common parameters for all keys are: [ConnString][,User][,ApiKey] Where ConnString can be either a URI or a session name. ConnString will be treated as a URI if no session with the given name is found. If you use ConnString as a session name, just skip the rest of the connection parameters.
Named sessions allow you to define specific parameters for each Ceph instance. Currently, there are only three supported parameters: Uri, User and ApiKey. It's a bit more secure way to store credentials compared to item keys or macros.
E.g: suppose you have two Ceph clusters: "Prod" and "Test". You should add the following options to the agent configuration file:
Plugins.Ceph.Sessions.Prod.Uri=https://192.168.1.1:8003
Plugins.Ceph.Sessions.Prod.User=<UserForProd>
Plugins.Ceph.Sessions.Prod.ApiKey=<ApiKeyForProd>
Plugins.Ceph.Sessions.Test.Uri=https://192.168.0.1:8003
Plugins.Ceph.Sessions.Test.User=<UserForTest>
Plugins.Ceph.Sessions.Test.ApiKey=<ApiKeyForTest>
Then you will be able to use these names as the 1st parameter (ConnString) in keys instead of URIs, e.g:
ceph.ping[Prod]
ceph.ping[Test]
Note: sessions names are case-sensitive.
ceph.df.details[<commonParams>] — Returns information about cluster’s data usage and distribution among pools. Uses data provided by "df detail" command. Output sample:
{
"pools": {
"device_health_metrics": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
},
"new_pool": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 695039808
},
"test_zabbix": {
"percent_used": 0,
"objects": 4,
"bytes_used": 786432,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"stored_raw": 66618,
"max_avail": 1390035968
},
"zabbix": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
}
},
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"num_pools": 4,
"total_bytes": 12872318976,
"total_avail_bytes": 6898843648,
"total_used_bytes": 2752249856,
"total_objects": 4
}
ceph.osd.stats[<commonParams>] — Returns aggregated and per OSD statistics. Uses data provided by "pg dump" command. Output sample:
{
"osd_latency_apply": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_latency_commit": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_fill": {
"min": 47,
"max": 47,
"avg": 47
},
"osd_pgs": {
"min": 65,
"max": 65,
"avg": 65
},
"osds": {
"0": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"1": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"2": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
}
}
}
ceph.osd.discovery[<commonParams>] — Returns a list of discovered OSDs in LLD format. Can be used in conjunction with "ceph.osd.stats" and "ceph.osd.dump" in order to create "per osd" items. Uses data provided by "osd crush tree" command. Output sample:
[
{
"{#OSDNAME}": "0",
"{#CLASS}": "hdd",
"{#HOST}": "node1"
},
{
"{#OSDNAME}": "1",
"{#CLASS}": "hdd",
"{#HOST}": "node2"
},
{
"{#OSDNAME}": "2",
"{#CLASS}": "hdd",
"{#HOST}": "node3"
}
]
ceph.osd.dump[<commonParams>] — Returns usage thresholds and statuses of OSDs. Uses data provided by "osd dump" command. Output sample:
{
"osd_backfillfull_ratio": 0.9,
"osd_full_ratio": 0.95,
"osd_nearfull_ratio": 0.85,
"num_pg_temp": 65,
"osds": {
"0": {
"in": 1,
"up": 1
},
"1": {
"in": 1,
"up": 1
},
"2": {
"in": 1,
"up": 1
}
}
}
ceph.ping[<commonParams>] — Tests if a connection is alive or not. Uses data provided by "health" command. Returns:
ceph.pool.discovery[<commonParams>] — Returns a list of discovered pools in LLD format. Can be used in conjunction with "ceph.df.details" in order to create "per pool" items. Uses data provided by "osd dump" and "osd crush rule dump" commands. Output sample:
[
{
"{#POOLNAME}": "device_health_metrics",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "test_zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "new_pool",
"{#CRUSHRULE}": "newbucket"
}
]
ceph.status[<commonParams>] — Returns an overall cluster's status. Uses data provided by "status" command. Output sample:
{
"overall_status": 2,
"num_mon": 3,
"num_osd": 3,
"num_osd_in": 2,
"num_osd_up": 1,
"num_pg": 66,
"pg_states": {
"activating": 0,
"active": 0,
"backfill_toofull": 0,
"backfill_unfound": 0,
"backfill_wait": 0,
"backfilling": 0,
"clean": 0,
"creating": 0,
"deep": 0,
"degraded": 36,
"down": 0,
"forced_backfill": 0,
"forced_recovery": 0,
"incomplete": 0,
"inconsistent": 0,
"laggy": 0,
"peered": 65,
"peering": 0,
"recovering": 0,
"recovery_toofull": 0,
"recovery_unfound": 1,
"recovery_wait": 0,
"remapped": 0,
"repair": 0,
"scrubbing": 0,
"snaptrim": 0,
"snaptrim_error": 0,
"snaptrim_wait": 0,
"stale": 0,
"undersized": 65,
"unknown": 1,
"wait": 0
},
"min_mon_release_name": "octopus"
}
The plugin uses Zabbix agent's logs. You can increase debugging level of Zabbix Agent if you need more details about what is happening.
If you get the error "x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs", probably you need to set the InsecureSkipVerify option to "true" or use a certificate that is signed by the organization’s certificate authority.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/ceph?at=release/7.0
Provides native Zabbix solution for monitoring Ceph clusters (distributed storage system). It can monitor several Ceph instances simultaneously, remote or local to the Zabbix Agent. Best for use in conjunction with the official Ceph template. You can extend it or create your template for your specific needs.
mgr instance providing the restful module requires
extended capabilities for mon instances.
ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *' ...other caps...
# Omitting other caps, run `ceph auth ls` to find out what they are on
# your setup.
# Running `ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *'` with just
# the `mon` capability, will remove all other capabilities from the instance
# so make sure to include them all.
mgr instance.restful module from the mgr instance to run
commands that the mgr component further executes on other Ceph components
like mon and osd. The default capabilities are not enough to run
pg dumg command, hence the capability boost.The Zabbix agent 2 configuration file is used to configure plugins.
Plugins.Ceph.InsecureSkipVerify — InsecureSkipVerify controls whether an http client verifies the server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks. This should be used only for testing. Default value: false Limits: false | true
Plugins.Ceph.Timeout — The maximum time in seconds for waiting when a request has to be done. The timeout includes connection time, any redirects, and reading the response body. Default value: equals the global Timeout configuration parameter. Limits: 1-30
Plugins.Ceph.KeepAlive — Sets a time for waiting before unused connections will be closed. Default value: 300 sec. Limits: 60-900
A connection can be configured using either keys' parameters or named sessions.
Notes:
You can leave any connection parameter empty, a default hard-coded value will be used in the such case.
Embedded URI credentials (userinfo) are forbidden and will be ignored. So, you can't pass the credentials by this:
ceph.ping[https://user:[email protected]] — WRONG
The correct way is:
ceph.ping[https://127.0.0.1,user,apikey]
The only supported network schema for a URI is "https". Examples of valid URIs:
The common parameters for all keys are: [ConnString][,User][,ApiKey] Where ConnString can be either a URI or a session name. ConnString will be treated as a URI if no session with the given name is found. If you use ConnString as a session name, just skip the rest of the connection parameters.
Named sessions allow you to define specific parameters for each Ceph instance. Currently, there are only three supported parameters: Uri, User and ApiKey. It's a bit more secure way to store credentials compared to item keys or macros.
E.g: suppose you have two Ceph clusters: "Prod" and "Test". You should add the following options to the agent configuration file:
Plugins.Ceph.Sessions.Prod.Uri=https://192.168.1.1:8003
Plugins.Ceph.Sessions.Prod.User=<UserForProd>
Plugins.Ceph.Sessions.Prod.ApiKey=<ApiKeyForProd>
Plugins.Ceph.Sessions.Test.Uri=https://192.168.0.1:8003
Plugins.Ceph.Sessions.Test.User=<UserForTest>
Plugins.Ceph.Sessions.Test.ApiKey=<ApiKeyForTest>
Then you will be able to use these names as the 1st parameter (ConnString) in keys instead of URIs, e.g:
ceph.ping[Prod]
ceph.ping[Test]
Note: sessions names are case-sensitive.
ceph.df.details[<commonParams>] — Returns information about cluster’s data usage and distribution among pools. Uses data provided by "df detail" command. Output sample:
{
"pools": {
"device_health_metrics": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
},
"new_pool": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 695039808
},
"test_zabbix": {
"percent_used": 0,
"objects": 4,
"bytes_used": 786432,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"stored_raw": 66618,
"max_avail": 1390035968
},
"zabbix": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
}
},
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"num_pools": 4,
"total_bytes": 12872318976,
"total_avail_bytes": 6898843648,
"total_used_bytes": 2752249856,
"total_objects": 4
}
ceph.osd.stats[<commonParams>] — Returns aggregated and per OSD statistics. Uses data provided by "pg dump" command. Output sample:
{
"osd_latency_apply": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_latency_commit": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_fill": {
"min": 47,
"max": 47,
"avg": 47
},
"osd_pgs": {
"min": 65,
"max": 65,
"avg": 65
},
"osds": {
"0": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"1": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"2": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
}
}
}
ceph.osd.discovery[<commonParams>] — Returns a list of discovered OSDs in LLD format. Can be used in conjunction with "ceph.osd.stats" and "ceph.osd.dump" in order to create "per osd" items. Uses data provided by "osd crush tree" command. Output sample:
[
{
"{#OSDNAME}": "0",
"{#CLASS}": "hdd",
"{#HOST}": "node1"
},
{
"{#OSDNAME}": "1",
"{#CLASS}": "hdd",
"{#HOST}": "node2"
},
{
"{#OSDNAME}": "2",
"{#CLASS}": "hdd",
"{#HOST}": "node3"
}
]
ceph.osd.dump[<commonParams>] — Returns usage thresholds and statuses of OSDs. Uses data provided by "osd dump" command. Output sample:
{
"osd_backfillfull_ratio": 0.9,
"osd_full_ratio": 0.95,
"osd_nearfull_ratio": 0.85,
"num_pg_temp": 65,
"osds": {
"0": {
"in": 1,
"up": 1
},
"1": {
"in": 1,
"up": 1
},
"2": {
"in": 1,
"up": 1
}
}
}
ceph.ping[<commonParams>] — Tests if a connection is alive or not. Uses data provided by "health" command. Returns:
ceph.pool.discovery[<commonParams>] — Returns a list of discovered pools in LLD format. Can be used in conjunction with "ceph.df.details" in order to create "per pool" items. Uses data provided by "osd dump" and "osd crush rule dump" commands. Output sample:
[
{
"{#POOLNAME}": "device_health_metrics",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "test_zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "new_pool",
"{#CRUSHRULE}": "newbucket"
}
]
ceph.status[<commonParams>] — Returns an overall cluster's status. Uses data provided by "status" command. Output sample:
{
"overall_status": 2,
"num_mon": 3,
"num_osd": 3,
"num_osd_in": 2,
"num_osd_up": 1,
"num_pg": 66,
"pg_states": {
"activating": 0,
"active": 0,
"backfill_toofull": 0,
"backfill_unfound": 0,
"backfill_wait": 0,
"backfilling": 0,
"clean": 0,
"creating": 0,
"deep": 0,
"degraded": 36,
"down": 0,
"forced_backfill": 0,
"forced_recovery": 0,
"incomplete": 0,
"inconsistent": 0,
"laggy": 0,
"peered": 65,
"peering": 0,
"recovering": 0,
"recovery_toofull": 0,
"recovery_unfound": 1,
"recovery_wait": 0,
"remapped": 0,
"repair": 0,
"scrubbing": 0,
"snaptrim": 0,
"snaptrim_error": 0,
"snaptrim_wait": 0,
"stale": 0,
"undersized": 65,
"unknown": 1,
"wait": 0
},
"min_mon_release_name": "octopus"
}
The plugin uses Zabbix agent's logs. You can increase debugging level of Zabbix Agent if you need more details about what is happening.
If you get the error "x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs", probably you need to set the InsecureSkipVerify option to "true" or use a certificate that is signed by the organization’s certificate authority.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/ceph?at=release/6.4
Provides native Zabbix solution for monitoring Ceph clusters (distributed storage system). It can monitor several Ceph instances simultaneously, remote or local to the Zabbix Agent. Best for use in conjunction with the official Ceph template. You can extend it or create your template for your specific needs.
mgr instance providing the restful module requires
extended capabilities for mon instances.
ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *' ...other caps...
# Omitting other caps, run `ceph auth ls` to find out what they are on
# your setup.
# Running `ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *'` with just
# the `mon` capability, will remove all other capabilities from the instance
# so make sure to include them all.
mgr instance.restful module from the mgr instance to run
commands that the mgr component further executes on other Ceph components
like mon and osd. The default capabilities are not enough to run
pg dumg command, hence the capability boost.The Zabbix agent 2 configuration file is used to configure plugins.
Plugins.Ceph.InsecureSkipVerify — InsecureSkipVerify controls whether an http client verifies the server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks. This should be used only for testing. Default value: false Limits: false | true
Plugins.Ceph.Timeout — The maximum time in seconds for waiting when a request has to be done. The timeout includes connection time, any redirects, and reading the response body. Default value: equals the global Timeout configuration parameter. Limits: 1-30
Plugins.Ceph.KeepAlive — Sets a time for waiting before unused connections will be closed. Default value: 300 sec. Limits: 60-900
A connection can be configured using either keys' parameters or named sessions.
Notes:
You can leave any connection parameter empty, a default hard-coded value will be used in the such case.
Embedded URI credentials (userinfo) are forbidden and will be ignored. So, you can't pass the credentials by this:
ceph.ping[https://user:[email protected]] — WRONG
The correct way is:
ceph.ping[https://127.0.0.1,user,apikey]
The only supported network schema for a URI is "https". Examples of valid URIs:
The common parameters for all keys are: [ConnString][,User][,ApiKey] Where ConnString can be either a URI or a session name. ConnString will be treated as a URI if no session with the given name is found. If you use ConnString as a session name, just skip the rest of the connection parameters.
Named sessions allow you to define specific parameters for each Ceph instance. Currently, there are only three supported parameters: Uri, User and ApiKey. It's a bit more secure way to store credentials compared to item keys or macros.
E.g: suppose you have two Ceph clusters: "Prod" and "Test". You should add the following options to the agent configuration file:
Plugins.Ceph.Sessions.Prod.Uri=https://192.168.1.1:8003
Plugins.Ceph.Sessions.Prod.User=<UserForProd>
Plugins.Ceph.Sessions.Prod.ApiKey=<ApiKeyForProd>
Plugins.Ceph.Sessions.Test.Uri=https://192.168.0.1:8003
Plugins.Ceph.Sessions.Test.User=<UserForTest>
Plugins.Ceph.Sessions.Test.ApiKey=<ApiKeyForTest>
Then you will be able to use these names as the 1st parameter (ConnString) in keys instead of URIs, e.g:
ceph.ping[Prod]
ceph.ping[Test]
Note: sessions names are case-sensitive.
ceph.df.details[<commonParams>] — Returns information about cluster’s data usage and distribution among pools. Uses data provided by "df detail" command. Output sample:
{
"pools": {
"device_health_metrics": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
},
"new_pool": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 695039808
},
"test_zabbix": {
"percent_used": 0,
"objects": 4,
"bytes_used": 786432,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"stored_raw": 66618,
"max_avail": 1390035968
},
"zabbix": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
}
},
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"num_pools": 4,
"total_bytes": 12872318976,
"total_avail_bytes": 6898843648,
"total_used_bytes": 2752249856,
"total_objects": 4
}
ceph.osd.stats[<commonParams>] — Returns aggregated and per OSD statistics. Uses data provided by "pg dump" command. Output sample:
{
"osd_latency_apply": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_latency_commit": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_fill": {
"min": 47,
"max": 47,
"avg": 47
},
"osd_pgs": {
"min": 65,
"max": 65,
"avg": 65
},
"osds": {
"0": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"1": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"2": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
}
}
}
ceph.osd.discovery[<commonParams>] — Returns a list of discovered OSDs in LLD format. Can be used in conjunction with "ceph.osd.stats" and "ceph.osd.dump" in order to create "per osd" items. Uses data provided by "osd crush tree" command. Output sample:
[
{
"{#OSDNAME}": "0",
"{#CLASS}": "hdd",
"{#HOST}": "node1"
},
{
"{#OSDNAME}": "1",
"{#CLASS}": "hdd",
"{#HOST}": "node2"
},
{
"{#OSDNAME}": "2",
"{#CLASS}": "hdd",
"{#HOST}": "node3"
}
]
ceph.osd.dump[<commonParams>] — Returns usage thresholds and statuses of OSDs. Uses data provided by "osd dump" command. Output sample:
{
"osd_backfillfull_ratio": 0.9,
"osd_full_ratio": 0.95,
"osd_nearfull_ratio": 0.85,
"num_pg_temp": 65,
"osds": {
"0": {
"in": 1,
"up": 1
},
"1": {
"in": 1,
"up": 1
},
"2": {
"in": 1,
"up": 1
}
}
}
ceph.ping[<commonParams>] — Tests if a connection is alive or not. Uses data provided by "health" command. Returns:
ceph.pool.discovery[<commonParams>] — Returns a list of discovered pools in LLD format. Can be used in conjunction with "ceph.df.details" in order to create "per pool" items. Uses data provided by "osd dump" and "osd crush rule dump" commands. Output sample:
[
{
"{#POOLNAME}": "device_health_metrics",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "test_zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "new_pool",
"{#CRUSHRULE}": "newbucket"
}
]
ceph.status[<commonParams>] — Returns an overall cluster's status. Uses data provided by "status" command. Output sample:
{
"overall_status": 2,
"num_mon": 3,
"num_osd": 3,
"num_osd_in": 2,
"num_osd_up": 1,
"num_pg": 66,
"pg_states": {
"activating": 0,
"active": 0,
"backfill_toofull": 0,
"backfill_unfound": 0,
"backfill_wait": 0,
"backfilling": 0,
"clean": 0,
"creating": 0,
"deep": 0,
"degraded": 36,
"down": 0,
"forced_backfill": 0,
"forced_recovery": 0,
"incomplete": 0,
"inconsistent": 0,
"laggy": 0,
"peered": 65,
"peering": 0,
"recovering": 0,
"recovery_toofull": 0,
"recovery_unfound": 1,
"recovery_wait": 0,
"remapped": 0,
"repair": 0,
"scrubbing": 0,
"snaptrim": 0,
"snaptrim_error": 0,
"snaptrim_wait": 0,
"stale": 0,
"undersized": 65,
"unknown": 1,
"wait": 0
},
"min_mon_release_name": "octopus"
}
The plugin uses Zabbix agent's logs. You can increase debugging level of Zabbix Agent if you need more details about what is happening.
If you get the error "x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs", probably you need to set the InsecureSkipVerify option to "true" or use a certificate that is signed by the organization’s certificate authority.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/ceph?at=release/6.2
Provides native Zabbix solution for monitoring Ceph clusters (distributed storage system). It can monitor several Ceph instances simultaneously, remote or local to the Zabbix Agent. Best for use in conjunction with the official Ceph template. You can extend it or create your template for your specific needs.
The Zabbix agent 2 configuration file is used to configure plugins.
Plugins.Ceph.InsecureSkipVerify — InsecureSkipVerify controls whether an http client verifies the
server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by
the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks.
This should be used only for testing.
Default value: false
Limits: false | true
Plugins.Ceph.Timeout — The maximum time in seconds for waiting when a request has to be done. The timeout includes
connection time, any redirects, and reading the response body.
Default value: equals the global Timeout configuration parameter.
Limits: 1-30
Plugins.Ceph.KeepAlive — Sets a time for waiting before unused connections will be closed. Default value: 300 sec. Limits: 60-900
A connection can be configured using either keys' parameters or named sessions.
Notes:
It is not possible to mix configuration using named sessions and keys' parameters simultaneously.
You can leave any connection parameter empty, a default hard-coded value will be used in the such case.
Embedded URI credentials (userinfo) are forbidden and will be ignored. So, you can't pass the credentials by this:
ceph.ping[https://user:[email protected]] — WRONG
The correct way is:
ceph.ping[https://127.0.0.1,user,apikey]
The only supported network schema for a URI is "https".
Examples of valid URIs:
The common parameters for all keys are: [ConnString][,User][,ApiKey]
Where ConnString can be either a URI or a session name.
ConnString will be treated as a URI if no session with the given name is found.
If you use ConnString as a session name, just skip the rest of the connection parameters.
Named sessions allow you to define specific parameters for each Ceph instance. Currently, there are only three supported parameters: Uri, User and ApiKey. It's a bit more secure way to store credentials compared to item keys or macros.
E.g: suppose you have two Ceph clusters: "Prod" and "Test". You should add the following options to the agent configuration file:
Plugins.Ceph.Sessions.Prod.Uri=https://192.168.1.1:8003
Plugins.Ceph.Sessions.Prod.User=<UserForProd>
Plugins.Ceph.Sessions.Prod.ApiKey=<ApiKeyForProd>
Plugins.Ceph.Sessions.Test.Uri=https://192.168.0.1:8003
Plugins.Ceph.Sessions.Test.User=<UserForTest>
Plugins.Ceph.Sessions.Test.ApiKey=<ApiKeyForTest>
Then you will be able to use these names as the 1st parameter (ConnString) in keys instead of URIs, e.g:
ceph.ping[Prod]
ceph.ping[Test]
Note: sessions names are case-sensitive.
ceph.df.details[<commonParams>] — Returns information about cluster’s data usage and distribution among pools.
Uses data provided by "df detail" command.
Output sample:
{
"pools": {
"device_health_metrics": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
},
"new_pool": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 695039808
},
"test_zabbix": {
"percent_used": 0,
"objects": 4,
"bytes_used": 786432,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"stored_raw": 66618,
"max_avail": 1390035968
},
"zabbix": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
}
},
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"num_pools": 4,
"total_bytes": 12872318976,
"total_avail_bytes": 6898843648,
"total_used_bytes": 2752249856,
"total_objects": 4
}
ceph.osd.stats[<commonParams>] — Returns aggregated and per OSD statistics.
Uses data provided by "pg dump" command.
Output sample:
{
"osd_latency_apply": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_latency_commit": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_fill": {
"min": 47,
"max": 47,
"avg": 47
},
"osd_pgs": {
"min": 65,
"max": 65,
"avg": 65
},
"osds": {
"0": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"1": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"2": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
}
}
}
ceph.osd.discovery[<commonParams>] — Returns a list of discovered OSDs in LLD format.
Can be used in conjunction with "ceph.osd.stats" and "ceph.osd.dump" in order to create "per osd" items.
Uses data provided by "osd crush tree" command.
Output sample:
[
{
"{#OSDNAME}": "0",
"{#CLASS}": "hdd",
"{#HOST}": "node1"
},
{
"{#OSDNAME}": "1",
"{#CLASS}": "hdd",
"{#HOST}": "node2"
},
{
"{#OSDNAME}": "2",
"{#CLASS}": "hdd",
"{#HOST}": "node3"
}
]
ceph.osd.dump[<commonParams>] — Returns usage thresholds and statuses of OSDs.
Uses data provided by "osd dump" command.
Output sample:
{
"osd_backfillfull_ratio": 0.9,
"osd_full_ratio": 0.95,
"osd_nearfull_ratio": 0.85,
"num_pg_temp": 65,
"osds": {
"0": {
"in": 1,
"up": 1
},
"1": {
"in": 1,
"up": 1
},
"2": {
"in": 1,
"up": 1
}
}
}
ceph.ping[<commonParams>] — Tests if a connection is alive or not.
Uses data provided by "health" command.
Returns:
ceph.pool.discovery[<commonParams>] — Returns a list of discovered pools in LLD format.
Can be used in conjunction with "ceph.df.details" in order to create "per pool" items.
Uses data provided by "osd dump" and "osd crush rule dump" commands.
Output sample:
[
{
"{#POOLNAME}": "device_health_metrics",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "test_zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "new_pool",
"{#CRUSHRULE}": "newbucket"
}
]
ceph.status[<commonParams>] — Returns an overall cluster's status.
Uses data provided by "status" command.
Output sample:
{
"overall_status": 2,
"num_mon": 3,
"num_osd": 3,
"num_osd_in": 2,
"num_osd_up": 1,
"num_pg": 66,
"pg_states": {
"activating": 0,
"active": 0,
"backfill_toofull": 0,
"backfill_unfound": 0,
"backfill_wait": 0,
"backfilling": 0,
"clean": 0,
"creating": 0,
"deep": 0,
"degraded": 36,
"down": 0,
"forced_backfill": 0,
"forced_recovery": 0,
"incomplete": 0,
"inconsistent": 0,
"laggy": 0,
"peered": 65,
"peering": 0,
"recovering": 0,
"recovery_toofull": 0,
"recovery_unfound": 1,
"recovery_wait": 0,
"remapped": 0,
"repair": 0,
"scrubbing": 0,
"snaptrim": 0,
"snaptrim_error": 0,
"snaptrim_wait": 0,
"stale": 0,
"undersized": 65,
"unknown": 1,
"wait": 0
},
"min_mon_release_name": "octopus"
}
The plugin uses Zabbix agent's logs. You can increase debugging level of Zabbix Agent if you need more details about what is happening.
If you get the error "x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs", probably you need to set the InsecureSkipVerify option to "true" or use a certificate that is signed by the organization’s certificate authority.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/ceph?at=release/6.0
Provides native Zabbix solution for monitoring Ceph clusters (distributed storage system). It can monitor several Ceph instances simultaneously, remote or local to the Zabbix Agent. Best for use in conjunction with the official Ceph template. You can extend it or create your template for your specific needs.
mgr instance providing the restful module requires
extended capabilities for mon instances.
ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *' ...other caps...
# Omitting other caps, run `ceph auth ls` to find out what they are on
# your setup.
# Running `ceph auth caps $YOUR_MGR_INSTANCE_NAME mon 'allow *'` with just
# the `mon` capability, will remove all other capabilities from the instance
# so make sure to include them all.
mgr instance.restful module from the mgr instance to run
commands that the mgr component further executes on other Ceph components
like mon and osd. The default capabilities are not enough to run
pg dumg command, hence the capability boost.The Zabbix agent 2 configuration file is used to configure plugins.
Plugins.Ceph.InsecureSkipVerify — InsecureSkipVerify controls whether an http client verifies the server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks. This should be used only for testing. Default value: false Limits: false | true
Plugins.Ceph.Timeout — The maximum time in seconds for waiting when a request has to be done. The timeout includes connection time, any redirects, and reading the response body. Default value: equals the global Timeout configuration parameter. Limits: 1-30
Plugins.Ceph.KeepAlive — Sets a time for waiting before unused connections will be closed. Default value: 300 sec. Limits: 60-900
A connection can be configured using either keys' parameters or named sessions.
Notes:
You can leave any connection parameter empty, a default hard-coded value will be used in the such case.
Embedded URI credentials (userinfo) are forbidden and will be ignored. So, you can't pass the credentials by this:
ceph.ping[https://user:[email protected]] — WRONG
The correct way is:
ceph.ping[https://127.0.0.1,user,apikey]
The only supported network schema for a URI is "https". Examples of valid URIs:
The common parameters for all keys are: [ConnString][,User][,ApiKey] Where ConnString can be either a URI or a session name. ConnString will be treated as a URI if no session with the given name is found. If you use ConnString as a session name, just skip the rest of the connection parameters.
Named sessions allow you to define specific parameters for each Ceph instance. Currently, there are only three supported parameters: Uri, User and ApiKey. It's a bit more secure way to store credentials compared to item keys or macros.
E.g: suppose you have two Ceph clusters: "Prod" and "Test". You should add the following options to the agent configuration file:
Plugins.Ceph.Sessions.Prod.Uri=https://192.168.1.1:8003
Plugins.Ceph.Sessions.Prod.User=<UserForProd>
Plugins.Ceph.Sessions.Prod.ApiKey=<ApiKeyForProd>
Plugins.Ceph.Sessions.Test.Uri=https://192.168.0.1:8003
Plugins.Ceph.Sessions.Test.User=<UserForTest>
Plugins.Ceph.Sessions.Test.ApiKey=<ApiKeyForTest>
Then you will be able to use these names as the 1st parameter (ConnString) in keys instead of URIs, e.g:
ceph.ping[Prod]
ceph.ping[Test]
Note: sessions names are case-sensitive.
ceph.df.details[<commonParams>] — Returns information about cluster’s data usage and distribution among pools. Uses data provided by "df detail" command. Output sample:
{
"pools": {
"device_health_metrics": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
},
"new_pool": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 695039808
},
"test_zabbix": {
"percent_used": 0,
"objects": 4,
"bytes_used": 786432,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"stored_raw": 66618,
"max_avail": 1390035968
},
"zabbix": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
}
},
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"num_pools": 4,
"total_bytes": 12872318976,
"total_avail_bytes": 6898843648,
"total_used_bytes": 2752249856,
"total_objects": 4
}
ceph.osd.stats[<commonParams>] — Returns aggregated and per OSD statistics. Uses data provided by "pg dump" command. Output sample:
{
"osd_latency_apply": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_latency_commit": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_fill": {
"min": 47,
"max": 47,
"avg": 47
},
"osd_pgs": {
"min": 65,
"max": 65,
"avg": 65
},
"osds": {
"0": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"1": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"2": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
}
}
}
ceph.osd.discovery[<commonParams>] — Returns a list of discovered OSDs in LLD format. Can be used in conjunction with "ceph.osd.stats" and "ceph.osd.dump" in order to create "per osd" items. Uses data provided by "osd crush tree" command. Output sample:
[
{
"{#OSDNAME}": "0",
"{#CLASS}": "hdd",
"{#HOST}": "node1"
},
{
"{#OSDNAME}": "1",
"{#CLASS}": "hdd",
"{#HOST}": "node2"
},
{
"{#OSDNAME}": "2",
"{#CLASS}": "hdd",
"{#HOST}": "node3"
}
]
ceph.osd.dump[<commonParams>] — Returns usage thresholds and statuses of OSDs. Uses data provided by "osd dump" command. Output sample:
{
"osd_backfillfull_ratio": 0.9,
"osd_full_ratio": 0.95,
"osd_nearfull_ratio": 0.85,
"num_pg_temp": 65,
"osds": {
"0": {
"in": 1,
"up": 1
},
"1": {
"in": 1,
"up": 1
},
"2": {
"in": 1,
"up": 1
}
}
}
ceph.ping[<commonParams>] — Tests if a connection is alive or not. Uses data provided by "health" command. Returns:
ceph.pool.discovery[<commonParams>] — Returns a list of discovered pools in LLD format. Can be used in conjunction with "ceph.df.details" in order to create "per pool" items. Uses data provided by "osd dump" and "osd crush rule dump" commands. Output sample:
[
{
"{#POOLNAME}": "device_health_metrics",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "test_zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "new_pool",
"{#CRUSHRULE}": "newbucket"
}
]
ceph.status[<commonParams>] — Returns an overall cluster's status. Uses data provided by "status" command. Output sample:
{
"overall_status": 2,
"num_mon": 3,
"num_osd": 3,
"num_osd_in": 2,
"num_osd_up": 1,
"num_pg": 66,
"pg_states": {
"activating": 0,
"active": 0,
"backfill_toofull": 0,
"backfill_unfound": 0,
"backfill_wait": 0,
"backfilling": 0,
"clean": 0,
"creating": 0,
"deep": 0,
"degraded": 36,
"down": 0,
"forced_backfill": 0,
"forced_recovery": 0,
"incomplete": 0,
"inconsistent": 0,
"laggy": 0,
"peered": 65,
"peering": 0,
"recovering": 0,
"recovery_toofull": 0,
"recovery_unfound": 1,
"recovery_wait": 0,
"remapped": 0,
"repair": 0,
"scrubbing": 0,
"snaptrim": 0,
"snaptrim_error": 0,
"snaptrim_wait": 0,
"stale": 0,
"undersized": 65,
"unknown": 1,
"wait": 0
},
"min_mon_release_name": "octopus"
}
The plugin uses Zabbix agent's logs. You can increase debugging level of Zabbix Agent if you need more details about what is happening.
If you get the error "x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs", probably you need to set the InsecureSkipVerify option to "true" or use a certificate that is signed by the organization’s certificate authority.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/ceph?at=release/5.4
Provides native Zabbix solution for monitoring Ceph clusters (distributed storage system). It can monitor several Ceph instances simultaneously, remote or local to the Zabbix Agent. Best for use in conjunction with the official Ceph template. You can extend it or create your template for your specific needs.
The Zabbix agent 2 configuration file is used to configure plugins.
Plugins.Ceph.InsecureSkipVerify — InsecureSkipVerify controls whether an http client verifies the
server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by
the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks.
This should be used only for testing.
Default value: false
Limits: false | true
Plugins.Ceph.Timeout — The maximum time in seconds for waiting when a request has to be done. The timeout includes
connection time, any redirects, and reading the response body.
Default value: equals the global Timeout configuration parameter.
Limits: 1-30
Plugins.Ceph.KeepAlive — Sets a time for waiting before unused connections will be closed.
Default value: 300 sec.
Limits: 60-900
A connection can be configured using either keys' parameters or named sessions.
Notes:
It is not possible to mix configuration using named sessions and keys' parameters simultaneously.
You can leave any connection parameter empty, a default hard-coded value will be used in the such case.
Embedded URI credentials (userinfo) are forbidden and will be ignored. So, you can't pass the credentials by this:
ceph.ping[https://user:[email protected]] — WRONG
The correct way is:
ceph.ping[https://127.0.0.1,user,apikey]
The only supported network schema for a URI is "https".
Examples of valid URIs:
The common parameters for all keys are: [ConnString][,User][,ApiKey]
Where ConnString can be either a URI or a session name.
ConnString will be treated as a URI if no session with the given name is found.
If you use ConnString as a session name, just skip the rest of the connection parameters.
Named sessions allow you to define specific parameters for each Ceph instance. Currently, there are only three supported parameters: Uri, User and ApiKey. It's a bit more secure way to store credentials compared to item keys or macros.
E.g: suppose you have two Ceph clusters: "Prod" and "Test". You should add the following options to the agent configuration file:
Plugins.Ceph.Sessions.Prod.Uri=https://192.168.1.1:8003
Plugins.Ceph.Sessions.Prod.User=<UserForProd>
Plugins.Ceph.Sessions.Prod.ApiKey=<ApiKeyForProd>
Plugins.Ceph.Sessions.Test.Uri=https://192.168.0.1:8003
Plugins.Ceph.Sessions.Test.User=<UserForTest>
Plugins.Ceph.Sessions.Test.ApiKey=<ApiKeyForTest>
Then you will be able to use these names as the 1st parameter (ConnString) in keys instead of URIs, e.g:
ceph.ping[Prod]
ceph.ping[Test]
Note: sessions names are case-sensitive.
ceph.df.details[<commonParams>] — Returns information about cluster’s data usage and distribution among pools.
Uses data provided by "df detail" command.
Output sample:
{
"pools": {
"device_health_metrics": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
},
"new_pool": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 695039808
},
"test_zabbix": {
"percent_used": 0,
"objects": 4,
"bytes_used": 786432,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"stored_raw": 66618,
"max_avail": 1390035968
},
"zabbix": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
}
},
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"num_pools": 4,
"total_bytes": 12872318976,
"total_avail_bytes": 6898843648,
"total_used_bytes": 2752249856,
"total_objects": 4
}
ceph.osd.stats[<commonParams>] — Returns aggregated and per OSD statistics.
Uses data provided by "pg dump" command.
Output sample:
{
"osd_latency_apply": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_latency_commit": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_fill": {
"min": 47,
"max": 47,
"avg": 47
},
"osd_pgs": {
"min": 65,
"max": 65,
"avg": 65
},
"osds": {
"0": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"1": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"2": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
}
}
}
ceph.osd.discovery[<commonParams>] — Returns a list of discovered OSDs in LLD format.
Can be used in conjunction with "ceph.osd.stats" and "ceph.osd.dump" in order to create "per osd" items.
Uses data provided by "osd crush tree" command.
Output sample:
[
{
"{#OSDNAME}": "0",
"{#CLASS}": "hdd",
"{#HOST}": "node1"
},
{
"{#OSDNAME}": "1",
"{#CLASS}": "hdd",
"{#HOST}": "node2"
},
{
"{#OSDNAME}": "2",
"{#CLASS}": "hdd",
"{#HOST}": "node3"
}
]
ceph.osd.dump[<commonParams>] — Returns usage thresholds and statuses of OSDs.
Uses data provided by "osd dump" command.
Output sample:
{
"osd_backfillfull_ratio": 0.9,
"osd_full_ratio": 0.95,
"osd_nearfull_ratio": 0.85,
"num_pg_temp": 65,
"osds": {
"0": {
"in": 1,
"up": 1
},
"1": {
"in": 1,
"up": 1
},
"2": {
"in": 1,
"up": 1
}
}
}
ceph.ping[<commonParams>] — Tests if a connection is alive or not.
Uses data provided by "health" command.
Returns:
ceph.pool.discovery[<commonParams>] — Returns a list of discovered pools in LLD format.
Can be used in conjunction with "ceph.df.details" in order to create "per pool" items.
Uses data provided by "osd dump" and "osd crush rule dump" commands.
Output sample:
[
{
"{#POOLNAME}": "device_health_metrics",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "test_zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "new_pool",
"{#CRUSHRULE}": "newbucket"
}
]
ceph.status[<commonParams>] — Returns an overall cluster's status.
Uses data provided by "status" command.
Output sample:
{
"overall_status": 2,
"num_mon": 3,
"num_osd": 3,
"num_osd_in": 2,
"num_osd_up": 1,
"num_pg": 66,
"pg_states": {
"activating": 0,
"active": 0,
"backfill_toofull": 0,
"backfill_unfound": 0,
"backfill_wait": 0,
"backfilling": 0,
"clean": 0,
"creating": 0,
"deep": 0,
"degraded": 36,
"down": 0,
"forced_backfill": 0,
"forced_recovery": 0,
"incomplete": 0,
"inconsistent": 0,
"laggy": 0,
"peered": 65,
"peering": 0,
"recovering": 0,
"recovery_toofull": 0,
"recovery_unfound": 1,
"recovery_wait": 0,
"remapped": 0,
"repair": 0,
"scrubbing": 0,
"snaptrim": 0,
"snaptrim_error": 0,
"snaptrim_wait": 0,
"stale": 0,
"undersized": 65,
"unknown": 1,
"wait": 0
},
"min_mon_release_name": "octopus"
}
The plugin uses Zabbix agent's logs. You can increase debugging level of Zabbix Agent if you need more details about what is happening.
If you get the error "x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs", probably you need to set the InsecureSkipVerify option to "true" or use a certificate that is signed by the organization’s certificate authority.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/ceph?at=release/5.0
Provides native Zabbix solution for monitoring Ceph clusters (distributed storage system). It can monitor several Ceph instances simultaneously, remote or local to the Zabbix Agent. Best for use in conjunction with the official Ceph template. You can extend it or create your template for your specific needs.
The Zabbix agent 2 configuration file is used to configure plugins.
Plugins.Ceph.InsecureSkipVerify — InsecureSkipVerify controls whether an http client verifies the
server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by
the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks.
This should be used only for testing.
Default value: false
Limits: false | true
Plugins.Ceph.Timeout — The maximum time in seconds for waiting when a request has to be done. The timeout includes
connection time, any redirects, and reading the response body.
Default value: equals the global Timeout configuration parameter.
Limits: 1-30
Plugins.Ceph.KeepAlive — Sets a time for waiting before unused connections will be closed.
Default value: 300 sec.
Limits: 60-900
A connection can be configured using either keys' parameters or named sessions.
Notes:
You can leave any connection parameter empty, a default hard-coded value will be used in the such case.
Embedded URI credentials (userinfo) are forbidden and will be ignored. So, you can't pass the credentials by this:
ceph.ping[https://user:[email protected]] — WRONG
The correct way is:
ceph.ping[https://127.0.0.1,user,apikey]
The only supported network schema for a URI is "https".
Examples of valid URIs:
The common parameters for all keys are: [ConnString][,User][,ApiKey]
Where ConnString can be either a URI or a session name.
ConnString will be treated as a URI if no session with the given name is found.
If you use ConnString as a session name, just skip the rest of the connection parameters.
Named sessions allow you to define specific parameters for each Ceph instance. Currently, there are only three supported parameters: Uri, User and ApiKey. It's a bit more secure way to store credentials compared to item keys or macros.
E.g: suppose you have two Ceph clusters: "Prod" and "Test". You should add the following options to the agent configuration file:
Plugins.Ceph.Sessions.Prod.Uri=https://192.168.1.1:8003
Plugins.Ceph.Sessions.Prod.User=<UserForProd>
Plugins.Ceph.Sessions.Prod.ApiKey=<ApiKeyForProd>
Plugins.Ceph.Sessions.Test.Uri=https://192.168.0.1:8003
Plugins.Ceph.Sessions.Test.User=<UserForTest>
Plugins.Ceph.Sessions.Test.ApiKey=<ApiKeyForTest>
Then you will be able to use these names as the 1st parameter (ConnString) in keys instead of URIs, e.g:
ceph.ping[Prod]
ceph.ping[Test]
Note: sessions names are case-sensitive.
ceph.df.details[<commonParams>] — Returns information about cluster’s data usage and distribution among pools.
Uses data provided by "df detail" command.
Output sample:
{
"pools": {
"device_health_metrics": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
},
"new_pool": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 695039808
},
"test_zabbix": {
"percent_used": 0,
"objects": 4,
"bytes_used": 786432,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"stored_raw": 66618,
"max_avail": 1390035968
},
"zabbix": {
"percent_used": 0,
"objects": 0,
"bytes_used": 0,
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 0,
"wr_bytes": 0,
"stored_raw": 0,
"max_avail": 1390035968
}
},
"rd_ops": 0,
"rd_bytes": 0,
"wr_ops": 4,
"wr_bytes": 24576,
"num_pools": 4,
"total_bytes": 12872318976,
"total_avail_bytes": 6898843648,
"total_used_bytes": 2752249856,
"total_objects": 4
}
ceph.osd.stats[<commonParams>] — Returns aggregated and per OSD statistics.
Uses data provided by "pg dump" command.
Output sample:
{
"osd_latency_apply": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_latency_commit": {
"min": 0,
"max": 0,
"avg": 0
},
"osd_fill": {
"min": 47,
"max": 47,
"avg": 47
},
"osd_pgs": {
"min": 65,
"max": 65,
"avg": 65
},
"osds": {
"0": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"1": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
},
"2": {
"osd_latency_apply": 0,
"osd_latency_commit": 0,
"num_pgs": 65,
"osd_fill": 47
}
}
}
ceph.osd.discovery[<commonParams>] — Returns a list of discovered OSDs in LLD format.
Can be used in conjunction with "ceph.osd.stats" and "ceph.osd.dump" in order to create "per osd" items.
Uses data provided by "osd crush tree" command.
Output sample:
[
{
"{#OSDNAME}": "0",
"{#CLASS}": "hdd",
"{#HOST}": "node1"
},
{
"{#OSDNAME}": "1",
"{#CLASS}": "hdd",
"{#HOST}": "node2"
},
{
"{#OSDNAME}": "2",
"{#CLASS}": "hdd",
"{#HOST}": "node3"
}
]
ceph.osd.dump[<commonParams>] — Returns usage thresholds and statuses of OSDs.
Uses data provided by "osd dump" command.
Output sample:
{
"osd_backfillfull_ratio": 0.9,
"osd_full_ratio": 0.95,
"osd_nearfull_ratio": 0.85,
"num_pg_temp": 65,
"osds": {
"0": {
"in": 1,
"up": 1
},
"1": {
"in": 1,
"up": 1
},
"2": {
"in": 1,
"up": 1
}
}
}
ceph.ping[<commonParams>] — Tests if a connection is alive or not.
Uses data provided by "health" command.
Returns:
ceph.pool.discovery[<commonParams>] — Returns a list of discovered pools in LLD format.
Can be used in conjunction with "ceph.df.details" in order to create "per pool" items.
Uses data provided by "osd dump" and "osd crush rule dump" commands.
Output sample:
[
{
"{#POOLNAME}": "device_health_metrics",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "test_zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "zabbix",
"{#CRUSHRULE}": "default"
},
{
"{#POOLNAME}": "new_pool",
"{#CRUSHRULE}": "newbucket"
}
]
ceph.status[<commonParams>] — Returns an overall cluster's status.
Uses data provided by "status" command.
Output sample:
{
"overall_status": 2,
"num_mon": 3,
"num_osd": 3,
"num_osd_in": 2,
"num_osd_up": 1,
"num_pg": 66,
"pg_states": {
"activating": 0,
"active": 0,
"backfill_toofull": 0,
"backfill_unfound": 0,
"backfill_wait": 0,
"backfilling": 0,
"clean": 0,
"creating": 0,
"deep": 0,
"degraded": 36,
"down": 0,
"forced_backfill": 0,
"forced_recovery": 0,
"incomplete": 0,
"inconsistent": 0,
"laggy": 0,
"peered": 65,
"peering": 0,
"recovering": 0,
"recovery_toofull": 0,
"recovery_unfound": 1,
"recovery_wait": 0,
"remapped": 0,
"repair": 0,
"scrubbing": 0,
"snaptrim": 0,
"snaptrim_error": 0,
"snaptrim_wait": 0,
"stale": 0,
"undersized": 65,
"unknown": 1,
"wait": 0
},
"min_mon_release_name": "octopus"
}
The plugin uses Zabbix agent's logs. You can increase debugging level of Zabbix Agent if you need more details about what is happening.
If you get the error "x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs", probably you need to set the InsecureSkipVerify option to "true" or use a certificate that is signed by the organization’s certificate authority.
| Link | Source | Compatibility | Type, Technology | Created Updated | Rating |
|---|---|---|---|---|---|
| ZABBIX PLUGIN The Zabbix plugin actively sends information to a Zabbix server like: * Ceph status * I/O operations * I/O bandwidth * OSD status * Storage utilization docs.ceph.com/docs/master/mgr/zabbix/ |
|
Vendor
|
|||
| Zabbix Agent plugin for CEPH monitoring github.com/zhushilu/zabbix-ceph [cn] |
GitHub |
Externalscripts, Templates Bash |
2017-12-08 4 y |
||
| Simple template that allow monitoring Ceph OSD nodes github.com/sorrowless/zabbix_template_ceph |
GitHub |
Externalscripts, Templates Bash |
2014-12-04 8 y |
||
| Monitoring Ceph Cluster github.com/ryanblack/zabbix_ceph [ru] |
GitHub |
Externalscripts, Templates Bash |
2017-04-07 8 y |
||
| Zabbix Agent plugin for Ceph monitoring github.com/491852809/ceph-zabbix [cn] |
GitHub |
Externalscripts, Templates Agent |
2018-03-04 8 y |
||
| Small collection of scripts for CEPH luminous Zabbix monitoring github.com/c2560242/ceph-luminous-zabbix |
GitHub |
Externalscripts, Templates Agent |
2017-11-21 8 y |