From 26cfb4086d88375abfb2e7a004b738d8aa6d8411 Mon Sep 17 00:00:00 2001 From: Trey Dockendorf Date: Mon, 26 Apr 2021 13:29:52 -0400 Subject: [PATCH] Add info metrics, move switch/hca label to info metric --- collectors/hca.go | 77 +++++--- collectors/hca_test.go | 254 ++++++++++++++----------- collectors/switch.go | 87 +++++---- collectors/switch_test.go | 360 ++++++++++++++++++++---------------- infiniband_exporter_test.go | 253 ++++++++++++++----------- 5 files changed, 586 insertions(+), 445 deletions(-) diff --git a/collectors/hca.go b/collectors/hca.go index 1878f18..472fe74 100644 --- a/collectors/hca.go +++ b/collectors/hca.go @@ -62,10 +62,13 @@ type HCACollector struct { PortDLIDMappingErrors *prometheus.Desc PortVLMappingErrors *prometheus.Desc PortLoopingErrors *prometheus.Desc + Rate *prometheus.Desc + Uplink *prometheus.Desc + Info *prometheus.Desc } func NewHCACollector(devices *[]InfinibandDevice, logger log.Logger) *HCACollector { - labels := []string{"guid", "port", "hca"} + labels := []string{"guid", "port"} return &HCACollector{ devices: devices, logger: log.With(logger, "collector", "hca"), @@ -125,6 +128,12 @@ func NewHCACollector(devices *[]InfinibandDevice, logger log.Logger) *HCACollect "Infiniband HCA port PortVLMappingErrors", labels, nil), PortLoopingErrors: prometheus.NewDesc(prometheus.BuildFQName(namespace, "hca", "port_looping_errors_total"), "Infiniband HCA port PortLoopingErrors", labels, nil), + Rate: prometheus.NewDesc(prometheus.BuildFQName(namespace, "hca", "rate_bytes_per_second"), + "Infiniband HCA rate", []string{"guid"}, nil), + Uplink: prometheus.NewDesc(prometheus.BuildFQName(namespace, "hca", "uplink_info"), + "Infiniband HCA uplink information", append(labels, []string{"hca", "uplink", "uplink_guid", "uplink_type", "uplink_port", "uplink_lid"}...), nil), + Info: prometheus.NewDesc(prometheus.BuildFQName(namespace, "hca", "info"), + "Infiniband HCA information", []string{"guid", "hca", "lid"}, nil), } } @@ -157,6 +166,9 @@ func (h *HCACollector) Describe(ch chan<- *prometheus.Desc) { ch <- h.PortDLIDMappingErrors ch <- h.PortVLMappingErrors ch <- h.PortLoopingErrors + ch <- h.Rate + ch <- h.Uplink + ch <- h.Info } func (h *HCACollector) Collect(ch chan<- prometheus.Metric) { @@ -164,88 +176,95 @@ func (h *HCACollector) Collect(ch chan<- prometheus.Metric) { counters, errors, timeouts := h.collect() for _, c := range counters { if !math.IsNaN(c.PortXmitData) { - ch <- prometheus.MustNewConstMetric(h.PortXmitData, prometheus.CounterValue, c.PortXmitData, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortXmitData, prometheus.CounterValue, c.PortXmitData, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvData) { - ch <- prometheus.MustNewConstMetric(h.PortRcvData, prometheus.CounterValue, c.PortRcvData, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortRcvData, prometheus.CounterValue, c.PortRcvData, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortXmitPkts) { - ch <- prometheus.MustNewConstMetric(h.PortXmitPkts, prometheus.CounterValue, c.PortXmitPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortXmitPkts, prometheus.CounterValue, c.PortXmitPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvPkts) { - ch <- prometheus.MustNewConstMetric(h.PortRcvPkts, prometheus.CounterValue, c.PortRcvPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortRcvPkts, prometheus.CounterValue, c.PortRcvPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortUnicastXmitPkts) { - ch <- prometheus.MustNewConstMetric(h.PortUnicastXmitPkts, prometheus.CounterValue, c.PortUnicastXmitPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortUnicastXmitPkts, prometheus.CounterValue, c.PortUnicastXmitPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortUnicastRcvPkts) { - ch <- prometheus.MustNewConstMetric(h.PortUnicastRcvPkts, prometheus.CounterValue, c.PortUnicastRcvPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortUnicastRcvPkts, prometheus.CounterValue, c.PortUnicastRcvPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortMulticastXmitPkts) { - ch <- prometheus.MustNewConstMetric(h.PortMulticastXmitPkts, prometheus.CounterValue, c.PortMulticastXmitPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortMulticastXmitPkts, prometheus.CounterValue, c.PortMulticastXmitPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortMulticastRcvPkts) { - ch <- prometheus.MustNewConstMetric(h.PortMulticastRcvPkts, prometheus.CounterValue, c.PortMulticastRcvPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortMulticastRcvPkts, prometheus.CounterValue, c.PortMulticastRcvPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.SymbolErrorCounter) { - ch <- prometheus.MustNewConstMetric(h.SymbolErrorCounter, prometheus.CounterValue, c.SymbolErrorCounter, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.SymbolErrorCounter, prometheus.CounterValue, c.SymbolErrorCounter, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.LinkErrorRecoveryCounter) { - ch <- prometheus.MustNewConstMetric(h.LinkErrorRecoveryCounter, prometheus.CounterValue, c.LinkErrorRecoveryCounter, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.LinkErrorRecoveryCounter, prometheus.CounterValue, c.LinkErrorRecoveryCounter, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.LinkDownedCounter) { - ch <- prometheus.MustNewConstMetric(h.LinkDownedCounter, prometheus.CounterValue, c.LinkDownedCounter, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.LinkDownedCounter, prometheus.CounterValue, c.LinkDownedCounter, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvErrors) { - ch <- prometheus.MustNewConstMetric(h.PortRcvErrors, prometheus.CounterValue, c.PortRcvErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortRcvErrors, prometheus.CounterValue, c.PortRcvErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvRemotePhysicalErrors) { - ch <- prometheus.MustNewConstMetric(h.PortRcvRemotePhysicalErrors, prometheus.CounterValue, c.PortRcvRemotePhysicalErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortRcvRemotePhysicalErrors, prometheus.CounterValue, c.PortRcvRemotePhysicalErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvSwitchRelayErrors) { - ch <- prometheus.MustNewConstMetric(h.PortRcvSwitchRelayErrors, prometheus.CounterValue, c.PortRcvSwitchRelayErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortRcvSwitchRelayErrors, prometheus.CounterValue, c.PortRcvSwitchRelayErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortXmitDiscards) { - ch <- prometheus.MustNewConstMetric(h.PortXmitDiscards, prometheus.CounterValue, c.PortXmitDiscards, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortXmitDiscards, prometheus.CounterValue, c.PortXmitDiscards, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortXmitConstraintErrors) { - ch <- prometheus.MustNewConstMetric(h.PortXmitConstraintErrors, prometheus.CounterValue, c.PortXmitConstraintErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortXmitConstraintErrors, prometheus.CounterValue, c.PortXmitConstraintErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvConstraintErrors) { - ch <- prometheus.MustNewConstMetric(h.PortRcvConstraintErrors, prometheus.CounterValue, c.PortRcvConstraintErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortRcvConstraintErrors, prometheus.CounterValue, c.PortRcvConstraintErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.LocalLinkIntegrityErrors) { - ch <- prometheus.MustNewConstMetric(h.LocalLinkIntegrityErrors, prometheus.CounterValue, c.LocalLinkIntegrityErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.LocalLinkIntegrityErrors, prometheus.CounterValue, c.LocalLinkIntegrityErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.ExcessiveBufferOverrunErrors) { - ch <- prometheus.MustNewConstMetric(h.ExcessiveBufferOverrunErrors, prometheus.CounterValue, c.ExcessiveBufferOverrunErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.ExcessiveBufferOverrunErrors, prometheus.CounterValue, c.ExcessiveBufferOverrunErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.VL15Dropped) { - ch <- prometheus.MustNewConstMetric(h.VL15Dropped, prometheus.CounterValue, c.VL15Dropped, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.VL15Dropped, prometheus.CounterValue, c.VL15Dropped, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortXmitWait) { - ch <- prometheus.MustNewConstMetric(h.PortXmitWait, prometheus.CounterValue, c.PortXmitWait, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortXmitWait, prometheus.CounterValue, c.PortXmitWait, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.QP1Dropped) { - ch <- prometheus.MustNewConstMetric(h.QP1Dropped, prometheus.CounterValue, c.QP1Dropped, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.QP1Dropped, prometheus.CounterValue, c.QP1Dropped, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortLocalPhysicalErrors) { - ch <- prometheus.MustNewConstMetric(h.PortLocalPhysicalErrors, prometheus.CounterValue, c.PortLocalPhysicalErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortLocalPhysicalErrors, prometheus.CounterValue, c.PortLocalPhysicalErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortMalformedPktErrors) { - ch <- prometheus.MustNewConstMetric(h.PortMalformedPktErrors, prometheus.CounterValue, c.PortMalformedPktErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortMalformedPktErrors, prometheus.CounterValue, c.PortMalformedPktErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortBufferOverrunErrors) { - ch <- prometheus.MustNewConstMetric(h.PortBufferOverrunErrors, prometheus.CounterValue, c.PortBufferOverrunErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortBufferOverrunErrors, prometheus.CounterValue, c.PortBufferOverrunErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortDLIDMappingErrors) { - ch <- prometheus.MustNewConstMetric(h.PortDLIDMappingErrors, prometheus.CounterValue, c.PortDLIDMappingErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortDLIDMappingErrors, prometheus.CounterValue, c.PortDLIDMappingErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortVLMappingErrors) { - ch <- prometheus.MustNewConstMetric(h.PortVLMappingErrors, prometheus.CounterValue, c.PortVLMappingErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortVLMappingErrors, prometheus.CounterValue, c.PortVLMappingErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortLoopingErrors) { - ch <- prometheus.MustNewConstMetric(h.PortLoopingErrors, prometheus.CounterValue, c.PortLoopingErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(h.PortLoopingErrors, prometheus.CounterValue, c.PortLoopingErrors, c.device.GUID, c.PortSelect) + } + } + for _, device := range *h.devices { + ch <- prometheus.MustNewConstMetric(h.Rate, prometheus.GaugeValue, device.Rate, device.GUID) + ch <- prometheus.MustNewConstMetric(h.Info, prometheus.GaugeValue, 1, device.GUID, device.Name, device.LID) + for port, uplink := range device.Uplinks { + ch <- prometheus.MustNewConstMetric(h.Uplink, prometheus.GaugeValue, 1, device.GUID, port, device.Name, uplink.Name, uplink.GUID, uplink.Type, uplink.PortNumber, uplink.LID) } } ch <- prometheus.MustNewConstMetric(collectErrors, prometheus.GaugeValue, errors, "hca") diff --git a/collectors/hca_test.go b/collectors/hca_test.go index 5635caa..1f98a46 100644 --- a/collectors/hca_test.go +++ b/collectors/hca_test.go @@ -24,8 +24,16 @@ import ( var ( hcaDevices = []InfinibandDevice{ - InfinibandDevice{GUID: "0x7cfe9003003b4bde", Name: "o0001"}, - InfinibandDevice{GUID: "0x7cfe9003003b4b96", Name: "o0002"}, + InfinibandDevice{Type: "CA", LID: "133", GUID: "0x7cfe9003003b4b96", Rate: (25 * 4 * 125000000), Name: "o0002", + Uplinks: map[string]InfinibandUplink{ + "1": InfinibandUplink{Type: "SW", LID: "1719", PortNumber: "11", GUID: "0x7cfe9003009ce5b0", Name: "ib-i1l1s01"}, + }, + }, + InfinibandDevice{Type: "CA", LID: "134", GUID: "0x7cfe9003003b4bde", Rate: (25 * 4 * 125000000), Name: "o0001", + Uplinks: map[string]InfinibandUplink{ + "1": InfinibandUplink{Type: "SW", LID: "1719", PortNumber: "10", GUID: "0x7cfe9003009ce5b0", Name: "ib-i1l1s01"}, + }, + }, } ) @@ -41,101 +49,113 @@ func TestHCACollector(t *testing.T) { # HELP infiniband_exporter_collect_timeouts Number of timeouts that occurred during collection # TYPE infiniband_exporter_collect_timeouts gauge infiniband_exporter_collect_timeouts{collector="hca"} 0 + # HELP infiniband_hca_info Infiniband HCA information + # TYPE infiniband_hca_info gauge + infiniband_hca_info{guid="0x7cfe9003003b4b96",hca="o0002",lid="133"} 1 + infiniband_hca_info{guid="0x7cfe9003003b4bde",hca="o0001",lid="134"} 1 # HELP infiniband_hca_port_excessive_buffer_overrun_errors_total Infiniband HCA port ExcessiveBufferOverrunErrors # TYPE infiniband_hca_port_excessive_buffer_overrun_errors_total counter - infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_link_downed_total Infiniband HCA port LinkDownedCounter # TYPE infiniband_hca_port_link_downed_total counter - infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_link_error_recovery_total Infiniband HCA port LinkErrorRecoveryCounter # TYPE infiniband_hca_port_link_error_recovery_total counter - infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_local_link_integrity_errors_total Infiniband HCA port LocalLinkIntegrityErrors # TYPE infiniband_hca_port_local_link_integrity_errors_total counter - infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_multicast_receive_packets_total Infiniband HCA port PortMulticastRcvPkts # TYPE infiniband_hca_port_multicast_receive_packets_total counter - infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 3732373137 - infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 3732158589 + infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4b96",port="1"} 3732373137 + infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4bde",port="1"} 3732158589 # HELP infiniband_hca_port_multicast_transmit_packets_total Infiniband HCA port PortMulticastXmitPkts # TYPE infiniband_hca_port_multicast_transmit_packets_total counter - infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 544690 - infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 721488 + infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4b96",port="1"} 544690 + infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4bde",port="1"} 721488 # HELP infiniband_hca_port_qp1_dropped_total Infiniband HCA port QP1Dropped # TYPE infiniband_hca_port_qp1_dropped_total counter - infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_constraint_errors_total Infiniband HCA port PortRcvConstraintErrors # TYPE infiniband_hca_port_receive_constraint_errors_total counter - infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_data_bytes_total Infiniband HCA port PortRcvData # TYPE infiniband_hca_port_receive_data_bytes_total counter - infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 37225401952885 - infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 9752484588300 + infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4b96",port="1"} 37225401952885 + infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4bde",port="1"} 9752484588300 # HELP infiniband_hca_port_receive_errors_total Infiniband HCA port PortRcvErrors # TYPE infiniband_hca_port_receive_errors_total counter - infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_packets_total Infiniband HCA port PortRcvPkts # TYPE infiniband_hca_port_receive_packets_total counter - infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 100583719365 - infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 33038722564 + infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4b96",port="1"} 100583719365 + infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4bde",port="1"} 33038722564 # HELP infiniband_hca_port_receive_remote_physical_errors_total Infiniband HCA port PortRcvRemotePhysicalErrors # TYPE infiniband_hca_port_receive_remote_physical_errors_total counter - infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_switch_relay_errors_total Infiniband HCA port PortRcvSwitchRelayErrors # TYPE infiniband_hca_port_receive_switch_relay_errors_total counter - infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_symbol_error_total Infiniband HCA port SymbolErrorCounter # TYPE infiniband_hca_port_symbol_error_total counter - infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_transmit_constraint_errors_total Infiniband HCA port PortXmitConstraintErrors # TYPE infiniband_hca_port_transmit_constraint_errors_total counter - infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_transmit_data_bytes_total Infiniband HCA port PortXmitData # TYPE infiniband_hca_port_transmit_data_bytes_total counter - infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 37108676853855 - infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 9049592493976 + infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4b96",port="1"} 37108676853855 + infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4bde",port="1"} 9049592493976 # HELP infiniband_hca_port_transmit_discards_total Infiniband HCA port PortXmitDiscards # TYPE infiniband_hca_port_transmit_discards_total counter - infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_transmit_packets_total Infiniband HCA port PortXmitPkts # TYPE infiniband_hca_port_transmit_packets_total counter - infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 96917117320 - infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 28825338611 + infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4b96",port="1"} 96917117320 + infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4bde",port="1"} 28825338611 # HELP infiniband_hca_port_transmit_wait_total Infiniband HCA port PortXmitWait # TYPE infiniband_hca_port_transmit_wait_total counter - infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_unicast_receive_packets_total Infiniband HCA port PortUnicastRcvPkts # TYPE infiniband_hca_port_unicast_receive_packets_total counter - infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 96851346228 - infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 29306563974 + infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4b96",port="1"} 96851346228 + infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4bde",port="1"} 29306563974 # HELP infiniband_hca_port_unicast_transmit_packets_total Infiniband HCA port PortUnicastXmitPkts # TYPE infiniband_hca_port_unicast_transmit_packets_total counter - infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 96916572630 - infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 28824617123 + infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4b96",port="1"} 96916572630 + infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4bde",port="1"} 28824617123 # HELP infiniband_hca_port_vl15_dropped_total Infiniband HCA port VL15Dropped # TYPE infiniband_hca_port_vl15_dropped_total counter - infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4bde",port="1"} 0 + # HELP infiniband_hca_rate_bytes_per_second Infiniband HCA rate + # TYPE infiniband_hca_rate_bytes_per_second gauge + infiniband_hca_rate_bytes_per_second{guid="0x7cfe9003003b4b96"} 1.25e+10 + infiniband_hca_rate_bytes_per_second{guid="0x7cfe9003003b4bde"} 1.25e+10 + # HELP infiniband_hca_uplink_info Infiniband HCA uplink information + # TYPE infiniband_hca_uplink_info gauge + infiniband_hca_uplink_info{guid="0x7cfe9003003b4b96",hca="o0002",port="1",uplink="ib-i1l1s01",uplink_guid="0x7cfe9003009ce5b0",uplink_lid="1719",uplink_port="11",uplink_type="SW"} 1 + infiniband_hca_uplink_info{guid="0x7cfe9003003b4bde",hca="o0001",port="1",uplink="ib-i1l1s01",uplink_guid="0x7cfe9003009ce5b0",uplink_lid="1719",uplink_port="10",uplink_type="SW"} 1 ` collector := NewHCACollector(&hcaDevices, log.NewNopLogger()) gatherers := setupGatherer(collector) if val, err := testutil.GatherAndCount(gatherers); err != nil { t.Errorf("Unexpected error: %v", err) - } else if val != 47 { - t.Errorf("Unexpected collection count %d, expected 47", val) + } else if val != 53 { + t.Errorf("Unexpected collection count %d, expected 53", val) } if err := testutil.GatherAndCompare(gatherers, strings.NewReader(expected), "infiniband_hca_port_excessive_buffer_overrun_errors_total", "infiniband_hca_port_link_downed_total", @@ -150,6 +170,7 @@ func TestHCACollector(t *testing.T) { "infiniband_hca_port_transmit_wait_total", "infiniband_hca_port_unicast_receive_packets_total", "infiniband_hca_port_unicast_transmit_packets_total", "infiniband_hca_port_vl15_dropped_total", "infiniband_hca_port_buffer_overrun_errors_total", + "infiniband_hca_info", "infiniband_hca_rate_bytes_per_second", "infiniband_hca_uplink_info", "infiniband_exporter_collect_errors", "infiniband_exporter_collect_timeouts"); err != nil { t.Errorf("unexpected collecting result:\n%s", err) } @@ -167,125 +188,137 @@ func TestHCACollectorFull(t *testing.T) { # HELP infiniband_exporter_collect_timeouts Number of timeouts that occurred during collection # TYPE infiniband_exporter_collect_timeouts gauge infiniband_exporter_collect_timeouts{collector="hca"} 0 + # HELP infiniband_hca_info Infiniband HCA information + # TYPE infiniband_hca_info gauge + infiniband_hca_info{guid="0x7cfe9003003b4b96",hca="o0002",lid="133"} 1 + infiniband_hca_info{guid="0x7cfe9003003b4bde",hca="o0001",lid="134"} 1 # HELP infiniband_hca_port_buffer_overrun_errors_total Infiniband HCA port PortBufferOverrunErrors # TYPE infiniband_hca_port_buffer_overrun_errors_total counter - infiniband_hca_port_buffer_overrun_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_buffer_overrun_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_buffer_overrun_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_buffer_overrun_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_dli_mapping_errors_total Infiniband HCA port PortDLIDMappingErrors # TYPE infiniband_hca_port_dli_mapping_errors_total counter - infiniband_hca_port_dli_mapping_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_dli_mapping_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_dli_mapping_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_dli_mapping_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_excessive_buffer_overrun_errors_total Infiniband HCA port ExcessiveBufferOverrunErrors # TYPE infiniband_hca_port_excessive_buffer_overrun_errors_total counter - infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_link_downed_total Infiniband HCA port LinkDownedCounter # TYPE infiniband_hca_port_link_downed_total counter - infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_link_error_recovery_total Infiniband HCA port LinkErrorRecoveryCounter # TYPE infiniband_hca_port_link_error_recovery_total counter - infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_local_link_integrity_errors_total Infiniband HCA port LocalLinkIntegrityErrors # TYPE infiniband_hca_port_local_link_integrity_errors_total counter - infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_local_physical_errors_total Infiniband HCA port PortLocalPhysicalErrors # TYPE infiniband_hca_port_local_physical_errors_total counter - infiniband_hca_port_local_physical_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_local_physical_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_local_physical_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_local_physical_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_looping_errors_total Infiniband HCA port PortLoopingErrors # TYPE infiniband_hca_port_looping_errors_total counter - infiniband_hca_port_looping_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_looping_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_looping_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_looping_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_malformed_packet_errors_total Infiniband HCA port PortMalformedPktErrors # TYPE infiniband_hca_port_malformed_packet_errors_total counter - infiniband_hca_port_malformed_packet_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_malformed_packet_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_malformed_packet_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_malformed_packet_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_multicast_receive_packets_total Infiniband HCA port PortMulticastRcvPkts # TYPE infiniband_hca_port_multicast_receive_packets_total counter - infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 3732373137 - infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 3732158589 + infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4b96",port="1"} 3732373137 + infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4bde",port="1"} 3732158589 # HELP infiniband_hca_port_multicast_transmit_packets_total Infiniband HCA port PortMulticastXmitPkts # TYPE infiniband_hca_port_multicast_transmit_packets_total counter - infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 544690 - infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 721488 + infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4b96",port="1"} 544690 + infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4bde",port="1"} 721488 # HELP infiniband_hca_port_qp1_dropped_total Infiniband HCA port QP1Dropped # TYPE infiniband_hca_port_qp1_dropped_total counter - infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_constraint_errors_total Infiniband HCA port PortRcvConstraintErrors # TYPE infiniband_hca_port_receive_constraint_errors_total counter - infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_data_bytes_total Infiniband HCA port PortRcvData # TYPE infiniband_hca_port_receive_data_bytes_total counter - infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 37225401952885 - infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 9752484588300 + infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4b96",port="1"} 37225401952885 + infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4bde",port="1"} 9752484588300 # HELP infiniband_hca_port_receive_errors_total Infiniband HCA port PortRcvErrors # TYPE infiniband_hca_port_receive_errors_total counter - infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_packets_total Infiniband HCA port PortRcvPkts # TYPE infiniband_hca_port_receive_packets_total counter - infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 100583719365 - infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 33038722564 + infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4b96",port="1"} 100583719365 + infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4bde",port="1"} 33038722564 # HELP infiniband_hca_port_receive_remote_physical_errors_total Infiniband HCA port PortRcvRemotePhysicalErrors # TYPE infiniband_hca_port_receive_remote_physical_errors_total counter - infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_switch_relay_errors_total Infiniband HCA port PortRcvSwitchRelayErrors # TYPE infiniband_hca_port_receive_switch_relay_errors_total counter - infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_symbol_error_total Infiniband HCA port SymbolErrorCounter # TYPE infiniband_hca_port_symbol_error_total counter - infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_transmit_constraint_errors_total Infiniband HCA port PortXmitConstraintErrors # TYPE infiniband_hca_port_transmit_constraint_errors_total counter - infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_transmit_data_bytes_total Infiniband HCA port PortXmitData # TYPE infiniband_hca_port_transmit_data_bytes_total counter - infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 37108676853855 - infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 9049592493976 + infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4b96",port="1"} 37108676853855 + infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4bde",port="1"} 9049592493976 # HELP infiniband_hca_port_transmit_discards_total Infiniband HCA port PortXmitDiscards # TYPE infiniband_hca_port_transmit_discards_total counter - infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_transmit_packets_total Infiniband HCA port PortXmitPkts # TYPE infiniband_hca_port_transmit_packets_total counter - infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 96917117320 - infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 28825338611 + infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4b96",port="1"} 96917117320 + infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4bde",port="1"} 28825338611 # HELP infiniband_hca_port_transmit_wait_total Infiniband HCA port PortXmitWait # TYPE infiniband_hca_port_transmit_wait_total counter - infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_unicast_receive_packets_total Infiniband HCA port PortUnicastRcvPkts # TYPE infiniband_hca_port_unicast_receive_packets_total counter - infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 96851346228 - infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 29306563974 + infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4b96",port="1"} 96851346228 + infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4bde",port="1"} 29306563974 # HELP infiniband_hca_port_unicast_transmit_packets_total Infiniband HCA port PortUnicastXmitPkts # TYPE infiniband_hca_port_unicast_transmit_packets_total counter - infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 96916572630 - infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 28824617123 + infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4b96",port="1"} 96916572630 + infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4bde",port="1"} 28824617123 # HELP infiniband_hca_port_vl_mapping_errors_total Infiniband HCA port PortVLMappingErrors # TYPE infiniband_hca_port_vl_mapping_errors_total counter - infiniband_hca_port_vl_mapping_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_vl_mapping_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_vl_mapping_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_vl_mapping_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_vl15_dropped_total Infiniband HCA port VL15Dropped # TYPE infiniband_hca_port_vl15_dropped_total counter - infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 - infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 + infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4b96",port="1"} 0 + infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4bde",port="1"} 0 + # HELP infiniband_hca_rate_bytes_per_second Infiniband HCA rate + # TYPE infiniband_hca_rate_bytes_per_second gauge + infiniband_hca_rate_bytes_per_second{guid="0x7cfe9003003b4b96"} 1.25e+10 + infiniband_hca_rate_bytes_per_second{guid="0x7cfe9003003b4bde"} 1.25e+10 + # HELP infiniband_hca_uplink_info Infiniband HCA uplink information + # TYPE infiniband_hca_uplink_info gauge + infiniband_hca_uplink_info{guid="0x7cfe9003003b4b96",hca="o0002",port="1",uplink="ib-i1l1s01",uplink_guid="0x7cfe9003009ce5b0",uplink_lid="1719",uplink_port="11",uplink_type="SW"} 1 + infiniband_hca_uplink_info{guid="0x7cfe9003003b4bde",hca="o0001",port="1",uplink="ib-i1l1s01",uplink_guid="0x7cfe9003009ce5b0",uplink_lid="1719",uplink_port="10",uplink_type="SW"} 1 ` collector := NewHCACollector(&hcaDevices, log.NewNopLogger()) gatherers := setupGatherer(collector) if val, err := testutil.GatherAndCount(gatherers); err != nil { t.Errorf("Unexpected error: %v", err) - } else if val != 59 { - t.Errorf("Unexpected collection count %d, expected 59", val) + } else if val != 65 { + t.Errorf("Unexpected collection count %d, expected 65", val) } if err := testutil.GatherAndCompare(gatherers, strings.NewReader(expected), "infiniband_hca_port_excessive_buffer_overrun_errors_total", "infiniband_hca_port_link_downed_total", @@ -302,6 +335,7 @@ func TestHCACollectorFull(t *testing.T) { "infiniband_hca_port_buffer_overrun_errors_total", "infiniband_hca_port_dli_mapping_errors_total", "infiniband_hca_port_local_physical_errors_total", "infiniband_hca_port_looping_errors_total", "infiniband_hca_port_malformed_packet_errors_total", "infiniband_hca_port_vl_mapping_errors_total", + "infiniband_hca_info", "infiniband_hca_rate_bytes_per_second", "infiniband_hca_uplink_info", "infiniband_exporter_collect_errors", "infiniband_exporter_collect_timeouts"); err != nil { t.Errorf("unexpected collecting result:\n%s", err) } @@ -324,8 +358,8 @@ func TestHCACollectorError(t *testing.T) { gatherers := setupGatherer(collector) if val, err := testutil.GatherAndCount(gatherers); err != nil { t.Errorf("Unexpected error: %v", err) - } else if val != 3 { - t.Errorf("Unexpected collection count %d, expected 3", val) + } else if val != 9 { + t.Errorf("Unexpected collection count %d, expected 9", val) } if err := testutil.GatherAndCompare(gatherers, strings.NewReader(expected), "infiniband_hca_port_excessive_buffer_overrun_errors_total", "infiniband_hca_port_link_downed_total", @@ -352,8 +386,8 @@ func TestHCACollectorTimeout(t *testing.T) { gatherers := setupGatherer(collector) if val, err := testutil.GatherAndCount(gatherers); err != nil { t.Errorf("Unexpected error: %v", err) - } else if val != 3 { - t.Errorf("Unexpected collection count %d, expected 3", val) + } else if val != 9 { + t.Errorf("Unexpected collection count %d, expected 9", val) } if err := testutil.GatherAndCompare(gatherers, strings.NewReader(expected), "infiniband_hca_port_excessive_buffer_overrun_errors_total", "infiniband_hca_port_link_downed_total", diff --git a/collectors/switch.go b/collectors/switch.go index b7f1430..9479b8d 100644 --- a/collectors/switch.go +++ b/collectors/switch.go @@ -32,7 +32,7 @@ var ( ) type SwitchCollector struct { - switches *[]InfinibandDevice + devices *[]InfinibandDevice logger log.Logger PortXmitData *prometheus.Desc PortRcvData *prometheus.Desc @@ -62,13 +62,16 @@ type SwitchCollector struct { PortDLIDMappingErrors *prometheus.Desc PortVLMappingErrors *prometheus.Desc PortLoopingErrors *prometheus.Desc + Rate *prometheus.Desc + Uplink *prometheus.Desc + Info *prometheus.Desc } -func NewSwitchCollector(switches *[]InfinibandDevice, logger log.Logger) *SwitchCollector { - labels := []string{"guid", "port", "switch"} +func NewSwitchCollector(devices *[]InfinibandDevice, logger log.Logger) *SwitchCollector { + labels := []string{"guid", "port"} return &SwitchCollector{ - switches: switches, - logger: log.With(logger, "collector", "switch"), + devices: devices, + logger: log.With(logger, "collector", "switch"), PortXmitData: prometheus.NewDesc(prometheus.BuildFQName(namespace, "switch", "port_transmit_data_bytes_total"), "Infiniband switch port PortXmitData", labels, nil), PortRcvData: prometheus.NewDesc(prometheus.BuildFQName(namespace, "switch", "port_receive_data_bytes_total"), @@ -125,6 +128,12 @@ func NewSwitchCollector(switches *[]InfinibandDevice, logger log.Logger) *Switch "Infiniband switch port PortVLMappingErrors", labels, nil), PortLoopingErrors: prometheus.NewDesc(prometheus.BuildFQName(namespace, "switch", "port_looping_errors_total"), "Infiniband switch port PortLoopingErrors", labels, nil), + Rate: prometheus.NewDesc(prometheus.BuildFQName(namespace, "switch", "rate_bytes_per_second"), + "Infiniband switch rate", []string{"guid"}, nil), + Uplink: prometheus.NewDesc(prometheus.BuildFQName(namespace, "switch", "uplink_info"), + "Infiniband switch uplink information", append(labels, []string{"switch", "uplink", "uplink_guid", "uplink_type", "uplink_port", "uplink_lid"}...), nil), + Info: prometheus.NewDesc(prometheus.BuildFQName(namespace, "switch", "info"), + "Infiniband switch information", []string{"guid", "switch", "lid"}, nil), } } @@ -157,6 +166,9 @@ func (s *SwitchCollector) Describe(ch chan<- *prometheus.Desc) { ch <- s.PortDLIDMappingErrors ch <- s.PortVLMappingErrors ch <- s.PortLoopingErrors + ch <- s.Rate + ch <- s.Uplink + ch <- s.Info } func (s *SwitchCollector) Collect(ch chan<- prometheus.Metric) { @@ -164,88 +176,95 @@ func (s *SwitchCollector) Collect(ch chan<- prometheus.Metric) { counters, errors, timeouts := s.collect() for _, c := range counters { if !math.IsNaN(c.PortXmitData) { - ch <- prometheus.MustNewConstMetric(s.PortXmitData, prometheus.CounterValue, c.PortXmitData, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortXmitData, prometheus.CounterValue, c.PortXmitData, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvData) { - ch <- prometheus.MustNewConstMetric(s.PortRcvData, prometheus.CounterValue, c.PortRcvData, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortRcvData, prometheus.CounterValue, c.PortRcvData, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortXmitPkts) { - ch <- prometheus.MustNewConstMetric(s.PortXmitPkts, prometheus.CounterValue, c.PortXmitPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortXmitPkts, prometheus.CounterValue, c.PortXmitPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvPkts) { - ch <- prometheus.MustNewConstMetric(s.PortRcvPkts, prometheus.CounterValue, c.PortRcvPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortRcvPkts, prometheus.CounterValue, c.PortRcvPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortUnicastXmitPkts) { - ch <- prometheus.MustNewConstMetric(s.PortUnicastXmitPkts, prometheus.CounterValue, c.PortUnicastXmitPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortUnicastXmitPkts, prometheus.CounterValue, c.PortUnicastXmitPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortUnicastRcvPkts) { - ch <- prometheus.MustNewConstMetric(s.PortUnicastRcvPkts, prometheus.CounterValue, c.PortUnicastRcvPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortUnicastRcvPkts, prometheus.CounterValue, c.PortUnicastRcvPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortMulticastXmitPkts) { - ch <- prometheus.MustNewConstMetric(s.PortMulticastXmitPkts, prometheus.CounterValue, c.PortMulticastXmitPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortMulticastXmitPkts, prometheus.CounterValue, c.PortMulticastXmitPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortMulticastRcvPkts) { - ch <- prometheus.MustNewConstMetric(s.PortMulticastRcvPkts, prometheus.CounterValue, c.PortMulticastRcvPkts, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortMulticastRcvPkts, prometheus.CounterValue, c.PortMulticastRcvPkts, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.SymbolErrorCounter) { - ch <- prometheus.MustNewConstMetric(s.SymbolErrorCounter, prometheus.CounterValue, c.SymbolErrorCounter, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.SymbolErrorCounter, prometheus.CounterValue, c.SymbolErrorCounter, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.LinkErrorRecoveryCounter) { - ch <- prometheus.MustNewConstMetric(s.LinkErrorRecoveryCounter, prometheus.CounterValue, c.LinkErrorRecoveryCounter, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.LinkErrorRecoveryCounter, prometheus.CounterValue, c.LinkErrorRecoveryCounter, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.LinkDownedCounter) { - ch <- prometheus.MustNewConstMetric(s.LinkDownedCounter, prometheus.CounterValue, c.LinkDownedCounter, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.LinkDownedCounter, prometheus.CounterValue, c.LinkDownedCounter, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvErrors) { - ch <- prometheus.MustNewConstMetric(s.PortRcvErrors, prometheus.CounterValue, c.PortRcvErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortRcvErrors, prometheus.CounterValue, c.PortRcvErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvRemotePhysicalErrors) { - ch <- prometheus.MustNewConstMetric(s.PortRcvRemotePhysicalErrors, prometheus.CounterValue, c.PortRcvRemotePhysicalErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortRcvRemotePhysicalErrors, prometheus.CounterValue, c.PortRcvRemotePhysicalErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvSwitchRelayErrors) { - ch <- prometheus.MustNewConstMetric(s.PortRcvSwitchRelayErrors, prometheus.CounterValue, c.PortRcvSwitchRelayErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortRcvSwitchRelayErrors, prometheus.CounterValue, c.PortRcvSwitchRelayErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortXmitDiscards) { - ch <- prometheus.MustNewConstMetric(s.PortXmitDiscards, prometheus.CounterValue, c.PortXmitDiscards, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortXmitDiscards, prometheus.CounterValue, c.PortXmitDiscards, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortXmitConstraintErrors) { - ch <- prometheus.MustNewConstMetric(s.PortXmitConstraintErrors, prometheus.CounterValue, c.PortXmitConstraintErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortXmitConstraintErrors, prometheus.CounterValue, c.PortXmitConstraintErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortRcvConstraintErrors) { - ch <- prometheus.MustNewConstMetric(s.PortRcvConstraintErrors, prometheus.CounterValue, c.PortRcvConstraintErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortRcvConstraintErrors, prometheus.CounterValue, c.PortRcvConstraintErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.LocalLinkIntegrityErrors) { - ch <- prometheus.MustNewConstMetric(s.LocalLinkIntegrityErrors, prometheus.CounterValue, c.LocalLinkIntegrityErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.LocalLinkIntegrityErrors, prometheus.CounterValue, c.LocalLinkIntegrityErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.ExcessiveBufferOverrunErrors) { - ch <- prometheus.MustNewConstMetric(s.ExcessiveBufferOverrunErrors, prometheus.CounterValue, c.ExcessiveBufferOverrunErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.ExcessiveBufferOverrunErrors, prometheus.CounterValue, c.ExcessiveBufferOverrunErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.VL15Dropped) { - ch <- prometheus.MustNewConstMetric(s.VL15Dropped, prometheus.CounterValue, c.VL15Dropped, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.VL15Dropped, prometheus.CounterValue, c.VL15Dropped, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortXmitWait) { - ch <- prometheus.MustNewConstMetric(s.PortXmitWait, prometheus.CounterValue, c.PortXmitWait, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortXmitWait, prometheus.CounterValue, c.PortXmitWait, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.QP1Dropped) { - ch <- prometheus.MustNewConstMetric(s.QP1Dropped, prometheus.CounterValue, c.QP1Dropped, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.QP1Dropped, prometheus.CounterValue, c.QP1Dropped, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortLocalPhysicalErrors) { - ch <- prometheus.MustNewConstMetric(s.PortLocalPhysicalErrors, prometheus.CounterValue, c.PortLocalPhysicalErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortLocalPhysicalErrors, prometheus.CounterValue, c.PortLocalPhysicalErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortMalformedPktErrors) { - ch <- prometheus.MustNewConstMetric(s.PortMalformedPktErrors, prometheus.CounterValue, c.PortMalformedPktErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortMalformedPktErrors, prometheus.CounterValue, c.PortMalformedPktErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortBufferOverrunErrors) { - ch <- prometheus.MustNewConstMetric(s.PortBufferOverrunErrors, prometheus.CounterValue, c.PortBufferOverrunErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortBufferOverrunErrors, prometheus.CounterValue, c.PortBufferOverrunErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortDLIDMappingErrors) { - ch <- prometheus.MustNewConstMetric(s.PortDLIDMappingErrors, prometheus.CounterValue, c.PortDLIDMappingErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortDLIDMappingErrors, prometheus.CounterValue, c.PortDLIDMappingErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortVLMappingErrors) { - ch <- prometheus.MustNewConstMetric(s.PortVLMappingErrors, prometheus.CounterValue, c.PortVLMappingErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortVLMappingErrors, prometheus.CounterValue, c.PortVLMappingErrors, c.device.GUID, c.PortSelect) } if !math.IsNaN(c.PortLoopingErrors) { - ch <- prometheus.MustNewConstMetric(s.PortLoopingErrors, prometheus.CounterValue, c.PortLoopingErrors, c.device.GUID, c.PortSelect, c.device.Name) + ch <- prometheus.MustNewConstMetric(s.PortLoopingErrors, prometheus.CounterValue, c.PortLoopingErrors, c.device.GUID, c.PortSelect) + } + } + for _, device := range *s.devices { + ch <- prometheus.MustNewConstMetric(s.Rate, prometheus.GaugeValue, device.Rate, device.GUID) + ch <- prometheus.MustNewConstMetric(s.Info, prometheus.GaugeValue, 1, device.GUID, device.Name, device.LID) + for port, uplink := range device.Uplinks { + ch <- prometheus.MustNewConstMetric(s.Uplink, prometheus.GaugeValue, 1, device.GUID, port, device.Name, uplink.Name, uplink.GUID, uplink.Type, uplink.PortNumber, uplink.LID) } } ch <- prometheus.MustNewConstMetric(collectErrors, prometheus.GaugeValue, errors, "switch") @@ -259,7 +278,7 @@ func (s *SwitchCollector) collect() ([]PerfQueryCounters, float64, float64) { var errors, timeouts float64 limit := make(chan int, *maxConcurrent) wg := &sync.WaitGroup{} - for _, device := range *s.switches { + for _, device := range *s.devices { limit <- 1 wg.Add(1) go func(device InfinibandDevice) { diff --git a/collectors/switch_test.go b/collectors/switch_test.go index ae9dff3..c87224e 100644 --- a/collectors/switch_test.go +++ b/collectors/switch_test.go @@ -24,8 +24,18 @@ import ( var ( switchDevices = []InfinibandDevice{ - InfinibandDevice{GUID: "0x7cfe9003009ce5b0", Name: "ib-i1l1s01"}, - InfinibandDevice{GUID: "0x506b4b03005c2740", Name: "ib-i4l1s01"}, + InfinibandDevice{Type: "SW", LID: "2052", GUID: "0x506b4b03005c2740", Rate: (25 * 4 * 125000000), Name: "ib-i4l1s01", + Uplinks: map[string]InfinibandUplink{ + "35": InfinibandUplink{Type: "CA", LID: "1432", PortNumber: "1", GUID: "0x506b4b0300cc02a6", Name: "p0001"}, + }, + }, + InfinibandDevice{Type: "SW", LID: "1719", GUID: "0x7cfe9003009ce5b0", Rate: (25 * 4 * 125000000), Name: "ib-i1l1s01", + Uplinks: map[string]InfinibandUplink{ + "1": InfinibandUplink{Type: "SW", LID: "1516", PortNumber: "1", GUID: "0x7cfe900300b07320", Name: "ib-i1l2s01"}, + "10": InfinibandUplink{Type: "CA", LID: "134", PortNumber: "1", GUID: "0x7cfe9003003b4bde", Name: "o0001"}, + "11": InfinibandUplink{Type: "CA", LID: "133", PortNumber: "1", GUID: "0x7cfe9003003b4b96", Name: "o0002"}, + }, + }, } ) @@ -41,123 +51,137 @@ func TestSwitchCollector(t *testing.T) { # HELP infiniband_exporter_collect_timeouts Number of timeouts that occurred during collection # TYPE infiniband_exporter_collect_timeouts gauge infiniband_exporter_collect_timeouts{collector="switch"} 0 + # HELP infiniband_switch_info Infiniband switch information + # TYPE infiniband_switch_info gauge + infiniband_switch_info{guid="0x506b4b03005c2740",lid="2052",switch="ib-i4l1s01"} 1 + infiniband_switch_info{guid="0x7cfe9003009ce5b0",lid="1719",switch="ib-i1l1s01"} 1 # HELP infiniband_switch_port_excessive_buffer_overrun_errors_total Infiniband switch port ExcessiveBufferOverrunErrors # TYPE infiniband_switch_port_excessive_buffer_overrun_errors_total counter - infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_link_downed_total Infiniband switch port LinkDownedCounter # TYPE infiniband_switch_port_link_downed_total counter - infiniband_switch_port_link_downed_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 1 - infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_link_downed_total{guid="0x506b4b03005c2740",port="1"} 1 + infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_link_error_recovery_total Infiniband switch port LinkErrorRecoveryCounter # TYPE infiniband_switch_port_link_error_recovery_total counter - infiniband_switch_port_link_error_recovery_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_link_error_recovery_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_local_link_integrity_errors_total Infiniband switch port LocalLinkIntegrityErrors # TYPE infiniband_switch_port_local_link_integrity_errors_total counter - infiniband_switch_port_local_link_integrity_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_local_link_integrity_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_multicast_receive_packets_total Infiniband switch port PortMulticastRcvPkts # TYPE infiniband_switch_port_multicast_receive_packets_total counter - infiniband_switch_port_multicast_receive_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 6694940 - infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 5584846741 - infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_multicast_receive_packets_total{guid="0x506b4b03005c2740",port="1"} 6694940 + infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 5584846741 + infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_multicast_transmit_packets_total Infiniband switch port PortMulticastXmitPkts # TYPE infiniband_switch_port_multicast_transmit_packets_total counter - infiniband_switch_port_multicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 5623645694 - infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 25038914 - infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_multicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1"} 5623645694 + infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 25038914 + infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_qp1_dropped_total Infiniband switch port QP1Dropped # TYPE infiniband_switch_port_qp1_dropped_total counter - infiniband_switch_port_qp1_dropped_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_qp1_dropped_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_constraint_errors_total Infiniband switch port PortRcvConstraintErrors # TYPE infiniband_switch_port_receive_constraint_errors_total counter - infiniband_switch_port_receive_constraint_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_receive_constraint_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_data_bytes_total Infiniband switch port PortRcvData # TYPE infiniband_switch_port_receive_data_bytes_total counter - infiniband_switch_port_receive_data_bytes_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 178762341961629 - infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 12279028775751 - infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 39078804993378 + infiniband_switch_port_receive_data_bytes_total{guid="0x506b4b03005c2740",port="1"} 178762341961629 + infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1"} 12279028775751 + infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2"} 39078804993378 # HELP infiniband_switch_port_receive_errors_total Infiniband switch port PortRcvErrors # TYPE infiniband_switch_port_receive_errors_total counter - infiniband_switch_port_receive_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_receive_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_packets_total Infiniband switch port PortRcvPkts # TYPE infiniband_switch_port_receive_packets_total counter - infiniband_switch_port_receive_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 387654829341 - infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 32262508468 - infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 93660802641 + infiniband_switch_port_receive_packets_total{guid="0x506b4b03005c2740",port="1"} 387654829341 + infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 32262508468 + infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 93660802641 # HELP infiniband_switch_port_receive_remote_physical_errors_total Infiniband switch port PortRcvRemotePhysicalErrors # TYPE infiniband_switch_port_receive_remote_physical_errors_total counter - infiniband_switch_port_receive_remote_physical_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_receive_remote_physical_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_switch_relay_errors_total Infiniband switch port PortRcvSwitchRelayErrors # TYPE infiniband_switch_port_receive_switch_relay_errors_total counter - infiniband_switch_port_receive_switch_relay_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 7 - infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_receive_switch_relay_errors_total{guid="0x506b4b03005c2740",port="1"} 7 + infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_symbol_error_total Infiniband switch port SymbolErrorCounter # TYPE infiniband_switch_port_symbol_error_total counter - infiniband_switch_port_symbol_error_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_symbol_error_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_transmit_constraint_errors_total Infiniband switch port PortXmitConstraintErrors # TYPE infiniband_switch_port_transmit_constraint_errors_total counter - infiniband_switch_port_transmit_constraint_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_transmit_constraint_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_transmit_data_bytes_total Infiniband switch port PortXmitData # TYPE infiniband_switch_port_transmit_data_bytes_total counter - infiniband_switch_port_transmit_data_bytes_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 178791657177235 - infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 36298026860928 - infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 26006570014026 + infiniband_switch_port_transmit_data_bytes_total{guid="0x506b4b03005c2740",port="1"} 178791657177235 + infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1"} 36298026860928 + infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2"} 26006570014026 # HELP infiniband_switch_port_transmit_discards_total Infiniband switch port PortXmitDiscards # TYPE infiniband_switch_port_transmit_discards_total counter - infiniband_switch_port_transmit_discards_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 20046 - infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_transmit_discards_total{guid="0x506b4b03005c2740",port="1"} 20046 + infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_transmit_packets_total Infiniband switch port PortXmitPkts # TYPE infiniband_switch_port_transmit_packets_total counter - infiniband_switch_port_transmit_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 393094651266 - infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 101733204203 - infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 122978948297 + infiniband_switch_port_transmit_packets_total{guid="0x506b4b03005c2740",port="1"} 393094651266 + infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 101733204203 + infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 122978948297 # HELP infiniband_switch_port_transmit_wait_total Infiniband switch port PortXmitWait # TYPE infiniband_switch_port_transmit_wait_total counter - infiniband_switch_port_transmit_wait_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 41864608 - infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 22730501 - infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 36510964 + infiniband_switch_port_transmit_wait_total{guid="0x506b4b03005c2740",port="1"} 41864608 + infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="1"} 22730501 + infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="2"} 36510964 # HELP infiniband_switch_port_unicast_receive_packets_total Infiniband switch port PortUnicastRcvPkts # TYPE infiniband_switch_port_unicast_receive_packets_total counter - infiniband_switch_port_unicast_receive_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 387648134400 - infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 26677661727 - infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 93660802641 + infiniband_switch_port_unicast_receive_packets_total{guid="0x506b4b03005c2740",port="1"} 387648134400 + infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 26677661727 + infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 93660802641 # HELP infiniband_switch_port_unicast_transmit_packets_total Infiniband switch port PortUnicastXmitPkts # TYPE infiniband_switch_port_unicast_transmit_packets_total counter - infiniband_switch_port_unicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 387471005571 - infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 101708165289 - infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 122978948297 + infiniband_switch_port_unicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1"} 387471005571 + infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 101708165289 + infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 122978948297 # HELP infiniband_switch_port_vl15_dropped_total Infiniband switch port VL15Dropped # TYPE infiniband_switch_port_vl15_dropped_total counter - infiniband_switch_port_vl15_dropped_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_vl15_dropped_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="2"} 0 + # HELP infiniband_switch_rate_bytes_per_second Infiniband switch rate + # TYPE infiniband_switch_rate_bytes_per_second gauge + infiniband_switch_rate_bytes_per_second{guid="0x506b4b03005c2740"} 1.25e+10 + infiniband_switch_rate_bytes_per_second{guid="0x7cfe9003009ce5b0"} 1.25e+10 + # HELP infiniband_switch_uplink_info Infiniband switch uplink information + # TYPE infiniband_switch_uplink_info gauge + infiniband_switch_uplink_info{guid="0x506b4b03005c2740",port="35",switch="ib-i4l1s01",uplink="p0001",uplink_guid="0x506b4b0300cc02a6",uplink_lid="1432",uplink_port="1",uplink_type="CA"} 1 + infiniband_switch_uplink_info{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01",uplink="ib-i1l2s01",uplink_guid="0x7cfe900300b07320",uplink_lid="1516",uplink_port="1",uplink_type="SW"} 1 + infiniband_switch_uplink_info{guid="0x7cfe9003009ce5b0",port="10",switch="ib-i1l1s01",uplink="o0001",uplink_guid="0x7cfe9003003b4bde",uplink_lid="134",uplink_port="1",uplink_type="CA"} 1 + infiniband_switch_uplink_info{guid="0x7cfe9003009ce5b0",port="11",switch="ib-i1l1s01",uplink="o0002",uplink_guid="0x7cfe9003003b4b96",uplink_lid="133",uplink_port="1",uplink_type="CA"} 1 ` collector := NewSwitchCollector(&switchDevices, log.NewNopLogger()) gatherers := setupGatherer(collector) if val, err := testutil.GatherAndCount(gatherers); err != nil { t.Errorf("Unexpected error: %v", err) - } else if val != 69 { - t.Errorf("Unexpected collection count %d, expected 69", val) + } else if val != 77 { + t.Errorf("Unexpected collection count %d, expected 77", val) } if err := testutil.GatherAndCompare(gatherers, strings.NewReader(expected), "infiniband_switch_port_excessive_buffer_overrun_errors_total", "infiniband_switch_port_link_downed_total", @@ -172,6 +196,7 @@ func TestSwitchCollector(t *testing.T) { "infiniband_switch_port_transmit_wait_total", "infiniband_switch_port_unicast_receive_packets_total", "infiniband_switch_port_unicast_transmit_packets_total", "infiniband_switch_port_vl15_dropped_total", "infiniband_switch_port_buffer_overrun_errors_total", + "infiniband_switch_info", "infiniband_switch_rate_bytes_per_second", "infiniband_switch_uplink_info", "infiniband_exporter_collect_errors", "infiniband_exporter_collect_timeouts"); err != nil { t.Errorf("unexpected collecting result:\n%s", err) } @@ -189,153 +214,167 @@ func TestSwitchCollectorFull(t *testing.T) { # HELP infiniband_exporter_collect_timeouts Number of timeouts that occurred during collection # TYPE infiniband_exporter_collect_timeouts gauge infiniband_exporter_collect_timeouts{collector="switch"} 0 + # HELP infiniband_switch_info Infiniband switch information + # TYPE infiniband_switch_info gauge + infiniband_switch_info{guid="0x506b4b03005c2740",lid="2052",switch="ib-i4l1s01"} 1 + infiniband_switch_info{guid="0x7cfe9003009ce5b0",lid="1719",switch="ib-i1l1s01"} 1 # HELP infiniband_switch_port_buffer_overrun_errors_total Infiniband switch port PortBufferOverrunErrors # TYPE infiniband_switch_port_buffer_overrun_errors_total counter - infiniband_switch_port_buffer_overrun_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_buffer_overrun_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_dli_mapping_errors_total Infiniband switch port PortDLIDMappingErrors # TYPE infiniband_switch_port_dli_mapping_errors_total counter - infiniband_switch_port_dli_mapping_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_dli_mapping_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_dli_mapping_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_dli_mapping_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_dli_mapping_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_dli_mapping_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_excessive_buffer_overrun_errors_total Infiniband switch port ExcessiveBufferOverrunErrors # TYPE infiniband_switch_port_excessive_buffer_overrun_errors_total counter - infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_link_downed_total Infiniband switch port LinkDownedCounter # TYPE infiniband_switch_port_link_downed_total counter - infiniband_switch_port_link_downed_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 1 - infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_link_downed_total{guid="0x506b4b03005c2740",port="1"} 1 + infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_link_error_recovery_total Infiniband switch port LinkErrorRecoveryCounter # TYPE infiniband_switch_port_link_error_recovery_total counter - infiniband_switch_port_link_error_recovery_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_link_error_recovery_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_local_link_integrity_errors_total Infiniband switch port LocalLinkIntegrityErrors # TYPE infiniband_switch_port_local_link_integrity_errors_total counter - infiniband_switch_port_local_link_integrity_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_local_link_integrity_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_local_physical_errors_total Infiniband switch port PortLocalPhysicalErrors # TYPE infiniband_switch_port_local_physical_errors_total counter - infiniband_switch_port_local_physical_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_local_physical_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_local_physical_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_local_physical_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_local_physical_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_local_physical_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_looping_errors_total Infiniband switch port PortLoopingErrors # TYPE infiniband_switch_port_looping_errors_total counter - infiniband_switch_port_looping_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_looping_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_looping_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_looping_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_looping_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_looping_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_malformed_packet_errors_total Infiniband switch port PortMalformedPktErrors # TYPE infiniband_switch_port_malformed_packet_errors_total counter - infiniband_switch_port_malformed_packet_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_malformed_packet_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_malformed_packet_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_malformed_packet_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_malformed_packet_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_malformed_packet_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_multicast_receive_packets_total Infiniband switch port PortMulticastRcvPkts # TYPE infiniband_switch_port_multicast_receive_packets_total counter - infiniband_switch_port_multicast_receive_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 6694940 - infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 5584846741 - infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_multicast_receive_packets_total{guid="0x506b4b03005c2740",port="1"} 6694940 + infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 5584846741 + infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_multicast_transmit_packets_total Infiniband switch port PortMulticastXmitPkts # TYPE infiniband_switch_port_multicast_transmit_packets_total counter - infiniband_switch_port_multicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 5623645694 - infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 25038914 - infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_multicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1"} 5623645694 + infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 25038914 + infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_qp1_dropped_total Infiniband switch port QP1Dropped # TYPE infiniband_switch_port_qp1_dropped_total counter - infiniband_switch_port_qp1_dropped_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_qp1_dropped_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_constraint_errors_total Infiniband switch port PortRcvConstraintErrors # TYPE infiniband_switch_port_receive_constraint_errors_total counter - infiniband_switch_port_receive_constraint_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_receive_constraint_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_data_bytes_total Infiniband switch port PortRcvData # TYPE infiniband_switch_port_receive_data_bytes_total counter - infiniband_switch_port_receive_data_bytes_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 178762341961629 - infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 12279028775751 - infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 39078804993378 + infiniband_switch_port_receive_data_bytes_total{guid="0x506b4b03005c2740",port="1"} 178762341961629 + infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1"} 12279028775751 + infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2"} 39078804993378 # HELP infiniband_switch_port_receive_errors_total Infiniband switch port PortRcvErrors # TYPE infiniband_switch_port_receive_errors_total counter - infiniband_switch_port_receive_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_receive_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_packets_total Infiniband switch port PortRcvPkts # TYPE infiniband_switch_port_receive_packets_total counter - infiniband_switch_port_receive_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 387654829341 - infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 32262508468 - infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 93660802641 + infiniband_switch_port_receive_packets_total{guid="0x506b4b03005c2740",port="1"} 387654829341 + infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 32262508468 + infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 93660802641 # HELP infiniband_switch_port_receive_remote_physical_errors_total Infiniband switch port PortRcvRemotePhysicalErrors # TYPE infiniband_switch_port_receive_remote_physical_errors_total counter - infiniband_switch_port_receive_remote_physical_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_receive_remote_physical_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_switch_relay_errors_total Infiniband switch port PortRcvSwitchRelayErrors # TYPE infiniband_switch_port_receive_switch_relay_errors_total counter - infiniband_switch_port_receive_switch_relay_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 7 - infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_receive_switch_relay_errors_total{guid="0x506b4b03005c2740",port="1"} 7 + infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_symbol_error_total Infiniband switch port SymbolErrorCounter # TYPE infiniband_switch_port_symbol_error_total counter - infiniband_switch_port_symbol_error_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_symbol_error_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_transmit_constraint_errors_total Infiniband switch port PortXmitConstraintErrors # TYPE infiniband_switch_port_transmit_constraint_errors_total counter - infiniband_switch_port_transmit_constraint_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_transmit_constraint_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_transmit_data_bytes_total Infiniband switch port PortXmitData # TYPE infiniband_switch_port_transmit_data_bytes_total counter - infiniband_switch_port_transmit_data_bytes_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 178791657177235 - infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 36298026860928 - infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 26006570014026 + infiniband_switch_port_transmit_data_bytes_total{guid="0x506b4b03005c2740",port="1"} 178791657177235 + infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1"} 36298026860928 + infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2"} 26006570014026 # HELP infiniband_switch_port_transmit_discards_total Infiniband switch port PortXmitDiscards # TYPE infiniband_switch_port_transmit_discards_total counter - infiniband_switch_port_transmit_discards_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 20046 - infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_transmit_discards_total{guid="0x506b4b03005c2740",port="1"} 20046 + infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_transmit_packets_total Infiniband switch port PortXmitPkts # TYPE infiniband_switch_port_transmit_packets_total counter - infiniband_switch_port_transmit_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 393094651266 - infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 101733204203 - infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 122978948297 + infiniband_switch_port_transmit_packets_total{guid="0x506b4b03005c2740",port="1"} 393094651266 + infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 101733204203 + infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 122978948297 # HELP infiniband_switch_port_transmit_wait_total Infiniband switch port PortXmitWait # TYPE infiniband_switch_port_transmit_wait_total counter - infiniband_switch_port_transmit_wait_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 41864608 - infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 22730501 - infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 36510964 + infiniband_switch_port_transmit_wait_total{guid="0x506b4b03005c2740",port="1"} 41864608 + infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="1"} 22730501 + infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="2"} 36510964 # HELP infiniband_switch_port_unicast_receive_packets_total Infiniband switch port PortUnicastRcvPkts # TYPE infiniband_switch_port_unicast_receive_packets_total counter - infiniband_switch_port_unicast_receive_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 387648134400 - infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 26677661727 - infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 93660802641 + infiniband_switch_port_unicast_receive_packets_total{guid="0x506b4b03005c2740",port="1"} 387648134400 + infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 26677661727 + infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 93660802641 # HELP infiniband_switch_port_unicast_transmit_packets_total Infiniband switch port PortUnicastXmitPkts # TYPE infiniband_switch_port_unicast_transmit_packets_total counter - infiniband_switch_port_unicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 387471005571 - infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 101708165289 - infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 122978948297 + infiniband_switch_port_unicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1"} 387471005571 + infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 101708165289 + infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 122978948297 # HELP infiniband_switch_port_vl_mapping_errors_total Infiniband switch port PortVLMappingErrors # TYPE infiniband_switch_port_vl_mapping_errors_total counter - infiniband_switch_port_vl_mapping_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_vl_mapping_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_vl_mapping_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_vl_mapping_errors_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_vl_mapping_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_vl_mapping_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_vl15_dropped_total Infiniband switch port VL15Dropped # TYPE infiniband_switch_port_vl15_dropped_total counter - infiniband_switch_port_vl15_dropped_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 - infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 - infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 + infiniband_switch_port_vl15_dropped_total{guid="0x506b4b03005c2740",port="1"} 0 + infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="1"} 0 + infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="2"} 0 + # HELP infiniband_switch_rate_bytes_per_second Infiniband switch rate + # TYPE infiniband_switch_rate_bytes_per_second gauge + infiniband_switch_rate_bytes_per_second{guid="0x506b4b03005c2740"} 1.25e+10 + infiniband_switch_rate_bytes_per_second{guid="0x7cfe9003009ce5b0"} 1.25e+10 + # HELP infiniband_switch_uplink_info Infiniband switch uplink information + # TYPE infiniband_switch_uplink_info gauge + infiniband_switch_uplink_info{guid="0x506b4b03005c2740",port="35",switch="ib-i4l1s01",uplink="p0001",uplink_guid="0x506b4b0300cc02a6",uplink_lid="1432",uplink_port="1",uplink_type="CA"} 1 + infiniband_switch_uplink_info{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01",uplink="ib-i1l2s01",uplink_guid="0x7cfe900300b07320",uplink_lid="1516",uplink_port="1",uplink_type="SW"} 1 + infiniband_switch_uplink_info{guid="0x7cfe9003009ce5b0",port="10",switch="ib-i1l1s01",uplink="o0001",uplink_guid="0x7cfe9003003b4bde",uplink_lid="134",uplink_port="1",uplink_type="CA"} 1 + infiniband_switch_uplink_info{guid="0x7cfe9003009ce5b0",port="11",switch="ib-i1l1s01",uplink="o0002",uplink_guid="0x7cfe9003003b4b96",uplink_lid="133",uplink_port="1",uplink_type="CA"} 1 ` collector := NewSwitchCollector(&switchDevices, log.NewNopLogger()) gatherers := setupGatherer(collector) if val, err := testutil.GatherAndCount(gatherers); err != nil { t.Errorf("Unexpected error: %v", err) - } else if val != 87 { - t.Errorf("Unexpected collection count %d, expected 87", val) + } else if val != 95 { + t.Errorf("Unexpected collection count %d, expected 95", val) } if err := testutil.GatherAndCompare(gatherers, strings.NewReader(expected), "infiniband_switch_port_excessive_buffer_overrun_errors_total", "infiniband_switch_port_link_downed_total", @@ -352,6 +391,7 @@ func TestSwitchCollectorFull(t *testing.T) { "infiniband_switch_port_buffer_overrun_errors_total", "infiniband_switch_port_dli_mapping_errors_total", "infiniband_switch_port_local_physical_errors_total", "infiniband_switch_port_looping_errors_total", "infiniband_switch_port_malformed_packet_errors_total", "infiniband_switch_port_vl_mapping_errors_total", + "infiniband_switch_info", "infiniband_switch_rate_bytes_per_second", "infiniband_switch_uplink_info", "infiniband_exporter_collect_errors", "infiniband_exporter_collect_timeouts"); err != nil { t.Errorf("unexpected collecting result:\n%s", err) } @@ -374,8 +414,8 @@ func TestSwitchCollectorError(t *testing.T) { gatherers := setupGatherer(collector) if val, err := testutil.GatherAndCount(gatherers); err != nil { t.Errorf("Unexpected error: %v", err) - } else if val != 3 { - t.Errorf("Unexpected collection count %d, expected 3", val) + } else if val != 11 { + t.Errorf("Unexpected collection count %d, expected 11", val) } if err := testutil.GatherAndCompare(gatherers, strings.NewReader(expected), "infiniband_switch_port_excessive_buffer_overrun_errors_total", "infiniband_switch_port_link_downed_total", @@ -402,8 +442,8 @@ func TestSwitchCollectorTimeout(t *testing.T) { gatherers := setupGatherer(collector) if val, err := testutil.GatherAndCount(gatherers); err != nil { t.Errorf("Unexpected error: %v", err) - } else if val != 3 { - t.Errorf("Unexpected collection count %d, expected 3", val) + } else if val != 11 { + t.Errorf("Unexpected collection count %d, expected 11", val) } if err := testutil.GatherAndCompare(gatherers, strings.NewReader(expected), "infiniband_switch_port_excessive_buffer_overrun_errors_total", "infiniband_switch_port_link_downed_total", diff --git a/infiniband_exporter_test.go b/infiniband_exporter_test.go index 4c8cf21..d465097 100644 --- a/infiniband_exporter_test.go +++ b/infiniband_exporter_test.go @@ -35,204 +35,233 @@ const ( var ( outputPath string - expectedSwitch = `# HELP infiniband_switch_port_excessive_buffer_overrun_errors_total Infiniband switch port ExcessiveBufferOverrunErrors + expectedSwitch = `# HELP infiniband_switch_info Infiniband switch information +# TYPE infiniband_switch_info gauge +infiniband_switch_info{guid="0x506b4b03005c2740",lid="2052",switch="ib-i4l1s01"} 1 +infiniband_switch_info{guid="0x7cfe9003009ce5b0",lid="1719",switch="ib-i1l1s01"} 1 +# HELP infiniband_switch_port_excessive_buffer_overrun_errors_total Infiniband switch port ExcessiveBufferOverrunErrors # TYPE infiniband_switch_port_excessive_buffer_overrun_errors_total counter -infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_link_downed_total Infiniband switch port LinkDownedCounter # TYPE infiniband_switch_port_link_downed_total counter -infiniband_switch_port_link_downed_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 1 -infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_link_downed_total{guid="0x506b4b03005c2740",port="1"} 1 +infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_link_downed_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_link_error_recovery_total Infiniband switch port LinkErrorRecoveryCounter # TYPE infiniband_switch_port_link_error_recovery_total counter -infiniband_switch_port_link_error_recovery_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_link_error_recovery_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_link_error_recovery_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_local_link_integrity_errors_total Infiniband switch port LocalLinkIntegrityErrors # TYPE infiniband_switch_port_local_link_integrity_errors_total counter -infiniband_switch_port_local_link_integrity_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_local_link_integrity_errors_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_local_link_integrity_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_multicast_receive_packets_total Infiniband switch port PortMulticastRcvPkts # TYPE infiniband_switch_port_multicast_receive_packets_total counter -infiniband_switch_port_multicast_receive_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 6.69494e+06 -infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 5.584846741e+09 -infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_multicast_receive_packets_total{guid="0x506b4b03005c2740",port="1"} 6.69494e+06 +infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 5.584846741e+09 +infiniband_switch_port_multicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_multicast_transmit_packets_total Infiniband switch port PortMulticastXmitPkts # TYPE infiniband_switch_port_multicast_transmit_packets_total counter -infiniband_switch_port_multicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 5.623645694e+09 -infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 2.5038914e+07 -infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_multicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1"} 5.623645694e+09 +infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 2.5038914e+07 +infiniband_switch_port_multicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_qp1_dropped_total Infiniband switch port QP1Dropped # TYPE infiniband_switch_port_qp1_dropped_total counter -infiniband_switch_port_qp1_dropped_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_qp1_dropped_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_qp1_dropped_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_constraint_errors_total Infiniband switch port PortRcvConstraintErrors # TYPE infiniband_switch_port_receive_constraint_errors_total counter -infiniband_switch_port_receive_constraint_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_receive_constraint_errors_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_receive_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_data_bytes_total Infiniband switch port PortRcvData # TYPE infiniband_switch_port_receive_data_bytes_total counter -infiniband_switch_port_receive_data_bytes_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 1.78762341961629e+14 -infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 1.2279028775751e+13 -infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 3.9078804993378e+13 +infiniband_switch_port_receive_data_bytes_total{guid="0x506b4b03005c2740",port="1"} 1.78762341961629e+14 +infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1"} 1.2279028775751e+13 +infiniband_switch_port_receive_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2"} 3.9078804993378e+13 # HELP infiniband_switch_port_receive_errors_total Infiniband switch port PortRcvErrors # TYPE infiniband_switch_port_receive_errors_total counter -infiniband_switch_port_receive_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_receive_errors_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_receive_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_packets_total Infiniband switch port PortRcvPkts # TYPE infiniband_switch_port_receive_packets_total counter -infiniband_switch_port_receive_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 3.87654829341e+11 -infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 3.2262508468e+10 -infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 9.3660802641e+10 +infiniband_switch_port_receive_packets_total{guid="0x506b4b03005c2740",port="1"} 3.87654829341e+11 +infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 3.2262508468e+10 +infiniband_switch_port_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 9.3660802641e+10 # HELP infiniband_switch_port_receive_remote_physical_errors_total Infiniband switch port PortRcvRemotePhysicalErrors # TYPE infiniband_switch_port_receive_remote_physical_errors_total counter -infiniband_switch_port_receive_remote_physical_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_receive_remote_physical_errors_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_receive_remote_physical_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_receive_switch_relay_errors_total Infiniband switch port PortRcvSwitchRelayErrors # TYPE infiniband_switch_port_receive_switch_relay_errors_total counter -infiniband_switch_port_receive_switch_relay_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 7 -infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_receive_switch_relay_errors_total{guid="0x506b4b03005c2740",port="1"} 7 +infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_receive_switch_relay_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_symbol_error_total Infiniband switch port SymbolErrorCounter # TYPE infiniband_switch_port_symbol_error_total counter -infiniband_switch_port_symbol_error_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_symbol_error_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_symbol_error_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_transmit_constraint_errors_total Infiniband switch port PortXmitConstraintErrors # TYPE infiniband_switch_port_transmit_constraint_errors_total counter -infiniband_switch_port_transmit_constraint_errors_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_transmit_constraint_errors_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_transmit_constraint_errors_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_transmit_data_bytes_total Infiniband switch port PortXmitData # TYPE infiniband_switch_port_transmit_data_bytes_total counter -infiniband_switch_port_transmit_data_bytes_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 1.78791657177235e+14 -infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 3.6298026860928e+13 -infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 2.6006570014026e+13 +infiniband_switch_port_transmit_data_bytes_total{guid="0x506b4b03005c2740",port="1"} 1.78791657177235e+14 +infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="1"} 3.6298026860928e+13 +infiniband_switch_port_transmit_data_bytes_total{guid="0x7cfe9003009ce5b0",port="2"} 2.6006570014026e+13 # HELP infiniband_switch_port_transmit_discards_total Infiniband switch port PortXmitDiscards # TYPE infiniband_switch_port_transmit_discards_total counter -infiniband_switch_port_transmit_discards_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 20046 -infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0 +infiniband_switch_port_transmit_discards_total{guid="0x506b4b03005c2740",port="1"} 20046 +infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_transmit_discards_total{guid="0x7cfe9003009ce5b0",port="2"} 0 # HELP infiniband_switch_port_transmit_packets_total Infiniband switch port PortXmitPkts # TYPE infiniband_switch_port_transmit_packets_total counter -infiniband_switch_port_transmit_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 3.93094651266e+11 -infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 1.01733204203e+11 -infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 1.22978948297e+11 +infiniband_switch_port_transmit_packets_total{guid="0x506b4b03005c2740",port="1"} 3.93094651266e+11 +infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 1.01733204203e+11 +infiniband_switch_port_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 1.22978948297e+11 # HELP infiniband_switch_port_transmit_wait_total Infiniband switch port PortXmitWait # TYPE infiniband_switch_port_transmit_wait_total counter -infiniband_switch_port_transmit_wait_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 4.1864608e+07 -infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 2.2730501e+07 -infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 3.6510964e+07 +infiniband_switch_port_transmit_wait_total{guid="0x506b4b03005c2740",port="1"} 4.1864608e+07 +infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="1"} 2.2730501e+07 +infiniband_switch_port_transmit_wait_total{guid="0x7cfe9003009ce5b0",port="2"} 3.6510964e+07 # HELP infiniband_switch_port_unicast_receive_packets_total Infiniband switch port PortUnicastRcvPkts # TYPE infiniband_switch_port_unicast_receive_packets_total counter -infiniband_switch_port_unicast_receive_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 3.876481344e+11 -infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 2.6677661727e+10 -infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 9.3660802641e+10 +infiniband_switch_port_unicast_receive_packets_total{guid="0x506b4b03005c2740",port="1"} 3.876481344e+11 +infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 2.6677661727e+10 +infiniband_switch_port_unicast_receive_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 9.3660802641e+10 # HELP infiniband_switch_port_unicast_transmit_packets_total Infiniband switch port PortUnicastXmitPkts # TYPE infiniband_switch_port_unicast_transmit_packets_total counter -infiniband_switch_port_unicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 3.87471005571e+11 -infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 1.01708165289e+11 -infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 1.22978948297e+11 +infiniband_switch_port_unicast_transmit_packets_total{guid="0x506b4b03005c2740",port="1"} 3.87471005571e+11 +infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="1"} 1.01708165289e+11 +infiniband_switch_port_unicast_transmit_packets_total{guid="0x7cfe9003009ce5b0",port="2"} 1.22978948297e+11 # HELP infiniband_switch_port_vl15_dropped_total Infiniband switch port VL15Dropped # TYPE infiniband_switch_port_vl15_dropped_total counter -infiniband_switch_port_vl15_dropped_total{guid="0x506b4b03005c2740",port="1",switch="ib-i4l1s01"} 0 -infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01"} 0 -infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="2",switch="ib-i1l1s01"} 0` - expectedHCA = `# HELP infiniband_hca_port_excessive_buffer_overrun_errors_total Infiniband HCA port ExcessiveBufferOverrunErrors +infiniband_switch_port_vl15_dropped_total{guid="0x506b4b03005c2740",port="1"} 0 +infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="1"} 0 +infiniband_switch_port_vl15_dropped_total{guid="0x7cfe9003009ce5b0",port="2"} 0 +# HELP infiniband_switch_rate_bytes_per_second Infiniband switch rate +# TYPE infiniband_switch_rate_bytes_per_second gauge +infiniband_switch_rate_bytes_per_second{guid="0x506b4b03005c2740"} 1.25e+10 +infiniband_switch_rate_bytes_per_second{guid="0x7cfe9003009ce5b0"} 1.25e+10 +# HELP infiniband_switch_uplink_info Infiniband switch uplink information +# TYPE infiniband_switch_uplink_info gauge +infiniband_switch_uplink_info{guid="0x506b4b03005c2740",port="35",switch="ib-i4l1s01",uplink="p0001",uplink_guid="0x506b4b0300cc02a6",uplink_lid="1432",uplink_port="1",uplink_type="CA"} 1 +infiniband_switch_uplink_info{guid="0x7cfe9003009ce5b0",port="1",switch="ib-i1l1s01",uplink="ib-i1l2s01",uplink_guid="0x7cfe900300b07320",uplink_lid="1516",uplink_port="1",uplink_type="SW"} 1 +infiniband_switch_uplink_info{guid="0x7cfe9003009ce5b0",port="10",switch="ib-i1l1s01",uplink="o0001",uplink_guid="0x7cfe9003003b4bde",uplink_lid="134",uplink_port="1",uplink_type="CA"} 1 +infiniband_switch_uplink_info{guid="0x7cfe9003009ce5b0",port="11",switch="ib-i1l1s01",uplink="o0002",uplink_guid="0x7cfe9003003b4b96",uplink_lid="133",uplink_port="1",uplink_type="CA"} 1` + expectedHCA = `# HELP infiniband_hca_info Infiniband HCA information +# TYPE infiniband_hca_info gauge +infiniband_hca_info{guid="0x506b4b0300cc02a6",hca="p0001",lid="1432"} 1 +infiniband_hca_info{guid="0x7cfe9003003b4b96",hca="o0002",lid="133"} 1 +infiniband_hca_info{guid="0x7cfe9003003b4bde",hca="o0001",lid="134"} 1 +# HELP infiniband_hca_port_excessive_buffer_overrun_errors_total Infiniband HCA port ExcessiveBufferOverrunErrors # TYPE infiniband_hca_port_excessive_buffer_overrun_errors_total counter -infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_excessive_buffer_overrun_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_link_downed_total Infiniband HCA port LinkDownedCounter # TYPE infiniband_hca_port_link_downed_total counter -infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_link_downed_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_link_error_recovery_total Infiniband HCA port LinkErrorRecoveryCounter # TYPE infiniband_hca_port_link_error_recovery_total counter -infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_link_error_recovery_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_local_link_integrity_errors_total Infiniband HCA port LocalLinkIntegrityErrors # TYPE infiniband_hca_port_local_link_integrity_errors_total counter -infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_local_link_integrity_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_multicast_receive_packets_total Infiniband HCA port PortMulticastRcvPkts # TYPE infiniband_hca_port_multicast_receive_packets_total counter -infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 3.732373137e+09 -infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 3.732158589e+09 +infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4b96",port="1"} 3.732373137e+09 +infiniband_hca_port_multicast_receive_packets_total{guid="0x7cfe9003003b4bde",port="1"} 3.732158589e+09 # HELP infiniband_hca_port_multicast_transmit_packets_total Infiniband HCA port PortMulticastXmitPkts # TYPE infiniband_hca_port_multicast_transmit_packets_total counter -infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 544690 -infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 721488 +infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4b96",port="1"} 544690 +infiniband_hca_port_multicast_transmit_packets_total{guid="0x7cfe9003003b4bde",port="1"} 721488 # HELP infiniband_hca_port_qp1_dropped_total Infiniband HCA port QP1Dropped # TYPE infiniband_hca_port_qp1_dropped_total counter -infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_qp1_dropped_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_constraint_errors_total Infiniband HCA port PortRcvConstraintErrors # TYPE infiniband_hca_port_receive_constraint_errors_total counter -infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_receive_constraint_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_data_bytes_total Infiniband HCA port PortRcvData # TYPE infiniband_hca_port_receive_data_bytes_total counter -infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 3.7225401952885e+13 -infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 9.7524845883e+12 +infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4b96",port="1"} 3.7225401952885e+13 +infiniband_hca_port_receive_data_bytes_total{guid="0x7cfe9003003b4bde",port="1"} 9.7524845883e+12 # HELP infiniband_hca_port_receive_errors_total Infiniband HCA port PortRcvErrors # TYPE infiniband_hca_port_receive_errors_total counter -infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_receive_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_packets_total Infiniband HCA port PortRcvPkts # TYPE infiniband_hca_port_receive_packets_total counter -infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 1.00583719365e+11 -infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 3.3038722564e+10 +infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4b96",port="1"} 1.00583719365e+11 +infiniband_hca_port_receive_packets_total{guid="0x7cfe9003003b4bde",port="1"} 3.3038722564e+10 # HELP infiniband_hca_port_receive_remote_physical_errors_total Infiniband HCA port PortRcvRemotePhysicalErrors # TYPE infiniband_hca_port_receive_remote_physical_errors_total counter -infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_receive_remote_physical_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_receive_switch_relay_errors_total Infiniband HCA port PortRcvSwitchRelayErrors # TYPE infiniband_hca_port_receive_switch_relay_errors_total counter -infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_receive_switch_relay_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_symbol_error_total Infiniband HCA port SymbolErrorCounter # TYPE infiniband_hca_port_symbol_error_total counter -infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_symbol_error_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_transmit_constraint_errors_total Infiniband HCA port PortXmitConstraintErrors # TYPE infiniband_hca_port_transmit_constraint_errors_total counter -infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_transmit_constraint_errors_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_transmit_data_bytes_total Infiniband HCA port PortXmitData # TYPE infiniband_hca_port_transmit_data_bytes_total counter -infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 3.7108676853855e+13 -infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 9.049592493976e+12 +infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4b96",port="1"} 3.7108676853855e+13 +infiniband_hca_port_transmit_data_bytes_total{guid="0x7cfe9003003b4bde",port="1"} 9.049592493976e+12 # HELP infiniband_hca_port_transmit_discards_total Infiniband HCA port PortXmitDiscards # TYPE infiniband_hca_port_transmit_discards_total counter -infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_transmit_discards_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_transmit_packets_total Infiniband HCA port PortXmitPkts # TYPE infiniband_hca_port_transmit_packets_total counter -infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 9.691711732e+10 -infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 2.8825338611e+10 +infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4b96",port="1"} 9.691711732e+10 +infiniband_hca_port_transmit_packets_total{guid="0x7cfe9003003b4bde",port="1"} 2.8825338611e+10 # HELP infiniband_hca_port_transmit_wait_total Infiniband HCA port PortXmitWait # TYPE infiniband_hca_port_transmit_wait_total counter -infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0 +infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_transmit_wait_total{guid="0x7cfe9003003b4bde",port="1"} 0 # HELP infiniband_hca_port_unicast_receive_packets_total Infiniband HCA port PortUnicastRcvPkts # TYPE infiniband_hca_port_unicast_receive_packets_total counter -infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 9.6851346228e+10 -infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 2.9306563974e+10 +infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4b96",port="1"} 9.6851346228e+10 +infiniband_hca_port_unicast_receive_packets_total{guid="0x7cfe9003003b4bde",port="1"} 2.9306563974e+10 # HELP infiniband_hca_port_unicast_transmit_packets_total Infiniband HCA port PortUnicastXmitPkts # TYPE infiniband_hca_port_unicast_transmit_packets_total counter -infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 9.691657263e+10 -infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 2.8824617123e+10 +infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4b96",port="1"} 9.691657263e+10 +infiniband_hca_port_unicast_transmit_packets_total{guid="0x7cfe9003003b4bde",port="1"} 2.8824617123e+10 # HELP infiniband_hca_port_vl15_dropped_total Infiniband HCA port VL15Dropped # TYPE infiniband_hca_port_vl15_dropped_total counter -infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4b96",hca="o0002",port="1"} 0 -infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4bde",hca="o0001",port="1"} 0` +infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4b96",port="1"} 0 +infiniband_hca_port_vl15_dropped_total{guid="0x7cfe9003003b4bde",port="1"} 0 +# HELP infiniband_hca_rate_bytes_per_second Infiniband HCA rate +# TYPE infiniband_hca_rate_bytes_per_second gauge +infiniband_hca_rate_bytes_per_second{guid="0x506b4b0300cc02a6"} 1.25e+10 +infiniband_hca_rate_bytes_per_second{guid="0x7cfe9003003b4b96"} 1.25e+10 +infiniband_hca_rate_bytes_per_second{guid="0x7cfe9003003b4bde"} 1.25e+10 +# HELP infiniband_hca_uplink_info Infiniband HCA uplink information +# TYPE infiniband_hca_uplink_info gauge +infiniband_hca_uplink_info{guid="0x506b4b0300cc02a6",hca="p0001",port="1",uplink="ib-i4l1s01",uplink_guid="0x506b4b03005c2740",uplink_lid="2052",uplink_port="35",uplink_type="SW"} 1 +infiniband_hca_uplink_info{guid="0x7cfe9003003b4b96",hca="o0002",port="1",uplink="ib-i1l1s01",uplink_guid="0x7cfe9003009ce5b0",uplink_lid="1719",uplink_port="11",uplink_type="SW"} 1 +infiniband_hca_uplink_info{guid="0x7cfe9003003b4bde",hca="o0001",port="1",uplink="ib-i1l1s01",uplink_guid="0x7cfe9003009ce5b0",uplink_lid="1719",uplink_port="10",uplink_type="SW"} 1` expectedSwitchNoError = `# HELP infiniband_exporter_collect_errors Number of errors that occurred during collection # TYPE infiniband_exporter_collect_errors gauge infiniband_exporter_collect_errors{collector="ibnetdiscover"} 0