5.02021-11-21T21:50:34ZTemplatesEMC Unity REST-API v3EMC Unity REST-API v3## Overview
Tested on Unity 600
Python-script to get metrics from EMC Unity Storage. Script uses REST-API interface.
This script get next metrics:
BBU, Disk, Disk Array Enclosure, Disk Processor Enclosure, FAN, I/O Module, LCC, Lun, Memory Module, Pool, PortEth, PortFibreChannel, PortSAS, PSU, SSC, SSD, Storage Processors, Uncommitted Port.
TemplatesBBUBBU healthDAE healthDiskDisk healthDPE healthEthEth healthFANFAN healthFC healthFC Portget_data_from_scriptI/O Module healthInternalLCC healthLUNLUN healthMemoryModuleMemoryModule healthPoolPool healthPSUPSU healthSASSAS healthSSC healthSSD healthStorageProcessor healthUncommitted Port health- get discoveryEXTERNALunity_get_state.py["--api_ip={HOST.IP}","--api_port={$API_PORT}","--api_user={$API_USER}","--api_password={$API_PASSWORD}","--storage_name={HOST.NAME}","--discovery"]15mget_data_from_scriptPOST{count(30m,2,le)}>5{HOST.NAME} -> Error occurs in getting metricsHIGH
- get health stateEXTERNALunity_get_state.py["--api_ip={HOST.IP}","--api_port={$API_PORT}","--api_user={$API_USER}","--api_password={$API_PASSWORD}","--storage_name={HOST.NAME}","--status"]3mget_data_from_scriptPOST{count(30m,50,ge)}>5{HOST.NAME} -> Error occurs in sending metricsHIGH{nodata(3600)}=1{HOST.NAME} -> No data from storage for 1 hoursHIGH
- Count of unsupported itemsINTERNALzabbix[host,,items_unsupported]5mInternal({last()})>0{HOST.NAME} -> Exist unsupported itemsAVERAGE
BBUTRAPbattery01dHealth status of BBU "{#ID}"TRAPhealth.battery.[{#ID}]0BBU healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> BBU "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of BBU "{#ID}"TRAPrunning.battery.[{#ID}]0BBUUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> BBU "{#ID}" running status is {ITEM.VALUE}HIGHPOSTDisk Array Enclosure (DAE)TRAPdae01dHealth status of DAE "{#ID}"TRAPhealth.dae.[{#ID}]0DAE healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> DAE "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of DAE "{#ID}"TRAPrunning.dae.[{#ID}]0DAE healthUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> DAE "{#ID}" running status is {ITEM.VALUE}HIGHPOSTDiskTRAPdisk01dHealth status of disk "{#ID}"TRAPhealth.disk.[{#ID}]0Disk healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> Hard disk "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of disk "{#ID}"TRAPrunning.disk.[{#ID}]0DiskUnity_Running_StatusPOST({TRIGGER.VALUE}=0 and {last()}=6 and {change()}=1) or ({TRIGGER.VALUE}=1 and {change()}=0) or ({TRIGGER.VALUE}=1 and {last()}<>8 and {change()}=1){HOST.NAME} -> Hard disk "{#ID}" running status is {ITEM.VALUE}HIGHPOSTDisk Processor Enclosures (DPE)TRAPdpe01dHealth status of DPE "{#ID}"TRAPhealth.dpe.[{#ID}]0DPE healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> DPE "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of DPE "{#ID}"TRAPrunning.dpe.[{#ID}]0DPE healthUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> DPE "{#ID}" running status is {ITEM.VALUE}HIGHPOSTPortEthTRAPethernetPort01dHealth status of Ethernet port "{#ID}"TRAPhealth.ethernetPort.[{#ID}]0Eth healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> Ethernet Port "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of Ethernet port "{#ID}"TRAPlink.ethernetPort.[{#ID}]0EthUnity_Running_StatusPOST({TRIGGER.VALUE}=0 and {last()}=11 and {change()}=1) or ({TRIGGER.VALUE}=1 and {change()}=0){HOST.NAME} -> Ethernet Port "{#ID}" running status is {ITEM.VALUE}HIGHТриггер настроен так, что те порты, которые имеют линк-даун (еще не введены в эксплуатацию) - по ним триггеров нет.
Те порты, которые линк-ап (эксплуатириуются) - при смене состояния триггер загораетсяPOSTFANTRAPfan01dHealth Status of FAN "{#ID}"TRAPhealth.fan.[{#ID}]0FAN healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> FAN "{#ID}" health status is {ITEM.VALUE}HIGHRunning Status of FAN "{#ID}"TRAPrunning.fan.[{#ID}]0FANUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> FAN "{#ID}" running status is {ITEM.VALUE}HIGHPOSTPortFibreChannelTRAPfcPort01dHealth status of Fibre Channel port "{#ID}"TRAPhealth.fcPort.[{#ID}]0FC healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> FibreChannel Port "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of Fibre Channel port "{#ID}"TRAPlink.fcPort.[{#ID}]0FC PortUnity_Running_StatusPOST({TRIGGER.VALUE}=0 and {last()}=11 and {change()}=1) or ({TRIGGER.VALUE}=1) and {change()}=0{HOST.NAME} -> FibreChannel Port "{#ID}" running status is {ITEM.VALUE}HIGHТриггер настроен так, что те порты, которые имеют линк-даун (еще не введены в эксплуатацию) - по ним триггеров нет.
Те порты, которые линк-ап (эксплуатириуются) - при смене состояния триггер загораетсяPOSTI/O ModuleTRAPioModule01dI/O modules provide connectivity between SPs and Disk-Array Enclosures (DAEs)Health status of ioModule "{#ID}"TRAPhealth.ioModule.[{#ID}]0I/O Module healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> ioModule "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of ioModule "{#ID}"TRAPrunning.ioModule.[{#ID}]0I/O Module healthUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> ioModule "{#ID}" running status is {ITEM.VALUE}HIGHPOSTLCCTRAPlcc01dLink Control Cards (LCCs)Health status of LLC "{#ID}"TRAPhealth.lcc.[{#ID}]0LCC healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> LCC "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of LLC "{#ID}"TRAPrunning.lcc.[{#ID}]0LCC healthUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> LCC "{#ID}" running status is {ITEM.VALUE}HIGHPOSTLunTRAPlun01dHealth status of Lun "{#NAME}"TRAPhealth.lun.[{#NAME}]0LUN healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> Lun "{#NAME}" health status is {ITEM.VALUE}HIGHAllocated size of Lun "{#NAME}"TRAPsizeAllocated.lun.[{#NAME}]0BSize of space actually allocated in the pool for the LUN:
For thin-provisioned LUNs this as a rule is less than the sizeTotal attribute until the LUN is not fully populated with user data.
For not thin-provisioned LUNs this is approximately equal to the sizeTotal.LUNTotal size of Lun "{#NAME}"TRAPsizeTotal.lun.[{#NAME}]0BLUN size that the system presents to the host or end user.LUNPOSTMemory ModuleTRAPmemoryModule01dHealth status of Memory Module "{#ID}"TRAPhealth.memoryModule.[{#ID}]0MemoryModule healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> MemoryModule "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of Memory Module "{#ID}"TRAPrunning.memoryModule.[{#ID}]0EthMemoryModuleUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> MemoryModule "{#ID}" running status is {ITEM.VALUE}HIGHPOSTPoolTRAPpool01dHealth status of Pool "{#NAME}"TRAPhealth.pool.[{#NAME}]0Pool healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> Pool "{#NAME}" health status is {ITEM.VALUE}HIGHSubscribed size of Pool "{#NAME}"TRAPsizeSubscribedBytes.pool.[{#NAME}]0BPoolPOSTSubscribed size of Pool "{#NAME}" in percentCALCULATEDsizeSubscribedPercent.pool.[{#NAME}]3mFLOAT%(100*last("sizeSubscribedBytes.pool.[{#NAME}]"))/last("sizeTotalBytes.pool.[{#NAME}]")PoolPOST{last()}>{$SUBSCRIBED_PERCENT:"{#NAME}"}{HOST.NAME} -> Subscribed capacity on pool "{#NAME}" > {$SUBSCRIBED_PERCENT:"{#NAME}"}%HIGHTotal size of Pool "{#NAME}"TRAPsizeTotalBytes.pool.[{#NAME}]0BPoolPOSTUsed size of Pool "{#NAME}"TRAPsizeUsedBytes.pool.[{#NAME}]0BPoolPOSTUsed size of Pool "{#NAME}" in percentCALCULATEDsizeUsedPercent.pool.[{#NAME}]3mFLOAT%(100*last("sizeUsedBytes.pool.[{#NAME}]"))/last("sizeTotalBytes.pool.[{#NAME}]")PoolPOST{last()}>{$USED_PERCENT:"{#NAME}"}{HOST.NAME} -> Used capacity on pool "{#NAME}" > {$USED_PERCENT:"{#NAME}"}%HIGHPOSTPSUTRAPpowerSupply01dHealth Status of PSU "{#ID}"TRAPhealth.powerSupply.[{#ID}]0PSU healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> PSU "{#ID}" health status is {ITEM.VALUE}HIGHRunning Status of PSU "{#ID}"TRAPrunning.powerSupply.[{#ID}]0PSUUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> PSU "{#ID}" running status is {ITEM.VALUE}HIGHPOSTPortSASTRAPsasPort01dHealth status of SAS port "{#ID}"TRAPhealth.sasPort.[{#ID}]0SAS healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> SAS Port "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of SAS port "{#ID}"TRAPlink.sasPort.[{#ID}]0SASUnity_Running_StatusPOST({TRIGGER.VALUE}=0 and {last()}=11 and {change()}=1) or ({TRIGGER.VALUE}=1 and {change()}=0){HOST.NAME} -> SAS Port "{#ID}" running status is {ITEM.VALUE}HIGHТриггер настроен так, что те порты, которые имеют линк-даун (еще не введены в эксплуатацию) - по ним триггеров нет.
Те порты, которые линк-ап (эксплуатириуются) - при смене состояния триггер загораетсяPOSTSSCTRAPssc01dSystem Status Cards (SSCs)Health status of SSC "{#ID}"TRAPhealth.ssc.[{#ID}]0SSC healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> SSC "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of SSC "{#ID}"TRAPrunning.ssc.[{#ID}]0SSC healthUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> SSC "{#ID}" running status is {ITEM.VALUE}HIGHPOSTSSDTRAPssd01dHealth status of SSD "{#ID}"TRAPhealth.ssd.[{#ID}]0SSD healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> SSD "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of SSD "{#ID}"TRAPrunning.ssd.[{#ID}]0SSD healthUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> SSD "{#ID}" running status is {ITEM.VALUE}HIGHPOSTStorage ProcessorsTRAPstorageProcessor01dHealth status of Storage Processors "{#ID}"TRAPhealth.storageProcessor.[{#ID}]0StorageProcessor healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> Storage Processor "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of Storage Processors "{#ID}"TRAPrunning.storageProcessor.[{#ID}]0StorageProcessor healthUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> Storage Processor "{#ID}" running status is {ITEM.VALUE}HIGHPOSTUncommitted PortTRAPuncommittedPort01dHealth status of Uncommitted Port "{#ID}"TRAPhealth.uncommittedPort.[{#ID}]0Uncommitted Port healthUnity_Health_StatusPOST{last()}<>5{HOST.NAME} -> Uncommited Port "{#ID}" health status is {ITEM.VALUE}HIGHRunning status of Uncommitted Port "{#ID}"TRAPrunning.uncommittedPort.[{#ID}]0Uncommitted Port healthUnity_Running_StatusPOST{last()}<>8{HOST.NAME} -> Uncommited Port "{#ID}" running status is {ITEM.VALUE}HIGHPOST{$API_PASSWORD}{$API_PORT}443{$API_USER}{$SUBSCRIBED_PERCENT}91{$USED_PERCENT}91Unity_Health_Status0UNKNOWN5OK7OK_BUT10DEGRADED15MINOR20MAJOR25CRITICAL30NON_RECOVERABLEUnity_Running_Status5NOT_OK6DISK_SLOT_EMPTY8COMPONENT_OK10Link_up11Link_down