diff --git a/doc/source/guest_integration/kubernetes/index-guest-kub-5c89ec07e141.rst b/doc/source/guest_integration/kubernetes/index-guest-kub-5c89ec07e141.rst index 03ade6c8d..63da288bf 100644 --- a/doc/source/guest_integration/kubernetes/index-guest-kub-5c89ec07e141.rst +++ b/doc/source/guest_integration/kubernetes/index-guest-kub-5c89ec07e141.rst @@ -19,3 +19,11 @@ PTP Notification integrate-application-with-notification-client-sidecar ptp-notification-status-conditions-6d6105fccf10 +------------------------------------------ +Node Interface Metric Exporter Application +------------------------------------------ + +.. toctree:: + :maxdepth: 1 + + node-interface-metrics-exporter-application-d98b2707c7e9 \ No newline at end of file diff --git a/doc/source/guest_integration/kubernetes/node-interface-metrics-exporter-application-d98b2707c7e9.rst b/doc/source/guest_integration/kubernetes/node-interface-metrics-exporter-application-d98b2707c7e9.rst new file mode 100644 index 000000000..315529e00 --- /dev/null +++ b/doc/source/guest_integration/kubernetes/node-interface-metrics-exporter-application-d98b2707c7e9.rst @@ -0,0 +1,711 @@ +.. _node-interface-metrics-exporter-application-d98b2707c7e9: + +=========================================== +Node Interface Metrics Exporter Application +=========================================== + +.. rubric:: |context| + +The Node Interface Metrics Exporter application is designed to fetch and +display node statistics in a Kubernetes environment. It deploys an Interface +Metrics Exporter DaemonSet on all nodes with the +``starlingx.io/interface-metrics=true node`` label. It uses the Netlink library +to gather data directly from the kernel, offering real-time insights into node +performance. + +Node Interface Metrics Exporter provides the following details in the Open +Metrics API format using REST APIs. + +#. Physical Function Interface Device information and Statistics. + + #. Device information contains device name, hardware address, broadcast, + duplex, ifalias, operation state and pci-address. + + #. Statistics contains + + - RX/TX packets, RX/TX bytes, multicast, RX/TX errors, RX/TX dropped, + RX/TX compressed + + - RX detailed errors (length, over, crc, frame, missed, fifo) + + - TX detailed errors (aborted, carrier, heartbeat, window, fifo) + +#. Virtual Function Interface Device information, Statistics and POD + information. + + #. Device information contains device name, Virtual Function id, + pci-adddress, hardware address, vlan, spoofcheck, trust. + + #. Statistics contains RX/TX packets, RX/TX bytes, RX/TX dropped, TX rate, + TX rate max, TX rate min + + #. POD information contains namespace, POD name, container name, resource + name, device name, Virtual Function id, hardware address. + +--------------------------------------------------- +Install Node Interface Metrics Exporter Application +--------------------------------------------------- + +Follow the steps below to install the Node Interface Metrics Exporter +application. + +#. Locate the application tarball in the ``/usr/local/share/applications/helm`` + directory. + + For example: + + .. code-block:: none + + /usr/local/share/applications/helm/node-interface-metrics-exporter-.tgz + +#. Upload the application using the following command, replacing ```` + with the latest version number. + + .. code-block:: none + + ~(keystone_admin)]$ system application-upload /usr/local/share/applications/helm node-interface-metrics-exporter-.tgz + +#. Verify that the application has been uploaded successfully. + + .. code-block:: none + + ~(keystone_admin)]$ system application-list + +#. Apply the application using the following command. + + .. code-block:: none + + ~(keystone_admin)]$ system application-apply node-interface-metrics-exporter + + Application should be in applied state. + +#. Monitor the status of the application using one of the following commands. + + .. code-block:: none + + ~(keystone_admin)]$ watch -n 5 system application-list + + OR + + .. code-block:: none + + ~(keystone_admin)]$ watch kubectl get pods -n node-interface-metrics-exporter + + +----------------------------------------------------- +Uninstall Node Interface Metrics Exporter Application +----------------------------------------------------- + +Follow the steps below to uninstall the Node Interface Metrics Exporter +application. + +#. Remove the application using the following command: + + .. code-block:: none + + ~(keystone_admin)]$ system application-remove node-interface-metrics-exporter + +#. Delete application using the following command: + + .. code-block:: none + + ~(keystone_admin)]$ system application-delete node-interface-metrics-exporter + +Once uninstallation is complete, all related resources and configurations will +be removed from the system. + +----------------------------------- +Node Interface Metrics Exporter API +----------------------------------- + +.. note:: + + Following APIs are expected to be accessed only from applications running + internal to the cluster and should not exported. + +The Application Pod retrieves node interface information and statistics by +making a call to the following REST APIs. The server address is the node's host +name or IP address, and it uses port 9110. The output is presented in the Open +Metrics format, providing information and statistics for devices that are in +the ``UP`` state. + +Details of the APIs are as follows: + +#. ``/metrics`` [GET API] + + Get statistics of all devices in the node. + + - It provides the information and statistics of all Physical Function + devices. + + - It provides the information and statistics of Virtual Functions devices + belonging to Physical Function devices. + + - It provides the POD information as well if Virtual Function device is + used by any POD (matched by PciAddr of Virtual Function device). + + Normal response codes + 200 + + Error response codes + computeFault (400, 500, …), serviceUnavailable (503), badRequest (400), + badMethod (405), itemNotFound (404) + + Request parameters + None + + Response parameters + Node statistics in Open Metrics format. + + .. code-block:: none + + # TYPE network_interface_device info + # HELP network_interface_device network_interface_device + network_interface_device_info{device="enp138s0f1",address="b4:96:91:e6:c8:89",broadcast="[]",duplex="full",ifalias=" ",operstate="up",pciaddr="0000:8a:00.1"} 1 + # TYPE network_interface_rx_packets counter + # HELP network_interface_rx_packets network_interface_rx_packets + network_interface_rx_packets_total{device="enp138s0f1"} 46173 + network_interface_rx_packets_created{device="enp138s0f1"} 1706083770.764208 + # TYPE network_interface_tx_packets counter + # HELP network_interface_tx_packets network_interface_tx_packets + network_interface_tx_packets_total{device="enp138s0f1"} 1.4478309e+07 + network_interface_tx_packets_created{device="enp138s0f1"} 1706083770.764211 + # TYPE network_interface_rx_bytes counter + # HELP network_interface_rx_bytes network_interface_rx_bytes + network_interface_rx_bytes_total{device="enp138s0f1"} 2.1096743e+07 + network_interface_rx_bytes_created{device="enp138s0f1"} 1706083770.764213 + # TYPE network_interface_tx_bytes counter + # HELP network_interface_tx_bytes network_interface_tx_bytes + network_interface_tx_bytes_total{device="enp138s0f1"} 1.640187532e+09 + network_interface_tx_bytes_created{device="enp138s0f1"} 1706083770.764214 + # TYPE network_interface_rx_errors counter + # HELP network_interface_rx_errors network_interface_rx_errors + network_interface_rx_errors_total{device="enp138s0f1"} 0 + network_interface_rx_errors_created{device="enp138s0f1"} 1706083770.764215 + # TYPE network_interface_tx_errors counter + # HELP network_interface_tx_errors network_interface_tx_errors + network_interface_tx_errors_total{device="enp138s0f1"} 0 + network_interface_tx_errors_created{device="enp138s0f1"} 1706083770.764216 + # TYPE network_interface_rx_dropped counter + # HELP network_interface_rx_dropped network_interface_rx_dropped + network_interface_rx_dropped_total{device="enp138s0f1"} 0 + network_interface_rx_dropped_created{device="enp138s0f1"} 1706083770.764218 + # TYPE network_interface_tx_dropped counter + # HELP network_interface_tx_dropped network_interface_tx_dropped + network_interface_tx_dropped_total{device="enp138s0f1"} 0 + network_interface_tx_dropped_created{device="enp138s0f1"} 1706083770.764219 + # TYPE network_interface_multicast counter + # HELP network_interface_multicast network_interface_multicast + network_interface_multicast_total{device="enp138s0f1"} 46173 + network_interface_multicast_created{device="enp138s0f1"} 1706083770.764221 + # TYPE network_interface_collisions counter + # HELP network_interface_collisions network_interface_collisions + network_interface_collisions_total{device="enp138s0f1"} 0 + network_interface_collisions_created{device="enp138s0f1"} 1706083770.764222 + # TYPE network_interface_rx_length_errors counter + # HELP network_interface_rx_length_errors network_interface_rx_length_errors + network_interface_rx_length_errors_total{device="enp138s0f1"} 0 + network_interface_rx_length_errors_created{device="enp138s0f1"} 1706083770.764224 + # TYPE network_interface_rx_over_errors counter + # HELP network_interface_rx_over_errors network_interface_rx_over_errors + network_interface_rx_over_errors_total{device="enp138s0f1"} 0 + network_interface_rx_over_errors_created{device="enp138s0f1"} 1706083770.764226 + # TYPE network_interface_rx_crc_errors counter + # HELP network_interface_rx_crc_errors network_interface_rx_crc_errors + network_interface_rx_crc_errors_total{device="enp138s0f1"} 0 + network_interface_rx_crc_errors_created{device="enp138s0f1"} 1706083770.764228 + # TYPE network_interface_rx_frame_errors counter + # HELP network_interface_rx_frame_errors network_interface_rx_frame_errors + network_interface_rx_frame_errors_total{device="enp138s0f1"} 0 + network_interface_rx_frame_errors_created{device="enp138s0f1"} 1706083770.764229 + # TYPE network_interface_rx_fifo_errors counter + # HELP network_interface_rx_fifo_errors network_interface_rx_fifo_errors + network_interface_rx_fifo_errors_total{device="enp138s0f1"} 0 + network_interface_rx_fifo_errors_created{device="enp138s0f1"} 1706083770.764230 + # TYPE network_interface_rx_missed_errors counter + # HELP network_interface_rx_missed_errors network_interface_rx_missed_errors + network_interface_rx_missed_errors_total{device="enp138s0f1"} 0 + network_interface_rx_missed_errors_created{device="enp138s0f1"} 1706083770.764232 + # TYPE network_interface_tx_aborted_errors counter + # HELP network_interface_tx_aborted_errors network_interface_tx_aborted_errors + network_interface_tx_aborted_errors_total{device="enp138s0f1"} 0 + network_interface_tx_aborted_errors_created{device="enp138s0f1"} 1706083770.764234 + # TYPE network_interface_tx_carrier_errors counter + # HELP network_interface_tx_carrier_errors network_interface_tx_carrier_errors + network_interface_tx_carrier_errors_total{device="enp138s0f1"} 0 + network_interface_tx_carrier_errors_created{device="enp138s0f1"} 1706083770.764235 + # TYPE network_interface_tx_fifo_errors counter + # HELP network_interface_tx_fifo_errors network_interface_tx_fifo_errors + network_interface_tx_fifo_errors_total{device="enp138s0f1"} 0 + network_interface_tx_fifo_errors_created{device="enp138s0f1"} 1706083770.764237 + # TYPE network_interface_tx_heartbeat_errors counter + # HELP network_interface_tx_heartbeat_errors network_interface_tx_heartbeat_errors + network_interface_tx_heartbeat_errors_total{device="enp138s0f1"} 0 + network_interface_tx_heartbeat_errors_created{device="enp138s0f1"} 1706083770.764239 + # TYPE network_interface_tx_window_errors counter + # HELP network_interface_tx_window_errors network_interface_tx_window_errors + network_interface_tx_window_errors_total{device="enp138s0f1"} 0 + network_interface_tx_window_errors_created{device="enp138s0f1"} 1706083770.764241 + # TYPE network_interface_rx_compressed counter + # HELP network_interface_rx_compressed network_interface_rx_compressed + network_interface_rx_compressed_total{device="enp138s0f1"} 0 + network_interface_rx_compressed_created{device="enp138s0f1"} 1706083770.764242 + # TYPE network_interface_tx_compressed counter + # HELP network_interface_tx_compressed network_interface_tx_compressed + network_interface_tx_compressed_total{device="enp138s0f1"} 0 + network_interface_tx_compressed_created{device="enp138s0f1"} 1706083770.764244 + # EOF + # TYPE network_interface_vf_device info + # HELP network_interface_vf_device network_interface_vf_device + network_interface_vf_device_info{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0",address="ae:f7:4c:38:0f:5d",vlan="0",spoofcheck="on",trust="off"} 1 + # EOF + # TYPE network_interface_vf_tx_rate counter + # HELP network_interface_vf_tx_rate network_interface_vf_tx_rate + network_interface_vf_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764292 + # TYPE network_interface_vf_max_tx_rate counter + # HELP network_interface_vf_max_tx_rate network_interface_vf_max_tx_rate + network_interface_vf_max_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_max_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764294 + # TYPE network_interface_vf_min_tx_rate counter + # HELP network_interface_vf_min_tx_rate network_interface_vf_min_tx_rate + network_interface_vf_min_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_min_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764296 + # TYPE network_interface_vf_rx_packets counter + # HELP network_interface_vf_rx_packets network_interface_vf_rx_packets + network_interface_vf_rx_packets_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1.076376e+06 + network_interface_vf_rx_packets_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764298 + # TYPE network_interface_vf_tx_packets counter + # HELP network_interface_vf_tx_packets network_interface_vf_tx_packets + network_interface_vf_tx_packets_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 362 + network_interface_vf_tx_packets_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764301 + # TYPE network_interface_vf_rx_bytes counter + # HELP network_interface_vf_rx_bytes network_interface_vf_rx_bytes + network_interface_vf_rx_bytes_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 4.5207836e+07 + network_interface_vf_rx_bytes_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764303 + # TYPE network_interface_vf_tx_bytes counter + # HELP network_interface_vf_tx_bytes network_interface_vf_tx_bytes + network_interface_vf_tx_bytes_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 25452 + network_interface_vf_tx_bytes_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764305 + # TYPE network_interface_vf_rx_dropped counter + # HELP network_interface_vf_rx_dropped network_interface_vf_rx_dropped + network_interface_vf_rx_dropped_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_rx_dropped_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764306 + # TYPE network_interface_vf_tx_dropped counter + # HELP network_interface_vf_tx_dropped network_interface_vf_tx_dropped + network_interface_vf_tx_dropped_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_tx_dropped_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764309 + # EOF + # TYPE network_interface_vf_kube_pod info + # HELP network_interface_vf_kube_pod network_interface_vf_kube_pod + network_interface_vf_kube_pod_info{namespace="default",pod="sriov-pod-demo1",container="test-sriovdp-netdev-single-pod-0",resource="intel.com/pci_sriov_net_group0_data1",device="net1",vf="1", pciaddr="0000:8a:0a.0",address="ae:f7:4c:38:0f:5d"} 1 + # EOF + + This operation does not accept a request body. + +#. ``/metrics/device/{device_name}`` [GET API] + + Get the information and statistics of the particular device in the node + identified by ``{device_name}``. + + - If the input device name is Physical Function, it provides its device + information and statistics. Also, it provides device information and + statistics of all the Virtual Functions as well belonging to input + device. It provides the POD information as well if Virtual Function + device is used by any POD (matched by ``pci-address`` of Virtual + Function device). + + - Input Virtual Function device name is not supported as multiple Virtual + Functions have same device name in different pods. + + Normal response codes + 200 + + Error response codes + computeFault (400, 500, …), serviceUnavailable (503), badRequest (400), badMethod (405), itemNotFound (404) + + Request parameters + +------------+-------+--------+---------------------------------------------+ + | Parameter | Style | Type | Description | + +============+=======+========+=============================================+ + |device_name | URI | string | The unique name of Physical Function device | + +------------+-------+--------+---------------------------------------------+ + + Response parameters + Device statistics in Open Metrics format. + + .. code-block:: none + + # TYPE network_interface_device info + # HELP network_interface_device network_interface_device + network_interface_device_info{device="enp138s0f1",address="b4:96:91:e6:c8:89",broadcast="[]",duplex="full",ifalias=" ",operstate="up",pciaddr="0000:8a:00.1"} 1 + # TYPE network_interface_rx_packets counter + # HELP network_interface_rx_packets network_interface_rx_packets + network_interface_rx_packets_total{device="enp138s0f1"} 46173 + network_interface_rx_packets_created{device="enp138s0f1"} 1706083770.764208 + # TYPE network_interface_tx_packets counter + # HELP network_interface_tx_packets network_interface_tx_packets + network_interface_tx_packets_total{device="enp138s0f1"} 1.4478309e+07 + network_interface_tx_packets_created{device="enp138s0f1"} 1706083770.764211 + # TYPE network_interface_rx_bytes counter + # HELP network_interface_rx_bytes network_interface_rx_bytes + network_interface_rx_bytes_total{device="enp138s0f1"} 2.1096743e+07 + network_interface_rx_bytes_created{device="enp138s0f1"} 1706083770.764213 + # TYPE network_interface_tx_bytes counter + # HELP network_interface_tx_bytes network_interface_tx_bytes + network_interface_tx_bytes_total{device="enp138s0f1"} 1.640187532e+09 + network_interface_tx_bytes_created{device="enp138s0f1"} 1706083770.764214 + # TYPE network_interface_rx_errors counter + # HELP network_interface_rx_errors network_interface_rx_errors + network_interface_rx_errors_total{device="enp138s0f1"} 0 + network_interface_rx_errors_created{device="enp138s0f1"} 1706083770.764215 + # TYPE network_interface_tx_errors counter + # HELP network_interface_tx_errors network_interface_tx_errors + network_interface_tx_errors_total{device="enp138s0f1"} 0 + network_interface_tx_errors_created{device="enp138s0f1"} 1706083770.764216 + # TYPE network_interface_rx_dropped counter + # HELP network_interface_rx_dropped network_interface_rx_dropped + network_interface_rx_dropped_total{device="enp138s0f1"} 0 + network_interface_rx_dropped_created{device="enp138s0f1"} 1706083770.764218 + # TYPE network_interface_tx_dropped counter + # HELP network_interface_tx_dropped network_interface_tx_dropped + network_interface_tx_dropped_total{device="enp138s0f1"} 0 + network_interface_tx_dropped_created{device="enp138s0f1"} 1706083770.764219 + # TYPE network_interface_multicast counter + # HELP network_interface_multicast network_interface_multicast + network_interface_multicast_total{device="enp138s0f1"} 46173 + network_interface_multicast_created{device="enp138s0f1"} 1706083770.764221 + # TYPE network_interface_collisions counter + # HELP network_interface_collisions network_interface_collisions + network_interface_collisions_total{device="enp138s0f1"} 0 + network_interface_collisions_created{device="enp138s0f1"} 1706083770.764222 + # TYPE network_interface_rx_length_errors counter + # HELP network_interface_rx_length_errors network_interface_rx_length_errors + network_interface_rx_length_errors_total{device="enp138s0f1"} 0 + network_interface_rx_length_errors_created{device="enp138s0f1"} 1706083770.764224 + # TYPE network_interface_rx_over_errors counter + # HELP network_interface_rx_over_errors network_interface_rx_over_errors + network_interface_rx_over_errors_total{device="enp138s0f1"} 0 + network_interface_rx_over_errors_created{device="enp138s0f1"} 1706083770.764226 + # TYPE network_interface_rx_crc_errors counter + # HELP network_interface_rx_crc_errors network_interface_rx_crc_errors + network_interface_rx_crc_errors_total{device="enp138s0f1"} 0 + network_interface_rx_crc_errors_created{device="enp138s0f1"} 1706083770.764228 + # TYPE network_interface_rx_frame_errors counter + # HELP network_interface_rx_frame_errors network_interface_rx_frame_errors + network_interface_rx_frame_errors_total{device="enp138s0f1"} 0 + network_interface_rx_frame_errors_created{device="enp138s0f1"} 1706083770.764229 + # TYPE network_interface_rx_fifo_errors counter + # HELP network_interface_rx_fifo_errors network_interface_rx_fifo_errors + network_interface_rx_fifo_errors_total{device="enp138s0f1"} 0 + network_interface_rx_fifo_errors_created{device="enp138s0f1"} 1706083770.764230 + # TYPE network_interface_rx_missed_errors counter + # HELP network_interface_rx_missed_errors network_interface_rx_missed_errors + network_interface_rx_missed_errors_total{device="enp138s0f1"} 0 + network_interface_rx_missed_errors_created{device="enp138s0f1"} 1706083770.764232 + # TYPE network_interface_tx_aborted_errors counter + # HELP network_interface_tx_aborted_errors network_interface_tx_aborted_errors + network_interface_tx_aborted_errors_total{device="enp138s0f1"} 0 + network_interface_tx_aborted_errors_created{device="enp138s0f1"} 1706083770.764234 + # TYPE network_interface_tx_carrier_errors counter + # HELP network_interface_tx_carrier_errors network_interface_tx_carrier_errors + network_interface_tx_carrier_errors_total{device="enp138s0f1"} 0 + network_interface_tx_carrier_errors_created{device="enp138s0f1"} 1706083770.764235 + # TYPE network_interface_tx_fifo_errors counter + # HELP network_interface_tx_fifo_errors network_interface_tx_fifo_errors + network_interface_tx_fifo_errors_total{device="enp138s0f1"} 0 + network_interface_tx_fifo_errors_created{device="enp138s0f1"} 1706083770.764237 + # TYPE network_interface_tx_heartbeat_errors counter + # HELP network_interface_tx_heartbeat_errors network_interface_tx_heartbeat_errors + network_interface_tx_heartbeat_errors_total{device="enp138s0f1"} 0 + network_interface_tx_heartbeat_errors_created{device="enp138s0f1"} 1706083770.764239 + # TYPE network_interface_tx_window_errors counter + # HELP network_interface_tx_window_errors network_interface_tx_window_errors + network_interface_tx_window_errors_total{device="enp138s0f1"} 0 + network_interface_tx_window_errors_created{device="enp138s0f1"} 1706083770.764241 + # TYPE network_interface_rx_compressed counter + # HELP network_interface_rx_compressed network_interface_rx_compressed + network_interface_rx_compressed_total{device="enp138s0f1"} 0 + network_interface_rx_compressed_created{device="enp138s0f1"} 1706083770.764242 + # TYPE network_interface_tx_compressed counter + # HELP network_interface_tx_compressed network_interface_tx_compressed + network_interface_tx_compressed_total{device="enp138s0f1"} 0 + network_interface_tx_compressed_created{device="enp138s0f1"} 1706083770.764244 + # EOF + # TYPE network_interface_vf_device info + # HELP network_interface_vf_device network_interface_vf_device + network_interface_vf_device_info{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0",address="ae:f7:4c:38:0f:5d",vlan="0",spoofcheck="on",trust="off"} 1 + # EOF + # TYPE network_interface_vf_tx_rate counter + # HELP network_interface_vf_tx_rate network_interface_vf_tx_rate + network_interface_vf_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764292 + # TYPE network_interface_vf_max_tx_rate counter + # HELP network_interface_vf_max_tx_rate network_interface_vf_max_tx_rate + network_interface_vf_max_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_max_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764294 + # TYPE network_interface_vf_min_tx_rate counter + # HELP network_interface_vf_min_tx_rate network_interface_vf_min_tx_rate + network_interface_vf_min_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_min_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764296 + # TYPE network_interface_vf_rx_packets counter + # HELP network_interface_vf_rx_packets network_interface_vf_rx_packets + network_interface_vf_rx_packets_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1.076376e+06 + network_interface_vf_rx_packets_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764298 + # TYPE network_interface_vf_tx_packets counter + # HELP network_interface_vf_tx_packets network_interface_vf_tx_packets + network_interface_vf_tx_packets_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 362 + network_interface_vf_tx_packets_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764301 + # TYPE network_interface_vf_rx_bytes counter + # HELP network_interface_vf_rx_bytes network_interface_vf_rx_bytes + network_interface_vf_rx_bytes_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 4.5207836e+07 + network_interface_vf_rx_bytes_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764303 + # TYPE network_interface_vf_tx_bytes counter + # HELP network_interface_vf_tx_bytes network_interface_vf_tx_bytes + network_interface_vf_tx_bytes_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 25452 + network_interface_vf_tx_bytes_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764305 + # TYPE network_interface_vf_rx_dropped counter + # HELP network_interface_vf_rx_dropped network_interface_vf_rx_dropped + network_interface_vf_rx_dropped_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_rx_dropped_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764306 + # TYPE network_interface_vf_tx_dropped counter + # HELP network_interface_vf_tx_dropped network_interface_vf_tx_dropped + network_interface_vf_tx_dropped_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_tx_dropped_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764309 + # EOF + # TYPE network_interface_vf_kube_pod info + # HELP network_interface_vf_kube_pod network_interface_vf_kube_pod + network_interface_vf_kube_pod_info{namespace="default",pod="sriov-pod-demo1",container="test-sriovdp-netdev-single-pod-0",resource="intel.com/pci_sriov_net_group0_data1",device="net1",vf="1", pciaddr="0000:8a:0a.0",address="ae:f7:4c:38:0f:5d"} 1 + # EOF + + This operation does not accept a request body. + +#. ``/metrics/pci-addr/{pci_address}`` + + Get statistics of the particular device in the node identified by + ``{pci_address}``. + + - If the input ``pci-address`` belongs to Physical Function device, it + provides its device information and statistics. Also, it provides + statistics of all the Virtual Functions as well belonging to the + Physical Function device. + + - If the input ``pci-address`` belongs to Virtual Function device, it + provides its device information and statistics. It provides the POD + information as well if Virtual Function device is used by any POD + (matched by ``pci-address`` of Virtual Function device). + + Normal response codes + 200 + + Error response codes + computeFault (400, 500, …), serviceUnavailable (503), badRequest (400), badMethod (405), itemNotFound (404) + + Request parameters + +------------+-------+-------------+----------------------------------------------------------------------------------------+ + | Parameter | Style | Type | Description | + +============+=======+=============+========================================================================================+ + |pci_address | URI | csapi:UUID | The unique identifier of pci address of Physical Function or Virtual Function devices | + +------------+-------+-------------+----------------------------------------------------------------------------------------+ + + Response parameters + Device statistics in Open Metrics format. + + When input is ``pci-address`` of Physical Function device: + + .. code-block:: none + + # TYPE network_interface_device info + # HELP network_interface_device network_interface_device + network_interface_device_info{device="enp138s0f1",address="b4:96:91:e6:c8:89",broadcast="[]",duplex="full",ifalias=" ",operstate="up",pciaddr="0000:8a:00.1"} 1 + # TYPE network_interface_rx_packets counter + # HELP network_interface_rx_packets network_interface_rx_packets + network_interface_rx_packets_total{device="enp138s0f1"} 46173 + network_interface_rx_packets_created{device="enp138s0f1"} 1706083770.764208 + # TYPE network_interface_tx_packets counter + # HELP network_interface_tx_packets network_interface_tx_packets + network_interface_tx_packets_total{device="enp138s0f1"} 1.4478309e+07 + network_interface_tx_packets_created{device="enp138s0f1"} 1706083770.764211 + # TYPE network_interface_rx_bytes counter + # HELP network_interface_rx_bytes network_interface_rx_bytes + network_interface_rx_bytes_total{device="enp138s0f1"} 2.1096743e+07 + network_interface_rx_bytes_created{device="enp138s0f1"} 1706083770.764213 + # TYPE network_interface_tx_bytes counter + # HELP network_interface_tx_bytes network_interface_tx_bytes + network_interface_tx_bytes_total{device="enp138s0f1"} 1.640187532e+09 + network_interface_tx_bytes_created{device="enp138s0f1"} 1706083770.764214 + # TYPE network_interface_rx_errors counter + # HELP network_interface_rx_errors network_interface_rx_errors + network_interface_rx_errors_total{device="enp138s0f1"} 0 + network_interface_rx_errors_created{device="enp138s0f1"} 1706083770.764215 + # TYPE network_interface_tx_errors counter + # HELP network_interface_tx_errors network_interface_tx_errors + network_interface_tx_errors_total{device="enp138s0f1"} 0 + network_interface_tx_errors_created{device="enp138s0f1"} 1706083770.764216 + # TYPE network_interface_rx_dropped counter + # HELP network_interface_rx_dropped network_interface_rx_dropped + network_interface_rx_dropped_total{device="enp138s0f1"} 0 + network_interface_rx_dropped_created{device="enp138s0f1"} 1706083770.764218 + # TYPE network_interface_tx_dropped counter + # HELP network_interface_tx_dropped network_interface_tx_dropped + network_interface_tx_dropped_total{device="enp138s0f1"} 0 + network_interface_tx_dropped_created{device="enp138s0f1"} 1706083770.764219 + # TYPE network_interface_multicast counter + # HELP network_interface_multicast network_interface_multicast + network_interface_multicast_total{device="enp138s0f1"} 46173 + network_interface_multicast_created{device="enp138s0f1"} 1706083770.764221 + # TYPE network_interface_collisions counter + # HELP network_interface_collisions network_interface_collisions + network_interface_collisions_total{device="enp138s0f1"} 0 + network_interface_collisions_created{device="enp138s0f1"} 1706083770.764222 + # TYPE network_interface_rx_length_errors counter + # HELP network_interface_rx_length_errors network_interface_rx_length_errors + network_interface_rx_length_errors_total{device="enp138s0f1"} 0 + network_interface_rx_length_errors_created{device="enp138s0f1"} 1706083770.764224 + # TYPE network_interface_rx_over_errors counter + # HELP network_interface_rx_over_errors network_interface_rx_over_errors + network_interface_rx_over_errors_total{device="enp138s0f1"} 0 + network_interface_rx_over_errors_created{device="enp138s0f1"} 1706083770.764226 + # TYPE network_interface_rx_crc_errors counter + # HELP network_interface_rx_crc_errors network_interface_rx_crc_errors + network_interface_rx_crc_errors_total{device="enp138s0f1"} 0 + network_interface_rx_crc_errors_created{device="enp138s0f1"} 1706083770.764228 + # TYPE network_interface_rx_frame_errors counter + # HELP network_interface_rx_frame_errors network_interface_rx_frame_errors + network_interface_rx_frame_errors_total{device="enp138s0f1"} 0 + network_interface_rx_frame_errors_created{device="enp138s0f1"} 1706083770.764229 + # TYPE network_interface_rx_fifo_errors counter + # HELP network_interface_rx_fifo_errors network_interface_rx_fifo_errors + network_interface_rx_fifo_errors_total{device="enp138s0f1"} 0 + network_interface_rx_fifo_errors_created{device="enp138s0f1"} 1706083770.764230 + # TYPE network_interface_rx_missed_errors counter + # HELP network_interface_rx_missed_errors network_interface_rx_missed_errors + network_interface_rx_missed_errors_total{device="enp138s0f1"} 0 + network_interface_rx_missed_errors_created{device="enp138s0f1"} 1706083770.764232 + # TYPE network_interface_tx_aborted_errors counter + # HELP network_interface_tx_aborted_errors network_interface_tx_aborted_errors + network_interface_tx_aborted_errors_total{device="enp138s0f1"} 0 + network_interface_tx_aborted_errors_created{device="enp138s0f1"} 1706083770.764234 + # TYPE network_interface_tx_carrier_errors counter + # HELP network_interface_tx_carrier_errors network_interface_tx_carrier_errors + network_interface_tx_carrier_errors_total{device="enp138s0f1"} 0 + network_interface_tx_carrier_errors_created{device="enp138s0f1"} 1706083770.764235 + # TYPE network_interface_tx_fifo_errors counter + # HELP network_interface_tx_fifo_errors network_interface_tx_fifo_errors + network_interface_tx_fifo_errors_total{device="enp138s0f1"} 0 + network_interface_tx_fifo_errors_created{device="enp138s0f1"} 1706083770.764237 + # TYPE network_interface_tx_heartbeat_errors counter + # HELP network_interface_tx_heartbeat_errors network_interface_tx_heartbeat_errors + network_interface_tx_heartbeat_errors_total{device="enp138s0f1"} 0 + network_interface_tx_heartbeat_errors_created{device="enp138s0f1"} 1706083770.764239 + # TYPE network_interface_tx_window_errors counter + # HELP network_interface_tx_window_errors network_interface_tx_window_errors + network_interface_tx_window_errors_total{device="enp138s0f1"} 0 + network_interface_tx_window_errors_created{device="enp138s0f1"} 1706083770.764241 + # TYPE network_interface_rx_compressed counter + # HELP network_interface_rx_compressed network_interface_rx_compressed + network_interface_rx_compressed_total{device="enp138s0f1"} 0 + network_interface_rx_compressed_created{device="enp138s0f1"} 1706083770.764242 + # TYPE network_interface_tx_compressed counter + # HELP network_interface_tx_compressed network_interface_tx_compressed + network_interface_tx_compressed_total{device="enp138s0f1"} 0 + network_interface_tx_compressed_created{device="enp138s0f1"} 1706083770.764244 + # EOF + # TYPE network_interface_vf_device info + # HELP network_interface_vf_device network_interface_vf_device + network_interface_vf_device_info{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0",address="ae:f7:4c:38:0f:5d",vlan="0",spoofcheck="on",trust="off"} 1 + # EOF + # TYPE network_interface_vf_tx_rate counter + # HELP network_interface_vf_tx_rate network_interface_vf_tx_rate + network_interface_vf_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764292 + # TYPE network_interface_vf_max_tx_rate counter + # HELP network_interface_vf_max_tx_rate network_interface_vf_max_tx_rate + network_interface_vf_max_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_max_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764294 + # TYPE network_interface_vf_min_tx_rate counter + # HELP network_interface_vf_min_tx_rate network_interface_vf_min_tx_rate + network_interface_vf_min_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_min_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764296 + # TYPE network_interface_vf_rx_packets counter + # HELP network_interface_vf_rx_packets network_interface_vf_rx_packets + network_interface_vf_rx_packets_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1.076376e+06 + network_interface_vf_rx_packets_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764298 + # TYPE network_interface_vf_tx_packets counter + # HELP network_interface_vf_tx_packets network_interface_vf_tx_packets + network_interface_vf_tx_packets_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 362 + network_interface_vf_tx_packets_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764301 + # TYPE network_interface_vf_rx_bytes counter + # HELP network_interface_vf_rx_bytes network_interface_vf_rx_bytes + network_interface_vf_rx_bytes_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 4.5207836e+07 + + network_interface_vf_rx_bytes_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764303 + # TYPE network_interface_vf_tx_bytes counter + # HELP network_interface_vf_tx_bytes network_interface_vf_tx_bytes + network_interface_vf_tx_bytes_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 25452 + network_interface_vf_tx_bytes_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764305 + # TYPE network_interface_vf_rx_dropped counter + # HELP network_interface_vf_rx_dropped network_interface_vf_rx_dropped + network_interface_vf_rx_dropped_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_rx_dropped_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764306 + # TYPE network_interface_vf_tx_dropped counter + # HELP network_interface_vf_tx_dropped network_interface_vf_tx_dropped + network_interface_vf_tx_dropped_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_tx_dropped_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764309 + # EOF + # TYPE network_interface_vf_kube_pod info + # HELP network_interface_vf_kube_pod network_interface_vf_kube_pod + network_interface_vf_kube_pod_info{namespace="default",pod="sriov-pod-demo1",container="test-sriovdp-netdev-single-pod-0",resource="intel.com/pci_sriov_net_group0_data1",device="net1",vf="1", pciaddr="0000:8a:0a.0",address="ae:f7:4c:38:0f:5d"} 1 + # EOF + + When input is ``pci-address`` of Virtual Function device: + + .. code-block:: none + + # TYPE network_interface_vf_device info + # HELP network_interface_vf_device network_interface_vf_device + network_interface_vf_device_info{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0",address="ae:f7:4c:38:0f:5d",vlan="0",spoofcheck="on",trust="off"} 1 + # EOF + # TYPE network_interface_vf_tx_rate counter + # HELP network_interface_vf_tx_rate network_interface_vf_tx_rate + network_interface_vf_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764292 + # TYPE network_interface_vf_max_tx_rate counter + # HELP network_interface_vf_max_tx_rate network_interface_vf_max_tx_rate + network_interface_vf_max_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_max_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764294 + # TYPE network_interface_vf_min_tx_rate counter + # HELP network_interface_vf_min_tx_rate network_interface_vf_min_tx_rate + network_interface_vf_min_tx_rate_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_min_tx_rate_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764296 + # TYPE network_interface_vf_rx_packets counter + # HELP network_interface_vf_rx_packets network_interface_vf_rx_packets + network_interface_vf_rx_packets_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1.076376e+06 + network_interface_vf_rx_packets_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764298 + # TYPE network_interface_vf_tx_packets counter + # HELP network_interface_vf_tx_packets network_interface_vf_tx_packets + network_interface_vf_tx_packets_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 362 + network_interface_vf_tx_packets_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764301 + # TYPE network_interface_vf_rx_bytes counter + # HELP network_interface_vf_rx_bytes network_interface_vf_rx_bytes + network_interface_vf_rx_bytes_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 4.5207836e+07 + network_interface_vf_rx_bytes_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764303 + # TYPE network_interface_vf_tx_bytes counter + # HELP network_interface_vf_tx_bytes network_interface_vf_tx_bytes + network_interface_vf_tx_bytes_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 25452 + network_interface_vf_tx_bytes_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764305 + # TYPE network_interface_vf_rx_dropped counter + # HELP network_interface_vf_rx_dropped network_interface_vf_rx_dropped + network_interface_vf_rx_dropped_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_rx_dropped_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764306 + # TYPE network_interface_vf_tx_dropped counter + # HELP network_interface_vf_tx_dropped network_interface_vf_tx_dropped + network_interface_vf_tx_dropped_total{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 0 + network_interface_vf_tx_dropped_created{device="enp138s0f1",vf="0",pciaddr="0000:8a:0a.0"} 1706083770.764309 + # EOF + # TYPE network_interface_vf_kube_pod info + # HELP network_interface_vf_kube_pod network_interface_vf_kube_pod + network_interface_vf_kube_pod_info{namespace="default",pod="sriov-pod-demo1",container="test-sriovdp-netdev-single-pod-0",resource="intel.com/pci_sriov_net_group0_data1",device="net1",vf="1", pciaddr="0000:8a:0a.0",address="ae:f7:4c:38:0f:5d"} 1 + # EOF + + This operation does not accept a request body. \ No newline at end of file