INFINIDAT InfiniBox Storage (REST)
Description
HTTP REST connector for INFINIDAT InfiniBox systems, pools, volumes, filesystems, S3 buckets, enclosures, controllers, disks, and ports. Configure InfiniBox API credentials and set host.name to the InfiniBox API host.
Enterprise Connector
This connector requires the Enterprise edition of MetricsHub.
Target
Typical platform: INFINIDAT InfiniBox
Operating system: Storage System
Prerequisites
Leverages: InfiniBox REST API
Technology and protocols: HTTP
Examples
CLI
metricshub HOSTNAME -t storage -c +InfiniboxREST --https --http-port 443 -u USERNAME
metricshub.yaml
resourceGroups:
<RESOURCE_GROUP>:
resources:
<HOSTNAME-ID>:
attributes:
host.name: <HOSTNAME> # Change with actual host name
host.type: storage
connectors: [ +InfiniboxREST ] # Optional, to load only this connector
protocols:
http:
https: true
port: 443 # or probably something else
username: <USERNAME> # Change with actual credentials
password: <PASSWORD> # Encrypted using metricshub-encrypt
Connector Activation Criteria
The INFINIDAT InfiniBox Storage (REST) connector will be automatically activated, and its status will be reported as OK if all the below criteria are met:
- The HTTP Request below to the managed host succeeds:
- get
/api/rest/systems - Request Header:
Authorization: Basic %{BASIC_AUTH_BASE64} Accept: application/json - The response body contains:
"type"\s*:\s*"InfiniBox"(regex)
- get
- The HTTP Request below to the managed host succeeds:
- get
/api/rest/systems - Request Header:
Authorization: Basic %{BASIC_AUTH_BASE64} Accept: application/json - The entire response (header + body) contains:
200(regex)
- get
Metrics
| Type | Collected Metrics | Specific Attributes |
|---|---|---|
| controller | hw.status{hw.type="controller", state="degraded|failed|ok"} | hw.parent.idhw.parent.typeidmanufacturermodelname |
| enclosure | hw.status{hw.type="enclosure", state="degraded|failed|ok"}hw.status{hw.type="enclosure", state="present"} | hw.parent.idhw.parent.typeidmanufacturermodelname |
| eth_port | hw.network.bandwidth.limithw.network.error_ratio{storage.protocol="eth"}hw.network.uphw.status{hw.type="network", state="degraded|failed|ok"}storage.io{storage.type="network", storage.protocol="eth"}storage.operation_time{storage.type="network", storage.protocol="eth"}storage.operations{storage.type="network", storage.protocol="eth"} | hw.parent.idhw.parent.typeidlogical_addresslogical_address_typenamenetwork.protocolphysical_addressphysical_address_typerole |
| fc_port | hw.network.bandwidth.limithw.network.error_ratio{storage.protocol="fc"}hw.network.uphw.status{hw.type="network", state="degraded|failed|ok"}storage.io{storage.type="network", storage.protocol="fc"}storage.operation_time{storage.type="network", storage.protocol="fc"}storage.operations{storage.type="network", storage.protocol="fc"} | hw.parent.idhw.parent.typeidlogical_addresslogical_address_typenamenetwork.protocolphysical_addressphysical_address_typerole |
| filesystem | storage.io{storage.type="file_system", storage.io.direction="read"}storage.io{storage.type="file_system", storage.io.direction="write"}storage.operation_time{storage.type="file_system", storage.io.direction="read"}storage.operation_time{storage.type="file_system", storage.io.direction="write"}storage.operations{storage.type="file_system", storage.io.direction="read"}storage.operations{storage.type="file_system", storage.io.direction="write"}storage.provisioning{storage.type="file_system", storage.provisioning.state="configured"}storage.size{storage.type="file_system"}storage.usage{storage.type="file_system", storage.provisioning.state="free"}storage.usage{storage.type="file_system", storage.provisioning.state="used"} | idnamestorage.modestorage.parent.idstorage.parent.namestorage.parent.type |
| physical_disk | hw.physical_disk.sizehw.status{hw.type="physical_disk", state="degraded|failed|ok"}hw.status{hw.type="physical_disk", state="present"} | hw.parent.idhw.parent.typeidmanufacturermodelnameserial_number |
| pool | storage.io{storage.type="pool", storage.io.direction="read", storage.protocol="nas"}storage.io{storage.type="pool", storage.io.direction="read", storage.protocol="san"}storage.io{storage.type="pool", storage.io.direction="read"}storage.io{storage.type="pool", storage.io.direction="write", storage.protocol="nas"}storage.io{storage.type="pool", storage.io.direction="write", storage.protocol="san"}storage.io{storage.type="pool", storage.io.direction="write"}storage.limit{storage.type="pool"}storage.operation_time{storage.type="pool", storage.io.direction="read", storage.protocol="nas"}storage.operation_time{storage.type="pool", storage.io.direction="read", storage.protocol="san"}storage.operation_time{storage.type="pool", storage.io.direction="read"}storage.operation_time{storage.type="pool", storage.io.direction="write", storage.protocol="nas"}storage.operation_time{storage.type="pool", storage.io.direction="write", storage.protocol="san"}storage.operation_time{storage.type="pool", storage.io.direction="write"}storage.operations{storage.type="pool", storage.io.direction="read", storage.protocol="nas"}storage.operations{storage.type="pool", storage.io.direction="read", storage.protocol="san"}storage.operations{storage.type="pool", storage.io.direction="read"}storage.operations{storage.type="pool", storage.io.direction="write", storage.protocol="nas"}storage.operations{storage.type="pool", storage.io.direction="write", storage.protocol="san"}storage.operations{storage.type="pool", storage.io.direction="write"}storage.provisioning{storage.type="pool", storage.provisioning.state="configured"}storage.provisioning{storage.type="pool", storage.provisioning.state="subscribed"}storage.size{storage.type="pool"}storage.status{storage.type="pool", state="degraded|failed|ok"}storage.usage{storage.type="pool", storage.provisioning.state="free"}storage.usage{storage.type="pool", storage.provisioning.state="used"} | idnamestorage.parent.idstorage.parent.typestorage.pool.type |
| s3_bucket | storage.data_reduction_ratio{storage.type="s3_bucket"}storage.limit{storage.type="s3_bucket"}storage.objects{storage.type="s3_bucket"}storage.usage{storage.type="s3_bucket", storage.provisioning.state="used"} | idnamestorage.consumer.idstorage.consumer.namestorage.parent.idstorage.parent.type |
| system | storage.io{storage.type="storage_system", storage.io.direction="read", storage.protocol="nas"}storage.io{storage.type="storage_system", storage.io.direction="read", storage.protocol="s3"}storage.io{storage.type="storage_system", storage.io.direction="read", storage.protocol="san"}storage.io{storage.type="storage_system", storage.io.direction="read"}storage.io{storage.type="storage_system", storage.io.direction="write", storage.protocol="nas"}storage.io{storage.type="storage_system", storage.io.direction="write", storage.protocol="s3"}storage.io{storage.type="storage_system", storage.io.direction="write", storage.protocol="san"}storage.io{storage.type="storage_system", storage.io.direction="write"}storage.limit{storage.type="storage_system"}storage.operation_time{storage.type="storage_system", storage.io.direction="read", storage.protocol="nas"}storage.operation_time{storage.type="storage_system", storage.io.direction="read", storage.protocol="s3"}storage.operation_time{storage.type="storage_system", storage.io.direction="read", storage.protocol="san"}storage.operation_time{storage.type="storage_system", storage.io.direction="read"}storage.operation_time{storage.type="storage_system", storage.io.direction="write", storage.protocol="nas"}storage.operation_time{storage.type="storage_system", storage.io.direction="write", storage.protocol="s3"}storage.operation_time{storage.type="storage_system", storage.io.direction="write", storage.protocol="san"}storage.operation_time{storage.type="storage_system", storage.io.direction="write"}storage.operations{storage.type="storage_system", storage.io.direction="read", storage.protocol="nas"}storage.operations{storage.type="storage_system", storage.io.direction="read", storage.protocol="s3"}storage.operations{storage.type="storage_system", storage.io.direction="read", storage.protocol="san"}storage.operations{storage.type="storage_system", storage.io.direction="read"}storage.operations{storage.type="storage_system", storage.io.direction="write", storage.protocol="nas"}storage.operations{storage.type="storage_system", storage.io.direction="write", storage.protocol="s3"}storage.operations{storage.type="storage_system", storage.io.direction="write", storage.protocol="san"}storage.operations{storage.type="storage_system", storage.io.direction="write"}storage.provisioning{storage.type="storage_system", storage.provisioning.state="configured"}storage.provisioning{storage.type="storage_system", storage.provisioning.state="subscribed"}storage.size{storage.type="storage_system"}storage.status{storage.type="storage_system", state="degraded|failed|ok"}storage.usage{storage.type="storage_system", storage.provisioning.state="free"}storage.usage{storage.type="storage_system", storage.provisioning.state="used"} | familyidmodelnameserial_numbervendorversion |
| volume | storage.io{storage.type="volume", storage.io.direction="read"}storage.io{storage.type="volume", storage.io.direction="write"}storage.limit{storage.type="volume"}storage.operation_time{storage.type="volume", storage.io.direction="read"}storage.operation_time{storage.type="volume", storage.io.direction="write"}storage.operations{storage.type="volume", storage.io.direction="read"}storage.operations{storage.type="volume", storage.io.direction="write"}storage.provisioning{storage.type="volume", storage.provisioning.state="configured"}storage.provisioning{storage.type="volume", storage.provisioning.state="subscribed"}storage.size{storage.type="volume"}storage.status{storage.type="volume", state="degraded|failed|ok"}storage.usage{storage.type="volume", storage.provisioning.state="free"}storage.usage{storage.type="volume", storage.provisioning.state="used"} | idnamestorage.consumer.naa_idstorage.consumer.namestorage.consumer.statestorage.parent.idstorage.parent.namestorage.parent.typestorage.volume.type |