# HPE Primera by HTTP ## Overview The template to monitor HPE Primera by HTTP. It works without any external scripts and uses the script item. ## Requirements Zabbix version: 7.0 and higher. ## Tested versions This template has been tested on: - HPE Primera 4.2.1.6 ## Configuration > Zabbix should be configured according to the instructions in the [Templates out of the box](https://www.zabbix.com/documentation/7.0/manual/config/templates_out_of_the_box) section. ## Setup 1. Create user zabbix on the storage with browse role and enable it for all domains. 2. The WSAPI server does not start automatically. Log in to the CLI as Super, Service, or any role granted the wsapi_set right. Start the WSAPI server by command: `startwsapi`. To check WSAPI state use command: `showwsapi`. 3. Link template to the host. 4. Configure macros {$HPE.PRIMERA.API.USERNAME} and {$HPE.PRIMERA.API.PASSWORD}. ### Macros used |Name|Description|Default| |----|-----------|-------| |{$HPE.PRIMERA.API.PASSWORD}|
Specify password for WSAPI.
|| |{$HPE.PRIMERA.API.USERNAME}|Specify user name for WSAPI.
|`zabbix`| |{$HPE.PRIMERA.LLD.FILTER.TASK.NAME.MATCHES}|Filter of discoverable tasks by name.
|`CHANGE_IF_NEEDED`| |{$HPE.PRIMERA.LLD.FILTER.TASK.NAME.NOT_MATCHES}|Filter to exclude discovered tasks by name.
|`.*`| |{$HPE.PRIMERA.LLD.FILTER.TASK.TYPE.MATCHES}|Filter of discoverable tasks by type.
|`.*`| |{$HPE.PRIMERA.LLD.FILTER.TASK.TYPE.NOT_MATCHES}|Filter to exclude discovered tasks by type.
|`CHANGE_IF_NEEDED`| |{$HPE.PRIMERA.DATA.TIMEOUT}|Response timeout for WSAPI.
|`15s`| |{$HPE.PRIMERA.API.SCHEME}|The WSAPI scheme (http/https).
|`https`| |{$HPE.PRIMERA.API.PORT}|The WSAPI port.
|`443`| |{$HPE.PRIMERA.VOLUME.NAME.MATCHES}|This macro is used in filters of volume discovery rule.
|`.*`| |{$HPE.PRIMERA.VOLUME.NAME.NOT_MATCHES}|This macro is used in filters of volume discovery rule.
|`^(admin\|.srdata\|.mgmtdata)$`| |{$HPE.PRIMERA.CPG.NAME.MATCHES}|This macro is used in filters of CPGs discovery rule.
|`.*`| |{$HPE.PRIMERA.CPG.NAME.NOT_MATCHES}|This macro is used in filters of CPGs discovery rule.
|`CHANGE_IF_NEEDED`| ### Items |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |HPE Primera: Get data|The JSON with result of WSAPI requests.
|Script|hpe.primera.get.data| |HPE Primera: Get errors|A list of errors from WSAPI requests.
|Dependent item|hpe.primera.get.errors**Preprocessing**
JSON Path: `$.errors`
Discard unchanged with heartbeat: `1h`
Disks data.
|Dependent item|hpe.primera.get.disks**Preprocessing**
JSON Path: `$.disks`
⛔️Custom on fail: Discard value
Common provisioning groups data.
|Dependent item|hpe.primera.get.cpgs**Preprocessing**
JSON Path: `$.cpgs`
⛔️Custom on fail: Discard value
Hosts data.
|Dependent item|hpe.primera.get.hosts**Preprocessing**
JSON Path: `$.hosts`
⛔️Custom on fail: Discard value
Ports data.
|Dependent item|hpe.primera.get.ports**Preprocessing**
JSON Path: `$.ports`
⛔️Custom on fail: Discard value
System data.
|Dependent item|hpe.primera.get.system**Preprocessing**
JSON Path: `$.system`
⛔️Custom on fail: Discard value
Tasks data.
|Dependent item|hpe.primera.get.tasks**Preprocessing**
JSON Path: `$.tasks`
⛔️Custom on fail: Discard value
Volumes data.
|Dependent item|hpe.primera.get.volumes**Preprocessing**
JSON Path: `$.volumes`
⛔️Custom on fail: Discard value
Allocated capacity in the system.
|Dependent item|hpe.primera.system.capacity.allocated**Preprocessing**
JSON Path: `$.allocatedCapacityMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Chunklet size.
|Dependent item|hpe.primera.system.chunklet.size**Preprocessing**
JSON Path: `$.chunkletSizeMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Contact of the system.
|Dependent item|hpe.primera.system.contact**Preprocessing**
JSON Path: `$.contact`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1d`
Failed capacity in the system.
|Dependent item|hpe.primera.system.capacity.failed**Preprocessing**
JSON Path: `$.failedCapacityMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Free capacity in the system.
|Dependent item|hpe.primera.system.capacity.free**Preprocessing**
JSON Path: `$.freeCapacityMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Location of the system.
|Dependent item|hpe.primera.system.location**Preprocessing**
JSON Path: `$.location`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1d`
System model.
|Dependent item|hpe.primera.system.model**Preprocessing**
JSON Path: `$.model`
Discard unchanged with heartbeat: `1d`
System name.
|Dependent item|hpe.primera.system.name**Preprocessing**
JSON Path: `$.name`
Discard unchanged with heartbeat: `6h`
System serial number.
|Dependent item|hpe.primera.system.serial_number**Preprocessing**
JSON Path: `$.serialNumber`
Discard unchanged with heartbeat: `1d`
Storage system software version number.
|Dependent item|hpe.primera.system.sw_version**Preprocessing**
JSON Path: `$.systemVersion`
Discard unchanged with heartbeat: `1d`
Total capacity in the system.
|Dependent item|hpe.primera.system.capacity.total**Preprocessing**
JSON Path: `$.totalCapacityMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Total number of nodes in the system.
|Dependent item|hpe.primera.system.nodes.total**Preprocessing**
JSON Path: `$.totalNodes`
Discard unchanged with heartbeat: `1h`
Number of online nodes in the system.
|Dependent item|hpe.primera.system.nodes.online**Preprocessing**
JSON Path: `$.onlineNodes.length()`
Discard unchanged with heartbeat: `1h`
Number of physical disks.
|Dependent item|hpe.primera.disks.total**Preprocessing**
JSON Path: `$.total`
Discard unchanged with heartbeat: `1h`
Checks if the service is running and accepting TCP connections.
|Simple check|net.tcp.service["{$HPE.PRIMERA.API.SCHEME}","{HOST.CONN}","{$HPE.PRIMERA.API.PORT}"]**Preprocessing**
Discard unchanged with heartbeat: `10m`
Zabbix has received errors in requests to WSAPI.
|`length(last(/HPE Primera by HTTP/hpe.primera.get.errors))>0`|Average|**Depends on**:List of CPGs resources.
|Dependent item|hpe.primera.cpg.discovery**Preprocessing**
JSON Path: `$.members`
Discard unchanged with heartbeat: `6h`
CPG {#NAME} data
|Dependent item|hpe.primera.cpg["{#ID}",data]**Preprocessing**
JSON Path: `$.members[?(@.id == "{#ID}")].first()`
Detailed state of the CPG:
LDS_NOT_STARTED (1) - LDs not started.
NOT_STARTED (2) - VV not started.
NEEDS_CHECK (3) - check for consistency.
NEEDS_MAINT_CHECK (4) - maintenance check is required.
INTERNAL_CONSISTENCY_ERROR (5) - internal consistency error.
SNAPDATA_INVALID (6) - invalid snapshot data.
PRESERVED (7) - unavailable LD sets due to missing chunklets. Preserved remaining VV data.
STALE (8) - parts of the VV contain old data because of a copy-on-write operation.
COPY_FAILED (9) - a promote or copy operation to this volume failed.
DEGRADED_AVAIL (10) - degraded due to availability.
DEGRADED_PERF (11) - degraded due to performance.
PROMOTING (12) - volume is the current target of a promote operation.
COPY_TARGET (13) - volume is the current target of a physical copy operation.
RESYNC_TARGET (14) - volume is the current target of a resynchronized copy operation.
TUNING (15) - volume tuning is in progress.
CLOSING (16) - volume is closing.
REMOVING (17) - removing the volume.
REMOVING_RETRY (18) - retrying a volume removal operation.
CREATING (19) - creating a volume.
COPY_SOURCE (20) - copy source.
IMPORTING (21) - importing a volume.
CONVERTING (22) - converting a volume.
INVALID (23) - invalid.
EXCLUSIVE (24) - local storage system has exclusive access to the volume.
CONSISTENT (25) - volume is being imported consistently along with other volumes in the VV set.
STANDBY (26) - volume in standby mode.
SD_META_INCONSISTENT (27) - SD Meta Inconsistent.
SD_NEEDS_FIX (28) - SD needs fix.
SD_META_FIXING (29) - SD meta fix.
UNKNOWN (999) - unknown state.
NOT_SUPPORTED_BY_WSAPI (1000) - state not supported by WSAPI.
|Dependent item|hpe.primera.cpg.state["{#ID}",degraded]**Preprocessing**
JSON Path: `$.degradedStates`
Detailed state of the CPG:
LDS_NOT_STARTED (1) - LDs not started.
NOT_STARTED (2) - VV not started.
NEEDS_CHECK (3) - check for consistency.
NEEDS_MAINT_CHECK (4) - maintenance check is required.
INTERNAL_CONSISTENCY_ERROR (5) - internal consistency error.
SNAPDATA_INVALID (6) - invalid snapshot data.
PRESERVED (7) - unavailable LD sets due to missing chunklets. Preserved remaining VV data.
STALE (8) - parts of the VV contain old data because of a copy-on-write operation.
COPY_FAILED (9) - a promote or copy operation to this volume failed.
DEGRADED_AVAIL (10) - degraded due to availability.
DEGRADED_PERF (11) - degraded due to performance.
PROMOTING (12) - volume is the current target of a promote operation.
COPY_TARGET (13) - volume is the current target of a physical copy operation.
RESYNC_TARGET (14) - volume is the current target of a resynchronized copy operation.
TUNING (15) - volume tuning is in progress.
CLOSING (16) - volume is closing.
REMOVING (17) - removing the volume.
REMOVING_RETRY (18) - retrying a volume removal operation.
CREATING (19) - creating a volume.
COPY_SOURCE (20) - copy source.
IMPORTING (21) - importing a volume.
CONVERTING (22) - converting a volume.
INVALID (23) - invalid.
EXCLUSIVE (24) - local storage system has exclusive access to the volume.
CONSISTENT (25) - volume is being imported consistently along with other volumes in the VV set.
STANDBY (26) - volume in standby mode.
SD_META_INCONSISTENT (27) - SD Meta Inconsistent.
SD_NEEDS_FIX (28) - SD needs fix.
SD_META_FIXING (29) - SD meta fix.
UNKNOWN (999) - unknown state.
NOT_SUPPORTED_BY_WSAPI (1000) - state not supported by WSAPI.
|Dependent item|hpe.primera.cpg.state["{#ID}",failed]**Preprocessing**
JSON Path: `$.failedStates`
JavaScript: `return JSON.stringify(JSON.parse(value));`
Free CPG space.
|Dependent item|hpe.primera.cpg.space["{#ID}",free]**Preprocessing**
JSON Path: `$.freeSpaceMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Number of FPVVs (Fully Provisioned Virtual Volumes) allocated in the CPG.
|Dependent item|hpe.primera.cpg.fpvv["{#ID}",count]**Preprocessing**
JSON Path: `$.numFPVVs`
Discard unchanged with heartbeat: `1h`
Number of TPVVs (Thinly Provisioned Virtual Volumes) allocated in the CPG.
|Dependent item|hpe.primera.cpg.tpvv["{#ID}",count]**Preprocessing**
JSON Path: `$.numTPVVs`
Discard unchanged with heartbeat: `1h`
Number of TDVVs (Thinly Deduplicated Virtual Volume) created in the CPG.
|Dependent item|hpe.primera.cpg.tdvv["{#ID}",count]**Preprocessing**
JSON Path: `$.numTDVVs`
Discard unchanged with heartbeat: `1h`
Raw free space.
|Dependent item|hpe.primera.cpg.space.raw["{#ID}",free]**Preprocessing**
JSON Path: `$.rawFreeSpaceMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Raw shared space.
|Dependent item|hpe.primera.cpg.space.raw["{#ID}",shared]**Preprocessing**
JSON Path: `$.rawSharedSpaceMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Raw total space.
|Dependent item|hpe.primera.cpg.space.raw["{#ID}",total]**Preprocessing**
JSON Path: `$.rawTotalSpaceMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Shared CPG space.
|Dependent item|hpe.primera.cpg.space["{#ID}",shared]**Preprocessing**
JSON Path: `$.sharedSpaceMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Overall state of the CPG:
NORMAL (1) - normal operation;
DEGRADED (2) - degraded state;
FAILED (3) - abnormal operation;
UNKNOWN (99) - unknown state.
|Dependent item|hpe.primera.cpg.state["{#ID}"]**Preprocessing**
JSON Path: `$.state`
Total physical (raw) logical disk space in snapshot administration.
|Dependent item|hpe.primera.cpg.space.sa["{#ID}",raw_total]**Preprocessing**
JSON Path: `$.SAUsage.rawTotalMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Total physical (raw) logical disk space in snapshot data space.
|Dependent item|hpe.primera.cpg.space.sd["{#ID}",raw_total]**Preprocessing**
JSON Path: `$.SDUsage.rawTotalMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Total physical (raw) logical disk space in user data space.
|Dependent item|hpe.primera.cpg.space.usr["{#ID}",raw_total]**Preprocessing**
JSON Path: `$.UsrUsage.rawTotalMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Total logical disk space in snapshot administration.
|Dependent item|hpe.primera.cpg.space.sa["{#ID}",total]**Preprocessing**
JSON Path: `$.SAUsage.totalMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Total logical disk space in snapshot data space.
|Dependent item|hpe.primera.cpg.space.sd["{#ID}",total]**Preprocessing**
JSON Path: `$.SDUsage.totalMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Total logical disk space in user data space.
|Dependent item|hpe.primera.cpg.space.usr["{#ID}",total]**Preprocessing**
JSON Path: `$.UsrUsage.totalMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Total CPG space.
|Dependent item|hpe.primera.cpg.space["{#ID}",total]**Preprocessing**
JSON Path: `$.totalSpaceMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Amount of physical (raw) logical disk used in snapshot administration.
|Dependent item|hpe.primera.cpg.space.sa["{#ID}",raw_used]**Preprocessing**
JSON Path: `$.SAUsage.rawUsedMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Amount of physical (raw) logical disk used in snapshot data space.
|Dependent item|hpe.primera.cpg.space.sd["{#ID}",raw_used]**Preprocessing**
JSON Path: `$.SDUsage.rawUsedMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Amount of physical (raw) logical disk used in user data space.
|Dependent item|hpe.primera.cpg.space.usr["{#ID}",raw_used]**Preprocessing**
JSON Path: `$.UsrUsage.rawUsedMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Amount of logical disk used in snapshot administration.
|Dependent item|hpe.primera.cpg.space.sa["{#ID}",used]**Preprocessing**
JSON Path: `$.SAUsage.usedMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Amount of logical disk used in snapshot data space.
|Dependent item|hpe.primera.cpg.space.sd["{#ID}",used]**Preprocessing**
JSON Path: `$.SDUsage.usedMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Amount of logical disk used in user data space.
|Dependent item|hpe.primera.cpg.space.usr["{#ID}",used]**Preprocessing**
JSON Path: `$.UsrUsage.usedMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
CPG [{#NAME}] is in degraded state.
|`last(/HPE Primera by HTTP/hpe.primera.cpg.state["{#ID}"])=2`|Average|| |CPG [{#NAME}]: Failed|CPG [{#NAME}] is in failed state.
|`last(/HPE Primera by HTTP/hpe.primera.cpg.state["{#ID}"])=3`|High|| ### LLD rule Disks discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Disks discovery|List of physical disk resources.
|Dependent item|hpe.primera.disks.discovery**Preprocessing**
JSON Path: `$.members`
Discard unchanged with heartbeat: `6h`
Disk [{#POSITION}] data
|Dependent item|hpe.primera.disk["{#ID}",data]**Preprocessing**
JSON Path: `$.members[?(@.id == "{#ID}")].first()`
Physical disk firmware version.
|Dependent item|hpe.primera.disk["{#ID}",fw_version]**Preprocessing**
JSON Path: `$.fwVersion`
Discard unchanged with heartbeat: `1d`
Physical disk free size.
|Dependent item|hpe.primera.disk["{#ID}",free_size]**Preprocessing**
JSON Path: `$.freeSizeMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Physical disk manufacturer.
|Dependent item|hpe.primera.disk["{#ID}",manufacturer]**Preprocessing**
JSON Path: `$.manufacturer`
Discard unchanged with heartbeat: `1d`
Manufacturer's device ID for disk.
|Dependent item|hpe.primera.disk["{#ID}",model]**Preprocessing**
JSON Path: `$.model`
Discard unchanged with heartbeat: `1d`
Indicates if this is a degraded path for the disk.
|Dependent item|hpe.primera.disk["{#ID}",loop_a0_degraded]**Preprocessing**
JSON Path: `$.loopA0.degraded`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `10m`
Indicates if this is a degraded path for the disk.
|Dependent item|hpe.primera.disk["{#ID}",loop_a1_degraded]**Preprocessing**
JSON Path: `$.loopA1.degraded`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `10m`
Indicates if this is a degraded path for the disk.
|Dependent item|hpe.primera.disk["{#ID}",loop_b0_degraded]**Preprocessing**
JSON Path: `$.loopB0.degraded`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `10m`
Indicates if this is a degraded path for the disk.
|Dependent item|hpe.primera.disk["{#ID}",loop_b1_degraded]**Preprocessing**
JSON Path: `$.loopB1.degraded`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `10m`
RPM of the physical disk.
|Dependent item|hpe.primera.disk["{#ID}",rpm]**Preprocessing**
JSON Path: `$.RPM`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1d`
Disk drive serial number.
|Dependent item|hpe.primera.disk["{#ID}",serial_number]**Preprocessing**
JSON Path: `$.serialNumber`
Discard unchanged with heartbeat: `1d`
State of the physical disk:
Normal (1) - physical disk is in Normal state;
Degraded (2) - physical disk is not operating normally;
New (3) - physical disk is new, needs to be admitted;
Failed (4) - physical disk has failed;
Unknown (99) - physical disk state is unknown.
|Dependent item|hpe.primera.disk["{#ID}",state]**Preprocessing**
JSON Path: `$.state`
⛔️Custom on fail: Set value to: `99`
Discard unchanged with heartbeat: `1h`
Physical disk total size.
|Dependent item|hpe.primera.disk["{#ID}",total_size]**Preprocessing**
JSON Path: `$.totalSizeMiB`
Discard unchanged with heartbeat: `1h`
Custom multiplier: `1048576`
Disk [{#POSITION}] path A0 in degraded state.
|`last(/HPE Primera by HTTP/hpe.primera.disk["{#ID}",loop_a0_degraded])=1`|Average|| |Disk [{#POSITION}]: Path A1 degraded|Disk [{#POSITION}] path A1 in degraded state.
|`last(/HPE Primera by HTTP/hpe.primera.disk["{#ID}",loop_a1_degraded])=1`|Average|| |Disk [{#POSITION}]: Path B0 degraded|Disk [{#POSITION}] path B0 in degraded state.
|`last(/HPE Primera by HTTP/hpe.primera.disk["{#ID}",loop_b0_degraded])=1`|Average|| |Disk [{#POSITION}]: Path B1 degraded|Disk [{#POSITION}] path B1 in degraded state.
|`last(/HPE Primera by HTTP/hpe.primera.disk["{#ID}",loop_b1_degraded])=1`|Average|| |Disk [{#POSITION}]: Degraded|Disk [{#POSITION}] in degraded state.
|`last(/HPE Primera by HTTP/hpe.primera.disk["{#ID}",state])=2`|Average|| |Disk [{#POSITION}]: Failed|Disk [{#POSITION}] in failed state.
|`last(/HPE Primera by HTTP/hpe.primera.disk["{#ID}",state])=3`|High|| |Disk [{#POSITION}]: Unknown issue|Disk [{#POSITION}] in unknown state.
|`last(/HPE Primera by HTTP/hpe.primera.disk["{#ID}",state])=99`|Info|| ### LLD rule Hosts discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Hosts discovery|List of host properties.
|Dependent item|hpe.primera.hosts.discovery**Preprocessing**
JSON Path: `$.members`
Discard unchanged with heartbeat: `6h`
Host [{#NAME}] data
|Dependent item|hpe.primera.host["{#ID}",data]**Preprocessing**
JSON Path: `$.members[?(@.id == "{#ID}")].first()`
Additional information for the host.
|Dependent item|hpe.primera.host["{#ID}",comment]**Preprocessing**
JSON Path: `$.descriptors.comment`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1d`
The host's owner and contact.
|Dependent item|hpe.primera.host["{#ID}",contact]**Preprocessing**
JSON Path: `$.descriptors.contact`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1d`
The host's IP address.
|Dependent item|hpe.primera.host["{#ID}",ipaddress]**Preprocessing**
JSON Path: `$.descriptors.IPAddr`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1d`
The host's location.
|Dependent item|hpe.primera.host["{#ID}",location]**Preprocessing**
JSON Path: `$.descriptors.location`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1d`
The host's model.
|Dependent item|hpe.primera.host["{#ID}",model]**Preprocessing**
JSON Path: `$.descriptors.model`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1d`
The operating system running on the host.
|Dependent item|hpe.primera.host["{#ID}",os]**Preprocessing**
JSON Path: `$.descriptors.os`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1d`
List of ports.
|Dependent item|hpe.primera.ports.discovery**Preprocessing**
JSON Path: `$.members`
Discard unchanged with heartbeat: `6h`
Port [{#NODE}:{#SLOT}:{#CARD.PORT}] data
|Dependent item|hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",data]**Preprocessing**
JSON Path: `The text is too long. Please see the template.`
The state of the failover operation, shown for the two ports indicated in the N:S:P and Partner columns. The value can be one of the following:
none (1) - no failover in operation;
failover_pending (2) - in the process of failing over to partner;
failed_over (3) - failed over to partner;
active (4) - the partner port is failed over to this port;
active_down (5) - the partner port is failed over to this port, but this port is down;
active_failed (6) - the partner port is failed over to this port, but this port is down;
failback_pending (7) - in the process of failing back from partner.
|Dependent item|hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",failover_state]**Preprocessing**
JSON Path: `$.failoverState`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1h`
Port link state:
CONFIG_WAIT (1) - configuration wait;
ALPA_WAIT (2) - ALPA wait;
LOGIN_WAIT (3) - login wait;
READY (4) - link is ready;
LOSS_SYNC (5) - link is loss sync;
ERROR_STATE (6) - in error state;
XXX (7) - xxx;
NONPARTICIPATE (8) - link did not participate;
COREDUMP (9) - taking coredump;
OFFLINE (10) - link is offline;
FWDEAD (11) - firmware is dead;
IDLE_FOR_RESET (12) - link is idle for reset;
DHCP_IN_PROGRESS (13) - DHCP is in progress;
PENDING_RESET (14) - link reset is pending;
NEW (15) - link in new. This value is applicable for only virtual ports;
DISABLED (16) - link in disabled. This value is applicable for only virtual ports;
DOWN (17) - link in down. This value is applicable for only virtual ports;
FAILED (18) - link in failed. This value is applicable for only virtual ports;
PURGING (19) - link in purging. This value is applicable for only virtual ports.
|Dependent item|hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state]**Preprocessing**
JSON Path: `$.linkState`
Discard unchanged with heartbeat: `1h`
Port connection type:
HOST (1) - FC port connected to hosts or fabric;
DISK (2) - FC port connected to disks;
FREE (3) - port is not connected to hosts or disks;
IPORT (4) - port is in iport mode;
RCFC (5) - FC port used for remote copy;
PEER (6) - FC port used for data migration;
RCIP (7) - IP (Ethernet) port used for remote copy;
ISCSI (8) - iSCSI (Ethernet) port connected to hosts;
CNA (9) - CNA port, which can be FCoE or iSCSI;
FS (10) - Ethernet File Persona ports.
|Dependent item|hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",type]**Preprocessing**
JSON Path: `$.type`
Discard unchanged with heartbeat: `1h`
Hardware type:
FC (1) - Fibre channel HBA;
ETH (2) - Ethernet NIC;
iSCSI (3) - iSCSI HBA;
CNA (4) - Converged network adapter;
SAS (5) - SAS HBA;
COMBO (6) - Combo card;
NVME (7) - NVMe drive;
UNKNOWN (99) - unknown hardware type.
|Dependent item|hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",hw_type]**Preprocessing**
JSON Path: `$.hardwareType`
Discard unchanged with heartbeat: `1h`
Port [{#NODE}:{#SLOT}:{#CARD.PORT}] has failover error.
|`last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",failover_state])<>1 and last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",failover_state])<>4`|Average|| |Port [{#NODE}:{#SLOT}:{#CARD.PORT}]: Link state is {ITEM.VALUE1}|Port [{#NODE}:{#SLOT}:{#CARD.PORT}] not in ready state.
|`last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])<>4 and last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])<>1 and last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])<>3 and last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])<>13 and last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])<>15 and last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])<>16`|High|| |Port [{#NODE}:{#SLOT}:{#CARD.PORT}]: Link state is {ITEM.VALUE1}|Port [{#NODE}:{#SLOT}:{#CARD.PORT}] not in ready state.
|`last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])=1 or last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])=3 or last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])=13 or last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])=15 or last(/HPE Primera by HTTP/hpe.primera.port["{#NODE}:{#SLOT}:{#CARD.PORT}",link_state])=16`|Average|| ### LLD rule Tasks discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Tasks discovery|List of tasks started within last 24 hours.
|Dependent item|hpe.primera.tasks.discovery**Preprocessing**
Discard unchanged with heartbeat: `6h`
Task [{#NAME}] data
|Dependent item|hpe.primera.task["{#ID}",data]**Preprocessing**
JSON Path: `$.[?(@.id == "{#ID}")].first()`
Task finish time.
|Dependent item|hpe.primera.task["{#ID}",finish_time]**Preprocessing**
JSON Path: `$.finishTime`
Discard unchanged with heartbeat: `6h`
Does not match regular expression: `^-$`
⛔️Custom on fail: Discard value
JavaScript: `The text is too long. Please see the template.`
Task start time.
|Dependent item|hpe.primera.task["{#ID}",start_time]**Preprocessing**
JSON Path: `$.startTime`
Discard unchanged with heartbeat: `6h`
JavaScript: `The text is too long. Please see the template.`
Task status:
DONE (1) - task is finished;
ACTIVE (2) - task is in progress;
CANCELLED (3) - task is canceled;
FAILED (4) - task failed.
|Dependent item|hpe.primera.task["{#ID}",status]**Preprocessing**
JSON Path: `$.status`
Discard unchanged with heartbeat: `10m`
Task type:
VV_COPY (1) - track the physical copy operations;
PHYS_COPY_RESYNC (2) - track physical copy resynchronization operations;
MOVE_REGIONS (3) - track region move operations;
PROMOTE_SV (4) - track virtual-copy promotions;
REMOTE_COPY_SYNC (5) - track remote copy group synchronizations;
REMOTE_COPY_REVERSE (6) - track the reversal of a remote copy group;
REMOTE_COPY_FAILOVER (7) - track the change-over of a secondary volume group to a primaryvolume group;REMOTE_COPY_RECOVER (8) - track synchronization start after a failover operation from originalsecondary cluster to original primary cluster;
REMOTE_COPY_RESTORE (9) - tracks the restoration process for groups that have already been recovered;
COMPACT_CPG (10) - track space consolidation in CPGs;
COMPACT_IDS (11) - track space consolidation in logical disks;
SNAPSHOT_ACCOUNTING (12) - track progress of snapshot space usage accounting;
CHECK_VV (13) - track the progress of the check-volume operation;
SCHEDULED_TASK (14) - track tasks that have been executed by the system scheduler;
SYSTEM_TASK (15) - track tasks that are periodically run by the storage system;
BACKGROUND_TASK (16) - track commands started using the starttask command;
IMPORT_VV (17) - track tasks that migrate data to the local storage system;
ONLINE_COPY (18) - track physical copy of the volume while online (createvvcopy-online command);
CONVERT_VV (19) - track tasks that convert a volume from an FPVV to a TPVV, and the reverse;
BACKGROUND_COMMAND (20) - track background command tasks;
CLX_SYNC (21) - track CLX synchronization tasks;
CLX_RECOVERY (22) - track CLX recovery tasks;
TUNE_SD (23) - tune copy space;
TUNE_VV (24) - tune virtual volume;
TUNE_VV_ROLLBACK (25) - tune virtual volume rollback;
TUNE_VV_RESTART (26) - tune virtual volume restart;
SYSTEM_TUNING (27) - system tuning;
NODE_RESCUE (28) - node rescue;
REPAIR_SYNC (29) - remote copy repair sync;
REMOTE_COPY_SWOVER (30) - remote copy switchover;
DEFRAGMENTATION (31) - defragmentation;
ENCRYPTION_CHANGE (32) - encryption change;
REMOTE_COPY_FAILSAFE (33) - remote copy failsafe;
TUNE_TPVV (34) - tune thin virtual volume;
REMOTE_COPY_CHG_MODE (35) - remote copy change mode;
ONLINE_PROMOTE (37) - online promote snap;
RELOCATE_PD (38) - relocate PD;
PERIODIC_CSS (39) - remote copy periodic CSS;
TUNEVV_LARGE (40) - tune large virtual volume;
SD_META_FIXER (41) - compression SD meta fixer;
DEDUP_DRYRUN (42) - preview dedup ratio;
COMPR_DRYRUN (43) - compression estimation;
DEDUP_COMPR_DRYRUN (44) - compression and dedup estimation;
UNKNOWN (99) - unknown task type.
|Dependent item|hpe.primera.task["{#ID}",type]**Preprocessing**
JSON Path: `$.type`
Discard unchanged with heartbeat: `6h`
Task [{#NAME}] is cancelled.
|`last(/HPE Primera by HTTP/hpe.primera.task["{#ID}",status])=3`|Info|| |Task [{#NAME}]: Failed|Task [{#NAME}] is failed.
|`last(/HPE Primera by HTTP/hpe.primera.task["{#ID}",status])=4`|Average|| ### LLD rule Volumes discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Volumes discovery|List of storage volume resources.
|Dependent item|hpe.primera.volumes.discovery**Preprocessing**
JSON Path: `$.members`
Discard unchanged with heartbeat: `6h`
Volume [{#NAME}] data
|Dependent item|hpe.primera.volume["{#ID}",data]**Preprocessing**
JSON Path: `$.members[?(@.id == "{#ID}")].first()`
Free administrative space.
|Dependent item|hpe.primera.volume.space.admin["{#ID}",free]**Preprocessing**
JSON Path: `$.adminSpace.freeMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Raw reserved administrative space.
|Dependent item|hpe.primera.volume.space.admin["{#ID}",raw_reserved]**Preprocessing**
JSON Path: `$.adminSpace.rawReservedMiB`
Discard unchanged with heartbeat: `12h`
Custom multiplier: `1048576`
Reserved administrative space.
|Dependent item|hpe.primera.volume.space.admin["{#ID}",reserved]**Preprocessing**
JSON Path: `$.adminSpace.reservedMiB`
Discard unchanged with heartbeat: `12h`
Custom multiplier: `1048576`
Used administrative space.
|Dependent item|hpe.primera.volume.space.admin["{#ID}",used]**Preprocessing**
JSON Path: `$.adminSpace.usedMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
The compaction ratio indicates the overall amount of storage space saved with thin technology.
|Dependent item|hpe.primera.volume.capacity.efficiency["{#ID}",compaction]**Preprocessing**
JSON Path: `$.capacityEfficiency.compaction`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1h`
Volume compression state:
YES (1) - compression is enabled on the volume;
NO (2) - compression is disabled on the volume;
OFF (3) - compression is turned off;
NA (4) - compression is not available on the volume.
|Dependent item|hpe.primera.volume.state["{#ID}",compression]**Preprocessing**
JSON Path: `$.compressionState`
Discard unchanged with heartbeat: `6h`
Volume deduplication state:
YES (1) - enables deduplication on the volume;
NO (2) - disables deduplication on the volume;
NA (3) - deduplication is not available;
OFF (4) - deduplication is turned off.
|Dependent item|hpe.primera.volume.state["{#ID}",deduplication]**Preprocessing**
JSON Path: `$.deduplicationState`
Discard unchanged with heartbeat: `6h`
Volume detailed state:
LDS_NOT_STARTED (1) - LDs not started.
NOT_STARTED (2) - VV not started.
NEEDS_CHECK (3) - check for consistency.
NEEDS_MAINT_CHECK (4) - maintenance check is required.
INTERNAL_CONSISTENCY_ERROR (5) - internal consistency error.
SNAPDATA_INVALID (6) - invalid snapshot data.
PRESERVED (7) - unavailable LD sets due to missing chunklets. Preserved remaining VV data.
STALE (8) - parts of the VV contain old data because of a copy-on-write operation.
COPY_FAILED (9) - a promote or copy operation to this volume failed.
DEGRADED_AVAIL (10) - degraded due to availability.
DEGRADED_PERF (11) - degraded due to performance.
PROMOTING (12) - volume is the current target of a promote operation.
COPY_TARGET (13) - volume is the current target of a physical copy operation.
RESYNC_TARGET (14) - volume is the current target of a resynchronized copy operation.
TUNING (15) - volume tuning is in progress.
CLOSING (16) - volume is closing.
REMOVING (17) - removing the volume.
REMOVING_RETRY (18) - retrying a volume removal operation.
CREATING (19) - creating a volume.
COPY_SOURCE (20) - copy source.
IMPORTING (21) - importing a volume.
CONVERTING (22) - converting a volume.
INVALID (23) - invalid.
EXCLUSIVE (24) - local storage system has exclusive access to the volume.
CONSISTENT (25) - volume is being imported consistently along with other volumes in the VV set.
STANDBY (26) - volume in standby mode.
SD_META_INCONSISTENT (27) - SD Meta Inconsistent.
SD_NEEDS_FIX (28) - SD needs fix.
SD_META_FIXING (29) - SD meta fix.
UNKNOWN (999) - unknown state.
NOT_SUPPORTED_BY_WSAPI (1000) - state not supported by WSAPI.
|Dependent item|hpe.primera.volume.state["{#ID}",degraded]**Preprocessing**
JSON Path: `$.degradedStates`
Volume detailed state:
LDS_NOT_STARTED (1) - LDs not started.
NOT_STARTED (2) - VV not started.
NEEDS_CHECK (3) - check for consistency.
NEEDS_MAINT_CHECK (4) - maintenance check is required.
INTERNAL_CONSISTENCY_ERROR (5) - internal consistency error.
SNAPDATA_INVALID (6) - invalid snapshot data.
PRESERVED (7) - unavailable LD sets due to missing chunklets. Preserved remaining VV data.
STALE (8) - parts of the VV contain old data because of a copy-on-write operation.
COPY_FAILED (9) - a promote or copy operation to this volume failed.
DEGRADED_AVAIL (10) - degraded due to availability.
DEGRADED_PERF (11) - degraded due to performance.
PROMOTING (12) - volume is the current target of a promote operation.
COPY_TARGET (13) - volume is the current target of a physical copy operation.
RESYNC_TARGET (14) - volume is the current target of a resynchronized copy operation.
TUNING (15) - volume tuning is in progress.
CLOSING (16) - volume is closing.
REMOVING (17) - removing the volume.
REMOVING_RETRY (18) - retrying a volume removal operation.
CREATING (19) - creating a volume.
COPY_SOURCE (20) - copy source.
IMPORTING (21) - importing a volume.
CONVERTING (22) - converting a volume.
INVALID (23) - invalid.
EXCLUSIVE (24) - local storage system has exclusive access to the volume.
CONSISTENT (25) - volume is being imported consistently along with other volumes in the VV set.
STANDBY (26) - volume in standby mode.
SD_META_INCONSISTENT (27) - SD Meta Inconsistent.
SD_NEEDS_FIX (28) - SD needs fix.
SD_META_FIXING (29) - SD meta fix.
UNKNOWN (999) - unknown state.
NOT_SUPPORTED_BY_WSAPI (1000) - state not supported by WSAPI.
|Dependent item|hpe.primera.volume.state["{#ID}",failed]**Preprocessing**
JSON Path: `$.failedStates`
JavaScript: `return JSON.stringify(JSON.parse(value));`
Overprovisioning capacity efficiency ratio.
|Dependent item|hpe.primera.volume.capacity.efficiency["{#ID}",overprovisioning]**Preprocessing**
JSON Path: `$.capacityEfficiency.overProvisioning`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1h`
Remote copy status of the volume:
NONE (1) - volume is not associated with remote copy;
PRIMARY (2) - volume is the primary copy;
SECONDARY (3) - volume is the secondary copy;
SNAP (4) - volume is the remote copy snapshot;
SYNC (5) - volume is a remote copy snapshot being used for synchronization;
DELETE (6) - volume is a remote copy snapshot that is marked for deletion;
UNKNOWN (99) - remote copy status is unknown for this volume.
|Dependent item|hpe.primera.volume.status["{#ID}",rcopy]**Preprocessing**
JSON Path: `$.rcopyStatus`
Free snapshot space.
|Dependent item|hpe.primera.volume.space.snapshot["{#ID}",free]**Preprocessing**
JSON Path: `$.snapshotSpace.freeMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Raw reserved snapshot space.
|Dependent item|hpe.primera.volume.space.snapshot["{#ID}",raw_reserved]**Preprocessing**
JSON Path: `$.snapshotSpace.rawReservedMiB`
Discard unchanged with heartbeat: `12h`
Custom multiplier: `1048576`
Reserved snapshot space.
|Dependent item|hpe.primera.volume.space.snapshot["{#ID}",reserved]**Preprocessing**
JSON Path: `$.snapshotSpace.reservedMiB`
Discard unchanged with heartbeat: `12h`
Custom multiplier: `1048576`
Used snapshot space.
|Dependent item|hpe.primera.volume.space.snapshot["{#ID}",used]**Preprocessing**
JSON Path: `$.snapshotSpace.usedMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
State of the volume:
NORMAL (1) - normal operation;
DEGRADED (2) - degraded state;
FAILED (3) - abnormal operation;
UNKNOWN (99) - unknown state.
|Dependent item|hpe.primera.volume.state["{#ID}"]**Preprocessing**
JSON Path: `$.state`
Indicates the amount of storage space saved using compression.
|Dependent item|hpe.primera.volume.capacity.efficiency["{#ID}",compression]**Preprocessing**
JSON Path: `$.capacityEfficiency.compression`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1h`
Indicates the amount of storage space saved using deduplication.
|Dependent item|hpe.primera.volume.capacity.efficiency["{#ID}",deduplication]**Preprocessing**
JSON Path: `$.capacityEfficiency.deduplication`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1h`
Indicates the amount of storage space saved using deduplication and compression together.
|Dependent item|hpe.primera.volume.capacity.efficiency["{#ID}",reduction]**Preprocessing**
JSON Path: `$.capacityEfficiency.dataReduction`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1h`
Total reserved space.
|Dependent item|hpe.primera.volume.space.total["{#ID}",reserved]**Preprocessing**
JSON Path: `$.totalReservedMiB`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `12h`
Custom multiplier: `1048576`
Virtual size of volume.
|Dependent item|hpe.primera.volume.space.total["{#ID}",size]**Preprocessing**
JSON Path: `$.sizeMiB`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `12h`
Custom multiplier: `1048576`
Total used space. Sum of used user space and used snapshot space.
|Dependent item|hpe.primera.volume.space.total["{#ID}",used]**Preprocessing**
JSON Path: `$.totalUsedMiB`
⛔️Custom on fail: Discard value
Custom multiplier: `1048576`
Free user space.
|Dependent item|hpe.primera.volume.space.user["{#ID}",free]**Preprocessing**
JSON Path: `$.userSpace.freeMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Raw reserved user space.
|Dependent item|hpe.primera.volume.space.user["{#ID}",raw_reserved]**Preprocessing**
JSON Path: `$.userSpace.rawReservedMiB`
Discard unchanged with heartbeat: `12h`
Custom multiplier: `1048576`
Reserved user space.
|Dependent item|hpe.primera.volume.space.user["{#ID}",reserved]**Preprocessing**
JSON Path: `$.userSpace.reservedMiB`
Discard unchanged with heartbeat: `12h`
Custom multiplier: `1048576`
Used user space.
|Dependent item|hpe.primera.volume.space.user["{#ID}",used]**Preprocessing**
JSON Path: `$.userSpace.usedMiB`
Discard unchanged with heartbeat: `10m`
Custom multiplier: `1048576`
Volume [{#NAME}] is in degraded state.
|`last(/HPE Primera by HTTP/hpe.primera.volume.state["{#ID}"])=2`|Average|| |Volume [{#NAME}]: Failed|Volume [{#NAME}] is in failed state.
|`last(/HPE Primera by HTTP/hpe.primera.volume.state["{#ID}"])=3`|High|| ## Feedback Please report any issues with the template at [`https://support.zabbix.com`](https://support.zabbix.com) You can also provide feedback, discuss the template, or ask for help at [`ZABBIX forums`](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback)