PureStorage-OpenConnect / pure-fa-openmetrics-exporter

Pure Storage OpenMetrics exporter for FlashArray
Apache License 2.0
18 stars 26 forks source link

Collect Port Information (FC, iSCSI, NVMe) - purefa_network_interface_speed_bandwidth_bytes, purefa_network_port_info #106

Closed chrroberts-pure closed 4 months ago

chrroberts-pure commented 4 months ago

In issue #105 it was suggested to collect and export port information for the FlashArray.

This PR is to implement this request.

TODO:

resolves #105

sdodsley commented 4 months ago

I think you are missing the case where the port is NVMe-FC - this would have both WWNs and NQN

chrroberts-pure commented 4 months ago

good call, I only have NVMe/TCP in my lab which has nqn and portal- and the purity swagger leaves a little bit to be desired on these fields.

I'll split these out into another metric name

chrroberts-pure commented 4 months ago

Might be worth adding the service type for each port as well...

To align with the Purity API conventions, it will be best to put a ports advertised service in a different info metric e.g. purefa_network_interface_info. ports aren't necessarily network-interfaces . We COULD match the interface name and join the data in this metric, but that has not been done in the past with the exporter.

sdodsley commented 4 months ago

Fair, enough, but just don't say that these nvme ports are TCP as they could be RoCE

chrroberts-pure commented 4 months ago

We could drop that information in the metric name all together and just provide null values for the fields it doesn't have. This matches the convention in the Purity API

purefa_ports_info{iqn="iqn.2010-06.com.purestorage:flasharray.xxxxxxxxxxxxxxxx",name="CT0.ETH4",npn=""portal="192.168.x.1:3260",wwn=""} 1

chrroberts-pure commented 4 months ago

tested on an array with a lot of unique services running

# HELP purefa_network_interface_speed_bandwidth_bytes FlashArray network interface speed in bytes per second
# TYPE purefa_network_interface_speed_bandwidth_bytes gauge
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct0.eth1",services="management",type="eth"} 1e+09
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct0.eth6",services="",type="eth"} 5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct0.eth7",services="",type="eth"} 5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct0.eth8",services="",type="eth"} 5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct0.eth9",services="",type="eth"} 5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct1.eth1",services="management",type="eth"} 1e+09
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct1.eth6",services="",type="eth"} 5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct1.eth7",services="",type="eth"} 5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct1.eth8",services="",type="eth"} 5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="physical",name="ct1.eth9",services="",type="eth"} 5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="false",ethsubtype="vif",name="vir1",services="management",type="eth"} 1e+09
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT0.FC0",services="scsi-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT0.FC1",services="scsi-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT0.FC4",services="nvme-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT0.FC5",services="scsi-fc",type="fc"} 0
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT0.FC6",services="nvme-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT0.FC7",services="scsi-fc",type="fc"} 0
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT0.FC8",services="scsi-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT0.FC9",services="scsi-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT1.FC0",services="scsi-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT1.FC1",services="scsi-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT1.FC4",services="nvme-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT1.FC5",services="scsi-fc",type="fc"} 0
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT1.FC6",services="nvme-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT1.FC7",services="scsi-fc",type="fc"} 0
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT1.FC8",services="scsi-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="",name="CT1.FC9",services="scsi-fc",type="fc"} 1.6e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="bond",name="replbond",services="replication",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct0.eth0",services="management",type="eth"} 1e+09
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct0.eth20",services="nvme-roce",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct0.eth21",services="nvme-roce",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct0.eth3",services="replication",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct0.eth4",services="nvme-tcp",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct0.eth5",services="iscsi",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct1.eth0",services="management",type="eth"} 1e+09
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct1.eth20",services="nvme-roce",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct1.eth21",services="nvme-roce",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct1.eth3",services="replication",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct1.eth4",services="nvme-tcp",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="physical",name="ct1.eth5",services="iscsi",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="vif",name="filevip",services="file",type="eth"} 2.5e+10
purefa_network_interface_speed_bandwidth_bytes{enabled="true",ethsubtype="vif",name="vir0",services="management",type="eth"} 1e+09
# HELP purefa_network_port_info FlashArray network port info
# TYPE purefa_network_port_info gauge
purefa_network_port_info{iqn="",name="CT0.ETH20",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="192.168.1.13:4420",wwn=""} 1
purefa_network_port_info{iqn="",name="CT0.ETH21",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="192.168.1.13:4420",wwn=""} 1
purefa_network_port_info{iqn="",name="CT0.ETH4",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="10.0.1.13:4420",wwn=""} 1
purefa_network_port_info{iqn="",name="CT0.FC0",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:00"} 1
purefa_network_port_info{iqn="",name="CT0.FC1",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:01"} 1
purefa_network_port_info{iqn="",name="CT0.FC4",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:04"} 1
purefa_network_port_info{iqn="",name="CT0.FC5",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:05"} 1
purefa_network_port_info{iqn="",name="CT0.FC6",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:06"} 1
purefa_network_port_info{iqn="",name="CT0.FC7",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:07"} 1
purefa_network_port_info{iqn="",name="CT0.FC8",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:08"} 1
purefa_network_port_info{iqn="",name="CT0.FC9",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:09"} 1
purefa_network_port_info{iqn="",name="CT1.ETH20",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="192.168.1.14:4420",wwn=""} 1
purefa_network_port_info{iqn="",name="CT1.ETH21",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="192.168.1.14:4420",wwn=""} 1
purefa_network_port_info{iqn="",name="CT1.ETH4",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="10.0.1.14:4420",wwn=""} 1
purefa_network_port_info{iqn="",name="CT1.FC0",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:10"} 1
purefa_network_port_info{iqn="",name="CT1.FC1",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:11"} 1
purefa_network_port_info{iqn="",name="CT1.FC4",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:14"} 1
purefa_network_port_info{iqn="",name="CT1.FC5",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:15"} 1
purefa_network_port_info{iqn="",name="CT1.FC6",nqn="nqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:16"} 1
purefa_network_port_info{iqn="",name="CT1.FC7",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:17"} 1
purefa_network_port_info{iqn="",name="CT1.FC8",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:18"} 1
purefa_network_port_info{iqn="",name="CT1.FC9",nqn="",portal="",wwn="FF:FF:FF:FF:FF:FF:FF:19"} 1
purefa_network_port_info{iqn="iqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",name="CT0.ETH5",nqn="",portal="10.0.5.13:3260",wwn=""} 1
purefa_network_port_info{iqn="iqn.2010-06.com.purestorage:flasharray.ffffffffffffffff",name="CT1.ETH5",nqn="",portal="10.0.5.14:3260",wwn=""} 1