DOCA 遥测服务指南
本指南提供有关如何在主机或 NVIDIA® BlueField® DPU 之上使用 DOCA 遥测服务 (DTS) 容器的说明。
DOCA 遥测服务 (DTS) 从内置提供程序和外部遥测应用程序收集数据。
DTS 支持以下提供程序
数据提供程序
Sysfs
Ethtool
高级监控和启动错误 (amber)
端口可编程拥塞控制 (ppcc_eth)
诊断数据
Ifconfig
RDMA 通知
数据中心 GPU 管理器 (DCGM)
NVIDIA 系统管理界面 (nvidia-smi)
BlueField 性能 (bfperf)
TC(流量控制)
聚合提供程序
Fluent 聚合器
Prometheus 聚合器
Sysfs 提供程序在 BlueField 上默认启用。
数据存储
DTS 将收集的数据存储在位于 /opt/mellanox/doca/services/telemetry/data
目录中的二进制文件中。默认情况下,由于存储限制,数据写入在 BlueField 上处于禁用状态。
数据导出选项
DTS 支持以下导出机制
Prometheus 端点(拉取)
Fluent Bit(推送)
OpenTelemetry(推送)
Prometheus Remote Write(推送)
NetFlow 数据包导出
当使用 DOCA 遥测导出器 NetFlow API 客户端应用程序收集数据时,DTS 可以导出 NetFlow 数据包。
要启用 NetFlow 导出器,请使用 NetFlow 收集器 IP/地址和端口配置 dts_config.ini
文件。
可用镜像
内置 DOCA 服务镜像
DOCA 遥测服务在 DPU 上默认启用,并作为 BlueField 镜像的一部分交付。也就是说,每个 BlueField 镜像都包含一个固定的服务版本,以便为基于 2024-10-09_07-10-18_DOCA Telemetry 库的程序提供开箱即用的支持。

NGC 上的 DOCA 服务
除了 BlueField 启动镜像附带的内置镜像外,DTS 也可在 NVIDIA 的容器目录 NGC 上获得。如果服务的新版本已发布,并且用户想要从内置镜像升级,这将非常有用。有关特定于服务的配置步骤和部署说明,请参阅服务的 容器页面 。
有关在 BlueField DPU 之上部署 DOCA 容器的更多信息,请参阅 NVIDIA DOCA 容器部署指南。
DPU 部署
如上所述,DTS 在 BlueField 启动时自动启动。这是根据位于 /etc/kubelet.d/doca_telemetry_standalone.yaml
的 .yaml
文件完成的。从此路径中删除 .yaml
文件将停止 DTS 自动启动。
DTS 文件可以在目录 /opt/mellanox/doca/services/telemetry/
下找到。
容器文件夹挂载
config
data
ipc_sockets
备份文件
doca_telemetry_service_${version}_arm64.tar.gz
– DTS 镜像doca_telemetry_standalone.yaml
– 默认启动.yaml
文件的副本
主机部署
DTS 支持 x86_64 主机。提供程序和导出器都从单个 docker 容器运行。
使用所需的 DTS 版本初始化和配置主机 DTS
export DTS_IMAGE=nvcr.io/nvidia/doca/doca_telemetry:<desired-DTS-version> docker run -v "/opt/mellanox/doca/services/telemetry/config:/config" --rm --name doca-telemetry-init -it $DTS_IMAGE /bin/bash -c "DTS_CONFIG_DIR=host /usr/bin/telemetry-init.sh"
注意根据 NGC 策略,“latest”标签不存在。这意味着在部署 DTS 时,用户必须从 NGC 中选择所需的标签,并确保
DTS_IMAGE
变量指向完整的镜像。版本1.16.5-doca2.6.0-host
的示例export DTS_IMAGE=nvcr.io/nvidia/doca/doca_telemetry:1.16.5-doca2.6.0-host
运行
docker run -d --net=host --uts=host --ipc=host \ --privileged \ --ulimit stack=67108864 --ulimit memlock=-1 \ --device=/dev/mst/ \ --device=/dev/infiniband/ \ --gpus all \ -v "/opt/mellanox/doca/services/telemetry/config:/config" \ -v "/opt/mellanox/doca/services/telemetry/ipc_sockets:/tmp/ipc_sockets" \ -v "/opt/mellanox/doca/services/telemetry/data:/data" \ -v "/usr/lib/mft:/usr/lib/mft" \ -v "/sys/kernel/debug:/sys/kernel/debug" \ --rm --name doca-telemetry -it $DTS_IMAGE /usr/bin/telemetry-run.sh
注意以下挂载仅特定服务需要
hcaperf
提供程序--device=/dev/mst/
-v "/usr/lib/mft:/usr/lib/mft"
-v "/sys/kernel/debug:/sys/kernel/debug"
UCX/RDMA 导出模式
--device=/dev/infiniband/
GPU 提供程序(
nvidia-smi
和dcgm
)--gpu all
使用 Grafana 监控进行部署
请参阅“使用 Grafana 监控进行部署”部分。
DTS 的配置在初始化期间由 DTS 放置在 /opt/mellanox/doca/services/telemetry/config
下。用户可以与 dts_config.ini
文件和 fluent_bit_configs
文件夹进行交互。dts_config.ini
包含服务的主要配置,必须用于启用/禁用提供程序、导出器、数据写入。相应的章节中提供了更多详细信息。对于此文件中的每次更新,都必须重新启动 DST。与 fluent_bit_configs
文件夹的交互在 Fluent Bit 部分中描述。
初始化脚本
.yaml
文件的 InitContainers
部分有 2 个用于配置初始化的脚本
/usr/bin/telemetry-init.sh
– 生成默认配置文件,当且仅当/opt/mellanox/doca/services/telemetry/config
文件夹为空时。/usr/bin/enable-fluent-forward.sh
– 配置 Fluent Bit 转发的目标主机和端口。该脚本要求主机和端口都存在,并且仅在这种情况下才会启动。该脚本覆盖/opt/mellanox/doca/services/telemetry/config/fluent_bit_configs
文件夹并配置.exp
文件。
启用 Fluent Bit 转发
要启用 Fluent Bit 转发,请将目标主机和端口添加到 .yaml
文件的 initContainers
部分中找到的命令行
command: ["/bin/bash", "-c", "/usr/bin/telemetry-init.sh && /usr/bin/enable-fluent-forward.sh -i=127.0.0.1 -p=24224"]
上面显示的主机和端口只是一个示例。请参阅“Fluent Bit”部分,了解手动配置。
生成配置
默认情况下,配置文件夹 /opt/mellanox/doca/services/telemetry/config
开始时为空。一旦服务启动,初始脚本将作为初始容器的一部分运行,并按照 启用 Fluent Bit 转发 部分中的描述创建配置。
重置配置
可以通过删除配置文件夹中找到的内容并重新启动服务以生成默认配置来重置配置。
采样间隔
采样间隔在所有遥测提供程序之间共享(少数例外),并由 update
参数控制
# Sampling interval for providers in milliseconds
update=1000
采样频率可能不会反映在导出端,因为仅当内部缓冲区(也称为数据页)填充数据时才会导出收集的数据。这可能会导致 DTS 导出器更新频率低于提供程序采样频率。
也就是说,如果一个数据页包含 N 个计数器,并且一个提供程序在每个样本上填充 10 个计数器,则需要 N/10 个样本来填充数据页并导出数据。可以使用 sync-time-limit
参数覆盖此逻辑,该参数定义了收集数据和导出数据之间的最大延迟时间
# Timeout for forced page rotation in seconds
sync-time-limit=10000
启用提供程序
提供程序从 dts_config.ini
配置文件启用。取消注释 enable-provider=$provider-name
行以允许为此提供程序收集数据。例如,取消注释以下行启用 ethtool
提供程序
#enable-provider=ethtool
有关遥测提供程序的更多信息,请参阅 提供程序 部分。
远程采集
由于各种容器限制,某些提供程序或组件无法在容器内正常执行。因此,它们必须执行远程采集或执行。
以下步骤启用远程采集
激活 DOCA 特权执行器 (DPE),因为 DPE 是实现远程采集的方式
systemctl start dpe
在
provider-name
之前添加grpc
(即,enable-provider=grpc.$provider-name
)。例如,以下行配置hcaperf
提供程序的远程采集enable-provider=grpc.hcaperf
如果存在任何特定于提供程序的配置行,则也添加
grpc
前缀。基于之前的示例grpc.hcaperf.mlx5_0=sample grpc.hcaperf.mlx5_1=sample
启用数据写入
取消注释 dts_config.ini
中的以下行
#output=/data
dts_config.ini
中的更改会强制主 DTS 进程在 60 秒后重新启动以应用新设置。
启用与非容器程序的 IPC
有关在 DTS 和容器外部运行的应用程序之间启用 IPC 的信息,请参阅 DOCA 遥测导出器 中的“将 IPC 与非容器应用程序一起使用”部分。
级别标签
对于支持元数据标签的 DTS 导出器,例如 Prometheus 和 OpenTelemetry,可以为两个级别的遥测指定标签:全局和每个设备。这些标签允许对遥测数据进行精确识别和分类。
配置级别标签
级别标签在 level_labels.ini
文件中定义,该文件位于 /opt/mellanox/doca/telemetry/config/level_labels.ini
。
以下是 level_labels.ini
文件的示例,定义了全局标签和每个设备标签
# lines starting with hash are ignored
# 2
level labels are supported - global and device
# global labels will be added to all metrics
# device labels will be added to metrics matching the device description
[global_labels]
# global labels to be added to all metrics
# format:
# label_name=label_value
hostname=myhost
ip=127.127
.127.127
[device_labels]
# device labels will be added to metrics related to the device
# format:
# device_index_label=device_label_name1|device_label_value1|device_label_name2|device_label_value2
mlx5_0=rail|0
|network|compute
mlx5_1=rail|1
|network|compute
mlx5_2=rail|2
|network|storage
[device_mapping]
# optional: mapping of device names to network interfaces and mst devices
# this
is done internally by DTS, but can be overridden here
# add clear_auto_detected_mapping=true
to clear the auto-detected mapping
# format:
# device_name=mst_device_name|net_interface_names
# in case
of multiple net interfaces, separate them with comma
[data_types_mapping]
# internal data types, don't change this section if you don'
t know what you are doing
# format:
# data_type|index|device_type_name
ethtool_event=device_name|netif
ppcc_eth=device_name|mst
ifconfig_event=device_name|netif
启用级别标签
确保
level_labels.ini
文件中正确配置了global_labels
和device_labels
部分。确认 DTS 配置文件 (
/opt/mellanox/doca/telemetry/config/dts_config.ini
) 包含以下行level-labels-file=/config/level_labels.ini
监控和重新加载
启用后,DTS 会监控 level_labels.ini
文件。如果文件被修改
DTS 中的遥测收集过程将自动退出
DTS 将在 60 秒后重新启动,以便更新后的配置生效
这确保了对级别标签文件的更改无需手动重启即可应用。
提供程序
DTS 支持从 sysf
、ethtool
和 tc
提供程序进行板载数据采集。Fluent 和 Prometheus 聚合器提供程序可以从其他应用程序收集数据。
其他提供程序基于不同的条件可用(例如,特定的容器挂载或仅主机,例如 amber
、ppcc_eth
等)。此类提供程序及其依赖项在其相应的章节中描述。
Sysfs 计数器列表
sysfs 提供程序有几个组件:ib_port
、hw_port
、mr_cache
、eth
、hwmon
和 bf_ptm
。默认情况下,启用提供程序时,所有组件(除了 bf_ptm)都已启用
#disable-provider=sysfs
组件可以单独禁用。例如,要禁用 eth
enable-provider=sysfs
disable-provider=sysfs.eth
ib_port
和 ib_hvw
是状态计数器,每个端口收集一次。这些计数器仅针对状态为活动的端口收集。
ib_port
计数器{hca_name}:{port_num}:ib_port_state {hca_name}:{port_num}:VL15_dropped {hca_name}:{port_num}:excessive_buffer_overrun_errors {hca_name}:{port_num}:link_downed {hca_name}:{port_num}:link_error_recovery {hca_name}:{port_num}:local_link_integrity_errors {hca_name}:{port_num}:multicast_rcv_packets {hca_name}:{port_num}:multicast_xmit_packets {hca_name}:{port_num}:port_rcv_constraint_errors {hca_name}:{port_num}:port_rcv_data {hca_name}:{port_num}:port_rcv_errors {hca_name}:{port_num}:port_rcv_packets {hca_name}:{port_num}:port_rcv_remote_physical_errors {hca_name}:{port_num}:port_rcv_switch_relay_errors {hca_name}:{port_num}:port_xmit_constraint_errors {hca_name}:{port_num}:port_xmit_data {hca_name}:{port_num}:port_xmit_discards {hca_name}:{port_num}:port_xmit_packets {hca_name}:{port_num}:port_xmit_wait {hca_name}:{port_num}:symbol_error {hca_name}:{port_num}:unicast_rcv_packets {hca_name}:{port_num}:unicast_xmit_packets
ib_hw
计数器{hca_name}:{port_num}:hw_state {hca_name}:{port_num}:hw_duplicate_request {hca_name}:{port_num}:hw_implied_nak_seq_err {hca_name}:{port_num}:hw_lifespan {hca_name}:{port_num}:hw_local_ack_timeout_err {hca_name}:{port_num}:hw_out_of_buffer {hca_name}:{port_num}:hw_out_of_sequence {hca_name}:{port_num}:hw_packet_seq_err {hca_name}:{port_num}:hw_req_cqe_error {hca_name}:{port_num}:hw_req_cqe_flush_error {hca_name}:{port_num}:hw_req_remote_access_errors {hca_name}:{port_num}:hw_req_remote_invalid_request {hca_name}:{port_num}:hw_resp_cqe_error {hca_name}:{port_num}:hw_resp_cqe_flush_error {hca_name}:{port_num}:hw_resp_local_length_error {hca_name}:{port_num}:hw_resp_remote_access_errors {hca_name}:{port_num}:hw_rnr_nak_retry_err {hca_name}:{port_num}:hw_rx_atomic_requests {hca_name}:{port_num}:hw_rx_dct_connect {hca_name}:{port_num}:hw_rx_icrc_encapsulated {hca_name}:{port_num}:hw_rx_read_requests {hca_name}:{port_num}:hw_rx_write_requests
ib_mr_cache
计数器{hca_name}:mr_cache:size_{n}:cur {hca_name}:mr_cache:size_{n}:limit {hca_name}:mr_cache:size_{n}:miss {hca_name}:mr_cache:size_{n}:size
注意其中
n
的范围为 0 到 24。eth
计数器{hca_name}:{device_name}:eth_collisions {hca_name}:{device_name}:eth_multicast {hca_name}:{device_name}:eth_rx_bytes {hca_name}:{device_name}:eth_rx_compressed {hca_name}:{device_name}:eth_rx_crc_errors {hca_name}:{device_name}:eth_rx_dropped {hca_name}:{device_name}:eth_rx_errors {hca_name}:{device_name}:eth_rx_fifo_errors {hca_name}:{device_name}:eth_rx_frame_errors {hca_name}:{device_name}:eth_rx_length_errors {hca_name}:{device_name}:eth_rx_missed_errors {hca_name}:{device_name}:eth_rx_nohandler {hca_name}:{device_name}:eth_rx_over_errors {hca_name}:{device_name}:eth_rx_packets {hca_name}:{device_name}:eth_tx_aborted_errors {hca_name}:{device_name}:eth_tx_bytes {hca_name}:{device_name}:eth_tx_carrier_errors {hca_name}:{device_name}:eth_tx_compressed {hca_name}:{device_name}:eth_tx_dropped {hca_name}:{device_name}:eth_tx_errors {hca_name}:{device_name}:eth_tx_fifo_errors {hca_name}:{device_name}:eth_tx_heartbeat_errors {hca_name}:{device_name}:eth_tx_packets {hca_name}:{device_name}:eth_tx_window_errors
devices
计数器{hca_name}:current_link_width {hca_name}:current_link_speed {hca_name}:max_link_speed {hca_name}:max_link_width
BlueField-2
hwmon
计数器{hwmon_name}:{l3cache}:CYCLES {hwmon_name}:{l3cache}:HITS_BANK0 {hwmon_name}:{l3cache}:HITS_BANK1 {hwmon_name}:{l3cache}:MISSES_BANK0 {hwmon_name}:{l3cache}:MISSES_BANK1 {hwmon_name}:{pcie}:IN_C_BYTE_CNT {hwmon_name}:{pcie}:IN_C_PKT_CNT {hwmon_name}:{pcie}:IN_NP_BYTE_CNT {hwmon_name}:{pcie}:IN_NP_PKT_CNT {hwmon_name}:{pcie}:IN_P_BYTE_CNT {hwmon_name}:{pcie}:IN_P_PKT_CNT {hwmon_name}:{pcie}:OUT_C_BYTE_CNT {hwmon_name}:{pcie}:OUT_C_PKT_CNT {hwmon_name}:{pcie}:OUT_NP_BYTE_CNT {hwmon_name}:{pcie}:OUT_NP_PKT_CNT {hwmon_name}:{pcie}:OUT_P_PKT_CNT {hwmon_name}:{tile}:MEMORY_READS {hwmon_name}:{tile}:MEMORY_WRITES {hwmon_name}:{tile}:MSS_NO_CREDIT {hwmon_name}:{tile}:VICTIM_WRITE {hwmon_name}:{tilenet}:CDN_DIAG_C_OUT_OF_CRED {hwmon_name}:{tilenet}:CDN_REQ {hwmon_name}:{tilenet}:DDN_REQ {hwmon_name}:{tilenet}:NDN_REQ {hwmon_name}:{trio}:TDMA_DATA_BEAT {hwmon_name}:{trio}:TDMA_PBUF_MAC_AF {hwmon_name}:{trio}:TDMA_RT_AF {hwmon_name}:{trio}:TPIO_DATA_BEAT {hwmon_name}:{triogen}:TX_DAT_AF {hwmon_name}:{triogen}:TX_DAT_AF
BlueField-3
hwmon
计数器{hwmon_name}:{llt}:GDC_BANK0_RD_REQ {hwmon_name}:{llt}:GDC_BANK1_RD_REQ {hwmon_name}:{llt}:GDC_BANK0_WR_REQ {hwmon_name}:{llt}:GDC_BANK1_WR_REQ {hwmon_name}:{llt_miss}:GDC_MISS_MACHINE_RD_REQ {hwmon_name}:{llt_miss}:GDC_MISS_MACHINE_WR_REQ {hwmon_name}:{mss}:SKYLIB_DDN_TX_FLITS {hwmon_name}:{mss}:SKYLIB_DDN_RX_FLITS
BlueField-3
bf_ptm
计数器bf:ptm:active_power_profile bf:ptm:atx_power_available bf:ptm:core_temp bf:ptm:ddr_temp bf:ptm:error_state bf:ptm:power_envelope bf:ptm:power_throttling_event_count bf:ptm:power_throttling_state bf:ptm:thermal_throttling_event_count bf:ptm:thermal_throttling_state bf:ptm:throttling_state bf:ptm:total_power bf:ptm:vr0_power bf:ptm:vr1_power
rate
计数器 – 显示其他组件原始计数器速率的计算计数器。此类计数器由_rate
后缀标识,该后缀对应于它们跟踪的原始计数器名称。
端口计数器
以下参数位于 /sys/class/infiniband/mlx5_0/ports/1/counters
中。
计数器 | 描述 | InfiniBand 规范名称 | 组 |
| 在所有 VL 上从端口接收的数据八位字节总数,除以 4(以双字,32 位计数)。 |
| 信息性 |
| 数据包总数(可能包括包含错误的数据包。这是 64 位计数器。 |
| 信息性 |
| 多播数据包总数,包括包含错误的多播数据包。 |
| 信息性 |
| 单播数据包总数,包括包含错误的单播数据包。 |
| 信息性 |
| 在所有 VL 上从端口传输的数据八位字节总数,除以 4(以双字,32 位计数)。 |
| 信息性 |
| 在所有 VL 上从此端口传输的数据包总数。这可能包括带有错误的数据包。 这是 64 位计数器。 |
| 信息性 |
| 端口上接收的由于无法被交换机中继转发而被丢弃的数据包总数。 |
| 错误 |
| 端口上接收的包含错误的数据包总数。 |
| 信息性 |
| 在交换机物理端口上接收的被丢弃的数据包总数。 |
| 错误 |
| 本地物理错误计数超过 |
| 错误 |
| 端口有数据要传输但在整个滴答声期间未发送数据的滴答声次数(由于信用不足或仲裁不足)。 |
| 信息性 |
| 在所有 VL 上从端口传输的多播数据包总数。这可能包括带有错误的多播数据包。 |
| 信息性 |
| 在所有 VL 上从端口传输的单播数据包总数。这可能包括带有错误的单播数据包。 |
| 信息性 |
| 由于端口关闭或拥塞,端口丢弃的出站数据包总数。 |
| 错误 |
| 未从交换机物理端口传输的数据包总数。 |
| 错误 |
| 端口上接收的带有 EBP 分隔符标记的数据包总数。 |
| 错误 |
| 在一个或多个物理通道上检测到的次要链路错误总数。 |
| 错误 |
| 由于端口的资源限制(例如,缺少缓冲区)而丢弃的传入 VL15 数据包的数量。 |
| 错误 |
| 端口训练状态机成功完成链路错误恢复过程的总次数。 |
| 错误 |
| 端口训练状态机链路错误恢复过程失败并导致链路断开的总次数。 |
| 错误 |
硬件计数器
硬件计数器位于 /sys/class/infiniband/mlx5_0/ports/1/hw_counters/
下,每个功能计数一次,并在该功能上公开。某些计数器不是每个功能计数的。这些计数器都带有相关注释。
计数器 | 描述 | 组 |
| 接收的数据包数。重复请求是先前已执行的请求。 | 错误 |
| 请求决定 ACK 的次数。PSN 大于 RDMA 读取或响应的预期 PSN。 | 错误 |
| 以毫秒为单位的最大周期,它定义了计数器读取的老化。在此周期内的两次连续读取可能会返回相同的值 | 信息性 |
| 发送方 RC、XRC、DCT QP 的 QP ack 计时器过期的次数。 QP 重试限制未超出,因此它仍然是可恢复的错误。 | 错误 |
| 当通知点注意到 RoCEv2 IP 标头(ECN 位)中出现拥塞时,由通知点发送的 CNP 数据包数。 | 信息性 |
| 通知点接收到的 RoCEv2 数据包数,这些数据包被标记为遇到拥塞(入口 RoCE 流量上的 ECN 位为“11”)。 | 信息性 |
| 由于关联 QP 缺少 WQE 而发生的丢弃次数。 | 错误 |
| 接收到的乱序数据包数。 | 错误 |
| 接收到的 NAK 序列错误数据包数。QP 重试限制未超出。 | 错误 |
| 请求者检测到 CQE 完成并出现错误的次数。 | 错误 |
| 请求者检测到 CQE 完成并出现刷新错误的次数。 | 错误 |
| 请求者检测到远程访问错误的次数。 | 错误 |
| 请求者检测到远程无效请求错误的次数。 | 错误 |
| 响应者检测到 CQE 完成并出现错误的次数。 | 错误 |
| 响应者检测到 CQE 完成并出现刷新错误的次数。 | 错误 |
| 响应者检测到本地长度错误的次数。 | 错误 |
| 响应者检测到远程访问错误的次数。 | 错误 |
| 接收到的 RNR NAK 数据包数。QP 重试限制未超出。 | 错误 |
| 反应点 HCA 处理以限制传输速率的 CNP 数据包数。 | 信息性 |
| 反应点 HCA 接收和忽略的 CNP 数据包数。如果在网络中启用了 RoCE 拥塞控制,则不应提高此计数器。如果此计数器升高,请验证是否在适配器上启用了 ECN。请参阅 如何为 ConnectX-4 (Linux) 配置 DCQCN (RoCE CC) 值。 | 错误 |
| 关联 QP 接收到的 ATOMIC 请求数。 | 信息性 |
| 关联 DCT 接收到的连接请求数。 | 信息性 |
| 关联 QP 接收到的 READ 请求数。 | 信息性 |
| 关联 QP 接收到的 WRITE 请求数。 | 信息性 |
| 带有 ICRC 错误的 RoCE 数据包数。 | 错误 |
| 计算 RoCE 流量的自适应重传次数 | 信息性 |
| 计算 RoCE 流量由于自适应重传而达到超时的次数 | 信息性 |
| 计算 RoCE 慢速重启的使用次数 | 信息性 |
| 计算 RoCE 慢速重启生成的 CNP 数据包数 | 信息性 |
| 计算 RoCE 慢速重启更改为慢速重启状态的次数 | 信息性 |
| 计算 RoCE 流量由于自适应重传而达到超时的次数 | 信息性 |
调试状态计数器
以下参数位于 /sys/class/net/<interface>/debug
中。
参数 | 描述 | 默认 |
| 设置 LRO 计时器周期值(以微秒为单位),该值将用作 LRO 会话过期时间。例如
| 32 |
| 链路断开原因将允许用户查询阻止链路启动的原因。例如
有关所有可能的选项,请参阅适配器 PRM(PDDR 寄存器)。 | N/A |
功率热力计数器
bf_ptm
组件使用 远程采集 收集 BlueField-3 功率热力计数器。默认情况下禁用,可以按如下方式启用
加载内核模块
mlxbf-ptm
modprobe -
v
mlxbf-ptm使用远程采集启用组件
enable-provider=grpc.sysfs.bf_ptm
注意DPE 服务器应在更改
dts_config.ini
文件之前处于活动状态。有关详细信息,请参阅“远程采集”部分。
Ethtool 计数器
Ethtool 计数器是与 Ethtool 实用程序 对应的生成计数器列表。计数器是按设备生成的。
有几个计数器组,具体取决于计数器的计数位置
环 - 软件环计数器
软件端口 - 软件环计数器的聚合
vPort 计数器 - 由于转向或没有缓冲区而导致的流量计数器和丢弃。可能表明 BlueField 问题。这些计数器包括以太网流量计数器(包括原始以太网)和 RDMA/RoCE 流量计数器。
物理端口计数器 - 将 BlueField 连接到网络的物理端口。可能表明设备问题或链路或网络问题。此测量点包含有关标准化计数器(如 IEEE 802.3、RFC2863、RFC 2819、RFC 3635)以及其他计数器(如流量控制、FEC 等)的信息。物理端口计数器不向虚拟机公开。
优先级端口计数器 - 一组物理端口计数器,每个端口每个优先级
每个计数器组可能具有不同的计数器类型
流量信息计数器 - 计数流量的计数器。这些计数器可用于负载估计或一般调试。
流量加速计数器 - 计算 NVIDIA 驱动程序或硬件加速的流量的计数器。这些计数器是信息性计数器集的附加层,并且相同的流量在信息性计数器和加速计数器中都计数。加速计数器标记为 [A]。
错误计数器 - 这些计数器的增加可能表明存在问题
以下加速机制具有专用计数器
TCP 分段卸载 (TSO) – 通过允许内核在单个大型缓冲区中缓冲多个数据包来提高出站吞吐量并降低 CPU 利用率。BlueField 将缓冲区拆分为数据包并进行传输。
大型接收卸载 (LRO) – 通过将单个流的多个传入数据包聚合到单个缓冲区来提高入站吞吐量并降低 CPU 利用率
CHECKSUM – TCP 校验和的计算(由 BlueField)。提供以下校验和卸载(有关详细说明,请参阅 skbuff.h)
CHECKSUM_UNNECESSARY
CHECKSUM_NONE
– 未使用校验和加速CHECKSUM_COMPLETE
– 设备在整个数据包上提供校验和CHECKSUM_PARTIAL
– 设备提供校验和
CQE 压缩 – 完成队列事件 (CQE) 的压缩,用于节省 PCIe 上的带宽,从而实现更好的性能。
环/软件端口计数器
以下计数器在每个环或软件端口上可用。
这些计数器提供有关 BlueField 加速的流量的信息。计数器除了对加速流量进行计数外,还对标准计数器进行计数(即,加速流量计数两次)。
下表中的计数器名称同时指环计数器和端口计数器。环计数器的表示法包括不带大括号的 [i]
索引。端口计数器的表示法不包括 [i]
。计数器名称 rx[i]_packets
将打印为环 0 的 rx0_packets
和软件端口的 rx_packets
计数器 | 描述 | 类型 |
| 环 i 上接收的数据包数。 | 信息性 |
| 环 i 上接收的字节数。 | 信息性 |
| 环 i 上传输的数据包数。 | 信息性 |
| 环 i 上传输的字节数。 | 信息性 |
| 环 i 上传输的 TSO 数据包数 [A]。 | 加速 |
| 环 i 上传输的 TSO 字节数 [A]。 | 加速 |
| 指示为在环 i 上传输的携带内部封装的 TSO 数据包数 [A] | 加速 |
| 指示为在环 i 上传输的携带内部封装的 TSO 字节数 [A]。 | 加速 |
| 环 i 上接收的 LRO 数据包数 [A]。 | 加速 |
| 环 i 上接收的 LRO 字节数 [A]。 | 加速 |
| 在环 i 上接收的带有 | 加速 |
| 在环 i 上接收的带有 | 加速 |
| 在环 i 上接收的带有 | 加速 |
| 在环 i 上接收的带有 CHECK_SUM UNNECESSARY 内部封装的数据包 [A]。 | 加速 |
| 在环 i 上传输的带有 | 加速 |
| 在环 i 上传输的带有 CHECKSUM_PARTIAL 内部封装的数据包 [A]。 | 加速 |
| 在环 i 上传输的没有硬件校验和加速的数据包。 | 信息性 |
| 环 i 上 SQ 已满的事件。如果此计数器增加,请检查为传输分配的缓冲区量。 | 错误 |
| 环 i 上 SQ 已满且已变为未满的事件。 | 错误 |
| 由于环 i 上 DMA 映射失败而丢弃的传输数据包。如果此计数器增加,请检查为传输分配的缓冲区量。 | 错误 |
| 环 i 上接收的错误操作码数。 | 错误 |
| 由于到达循环缓冲区的末尾,插入到 SQ(与环 i 相关)的无 WQE(空 WQE)的数量。当接近循环缓冲区的末尾时,驱动程序可能会添加这些空 WQE,以避免处理 WQE 在队列末尾开始并在队列开头结束的状态。这是一个正常情况。 | 信息性 |
| 环 i 上未能分配复合页,因此使用了分段 MPWQE(多数据包 WQE)的 WQE 数量。如果此计数器升高,则可能表明没有足够的内存用于大页,驱动程序分配了分段页。这不是异常情况。 | 信息性 |
| 环 i 上发出的填充符 CQE 事件数。 信息
内核 4.19 之前的计数器名称为 | 信息性 |
| 环 i 上带有 CQE 压缩的接收块数 [A]。 | 加速 |
| 环 i 上带有 CQE 压缩的接收数据包数 [A]。 | 加速 |
| 成功重用驱动程序内部页缓存中的页面的事件数 | 加速 |
| 内部页缓存已满且驱动程序无法将页面放回缓存以进行回收(页面将被释放)的事件数 | 加速 |
| 缓存为空的事件数 - 没有页面可提供。驱动程序应分配新页面 | 加速 |
| 缓存头正忙且无法回收的事件数。驱动程序分配了新页面 | 加速 |
| 使用 skbuff 上设置的 xmit_more 指示(无门铃)发送的数据包数 | 加速 |
| TX 环的 CQ 上接收的完成数。 | 信息性 |
| 通道的 NAPI 轮询的调用次数。 | 信息性 |
| NAPI 轮询函数完成并在通道上武装完成队列的次数 信息
内核 4.19 开始支持。 | 信息性 |
| 由于通道上亲和性发生变化,NAPI 轮询函数显式停止在 CPU 上执行的次数。 | 信息性 |
| 由于环上的拥塞,未完成的 UMR 请求延迟的次数。 信息
内核 4.19 开始支持。 | 错误 |
| 通道完成队列上的硬中断事件数。 | 信息性 |
| 填充符 CQE 消耗的环上步幅数。 | 信息性 |
| 由于 XDP 程序 XDP_TX 操作(回弹)而转发回端口的数据包数量。这些数据包不被其他软件计数器计数。这些数据包由物理端口和 vPort 计数器计数。 | 信息性 |
| 由于 您可以打开更多 rx 队列并在所有队列上分散 rx 流量,和/或增加 rx 环大小。 | 错误 |
| 在 RX 环的 | 错误 |
| 在 XDP-TX 环的 CQ 上收到的完成数量。 | 信息性 |
| 由于 XDP 程序 | 信息性 |
| 在环上触发 XDP 重定向操作的次数。 | 加速 |
| 重定向到接口的数据包数量(由于 XDP 重定向)。这些数据包不被其他软件计数器计数。这些数据包由物理端口和 vPort 计数器计数。 | 信息性 |
| 重定向到接口的数据包数量(由于 XDP 重定向),但由于 Tx 队列已满而被丢弃。这些数据包不被其他软件计数器计数。用户可以扩大 Tx 队列。 | 信息性 |
| 重定向到接口的数据包数量(由于 XDP 重定向),但由于错误(例如,帧过长和帧过短)而被丢弃。 | 错误 |
| 在 CQ 上收到的针对重定向到接口的数据包(由于 XDP 重定向)的完成数量。 | 信息性 |
| 缓存撤出现象的数量。这可能是由于页面移动到另一个 NUMA 节点或页面是 pfmemalloc-ed 并且应尽快释放而发生。 | 加速 |
vPort 计数器
连接到 vNIC 的 eswitch 端口上的计数器。
计数器 | 描述 | 类型 |
| 接收到的单播数据包,被导向到端口,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 接收到的单播字节,被导向到端口,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 传输的单播数据包,从端口导向,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 传输的单播字节,从端口导向,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 接收到的多播数据包,被导向到端口,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 接收到的多播字节,被导向到端口,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 传输的多播数据包,从端口导向,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 传输的多播字节,从端口导向,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 接收到的广播数据包,被导向到端口,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 接收到的广播字节,被导向到端口,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 传输的广播数据包,从端口导向,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 传输的广播数据包,从端口导向,包括原始以太网 QP/DPDK 流量,不包括 RDMA 流量 | 信息性 |
| 接收到的 RDMA 单播数据包,被导向到端口(计数器计数 RoCE/UD/RC 流量)[A] | 加速 |
| 接收到的 RDMA 单播字节,被导向到端口(计数器计数 RoCE/UD/RC 流量)[A] | 加速 |
| 传输的 RDMA 单播数据包,从端口导向(计数器计数 RoCE/UD/RC 流量)[A] | 加速 |
| 传输的 RDMA 单播字节,从端口导向(计数器计数 RoCE/UD/RC 流量)[A] | 加速 |
| 接收到的 RDMA 多播数据包,被导向到端口(计数器计数 RoCE/UD/RC 流量)[A] | 加速 |
| 接收到的 RDMA 多播字节,被导向到端口(计数器计数 RoCE/UD/RC 流量)[A] | 加速 |
| 传输的 RDMA 多播数据包,从端口导向(计数器计数 RoCE/UD/RC 流量)[A] | 加速 |
| 传输的 RDMA 多播字节,从端口导向(计数器计数 RoCE/UD/RC 流量)[A] | 加速 |
| NIC 接收但由于与 NIC 流表中的任何流不匹配而被丢弃的数据包数量。 信息
内核 4.16 及更高版本支持。 | 错误 |
| 仅代表 (Representor):接收到的,由虚拟机监控程序处理的数据包。 信息
内核 4.18 及更高版本支持。 | 信息性 |
| 仅代表 (Representor):接收到的,由虚拟机监控程序处理的字节。 信息
内核 4.18 及更高版本支持。 | 信息性 |
| 仅代表 (Representor):传输的,已由虚拟机监控程序处理的数据包。 信息
内核 4.18 及更高版本支持。 | 信息性 |
| 仅代表 (Representor):传输的,已由虚拟机监控程序处理的字节。 信息
内核 4.18 及更高版本支持。 | 信息性 |
物理端口计数器
物理端口计数器是连接适配器到外部网络的端口上的计数器。此测量点包含有关标准化计数器(如 IEEE 802.3、RFC2863、RFC 2819、RFC 3635)以及其他计数器(如流控制、FEC 等)的信息。
计数器 | 描述 | 类型 |
| 物理端口上接收的数据包数量。此计数器不包括由于 FCS、帧大小和类似错误而丢弃的数据包。 | 信息性 |
| 物理端口上发送的数据包数量。 | 信息性 |
| 物理端口上接收的字节数,包括以太网报头和 FCS。 | 信息性 |
| 物理端口上发送的字节数。 | 信息性 |
| 物理端口上接收的多播数据包数量。 | 信息性 |
| 物理端口上发送的多播数据包数量。 | 信息性 |
| 物理端口上接收的广播数据包数量。 | 信息性 |
| 物理端口上发送的广播数据包数量。 | 信息性 |
| 由于物理端口上的帧校验序列 (FCS) 错误而丢弃的接收数据包数量。如果此计数器高速增长,请使用下面的 | 错误 |
| 由于物理端口上的长度/类型错误而丢弃的接收数据包数量。 | 错误 |
| 由于物理端口上长度大于允许值而丢弃的接收数据包数量。 如果此计数器正在增加,则表示连接到适配器的对等方配置了更大的 MTU。使用相同的 MTU 配置应能解决此问题。 | 错误 |
| 由于物理端口上长度超过 MTU 大小而丢弃的接收数据包数量。如果此计数器正在增加,则表示连接到适配器的对等方配置了更大的 MTU。使用相同的 MTU 配置应能解决此问题。 | 错误 |
| 由于物理端口上的物理编码错误(符号错误)而丢弃的接收数据包数量。 | 错误 |
| 物理端口上接收的 MAC 控制数据包数量。 | 信息性 |
| 物理端口上发送的 MAC 控制数据包数量。 | 信息性 |
| 物理端口上接收的链路层暂停数据包数量。如果此计数器正在增加,则表示网络拥塞,无法吸收来自适配器的流量。 | 信息性 |
| 物理端口上发送的链路层暂停数据包数量。如果此计数器正在增加,则表示 NIC 拥塞,无法吸收来自网络的流量。 | 信息性 |
| 物理端口上接收的带有不支持的操作码的 MAC 控制数据包数量。 | 错误 |
| 由于物理端口上缺少缓冲区而丢弃的接收数据包数量。如果此计数器正在增加,则表示适配器拥塞,无法吸收来自网络的流量。 | 错误 |
| 即使未检测到错误,也在传输时丢弃的数据包数量。丢弃可能是由于链路处于关闭状态、队首丢弃、来自网络的暂停等原因引起的。 | 错误 |
| 由于物理端口上长度超过 MTU 大小而丢弃的发送数据包数量。 | 错误 |
| 由于物理端口上长度小于 64 字节而丢弃的接收数据包数量。如果此计数器正在增加,则表示连接到适配器的对等方配置了非标准 MTU 或收到了格式错误的数据包。 | 错误 |
| 由于物理端口上长度小于 64 字节且有 FCS 错误而丢弃的接收数据包数量。如果此计数器正在增加,则表示连接到适配器的对等方配置了非标准 MTU。 | 错误 |
| 由于物理端口上长度大于 64 字节且有 FCS 错误而丢弃的接收数据包数量。 | 错误 |
| 物理端口上接收的大小为 64 字节的数据包数量。 | 信息性 |
| 物理端口上接收的大小为 65 到 127 字节的数据包数量。 | 信息性 |
| 物理端口上接收的大小为 128 到 255 字节的数据包数量。 | 信息性 |
| 物理端口上接收的大小为 256 到 512 字节的数据包数量。 | 信息性 |
| 物理端口上接收的大小为 512 到 1023 字节的数据包数量。 | 信息性 |
| 物理端口上接收的大小为 1024 到 1518 字节的数据包数量。 | 信息性 |
| 物理端口上接收的大小为 1519 到 2047 字节的数据包数量。 | 信息性 |
| 物理端口上接收的大小为 2048 到 4095 字节的数据包数量。 | 信息性 |
| 物理端口上接收的大小为 4096 到 8191 字节的数据包数量。 | 信息性 |
| 物理端口上接收的大小为 8192 到 10239 字节的数据包数量。 | 信息性 |
| 链路操作状态更改为关闭的次数。如果此计数器正在增加,则可能表示端口抖动。您可能需要更换电缆/收发器。 | 错误 |
| 接收队列没有为适配器的传入流量分配软件缓冲区的次数。 | 错误 |
| 检测到模块的 I2C 总线(数据或时钟)短路的次数。您可能需要更换电缆/收发器。 信息
内核 4.10 及更高版本支持。 | 错误 |
| 模块温度过高的次数。如果此问题持续存在,您可能需要检查环境温度或更换电缆/收发器模块。 信息
内核 4.10 及更高版本支持。 | 错误 |
| 模块电缆短路的次数。您可能需要更换电缆/收发器模块。 信息
内核 4.10 及更高版本支持。 | 错误 |
| 模块被弹出的次数。 信息
内核 4.10 及更高版本支持。 | 信息性 |
| 端口接收缓冲区超过 85% 满的事件数。 信息
内核 4.14 及更高版本支持。 | 信息性 |
| 设备长时间发送暂停帧的次数。 信息
内核 4.15 及更高版本支持。 | 信息性 |
| 设备长时间发送暂停帧的次数,达到超时并禁用暂停帧传输。在暂停帧被禁用的期间,可能发生了丢包。 信息
内核 4.15 及更高版本支持。 | 错误 |
| 在端口(或每个环)上未能为接收到的数据包(或 SKB)分配缓冲区 | 错误 |
| 此计数器提供有关可能已接收的总流量的信息,可用作衡量 | 信息性 |
| 此计数器计算未被 FEC 校正算法纠正或在该接口上 FEC 算法未激活的符号错误数。如果此计数器正在增加,则表示 NIC 和网络之间的链路遭受高 BER,并且流量丢失。您可能需要更换电缆/收发器。错误率是 | 错误 |
| 根据活动的 FEC (RS/FC),此端口上纠正的比特数。如果此计数器正在增加,则表示 NIC 和网络之间的链路遭受高 BER。纠正的比特率是 | 错误 |
| 此计数器计算每个通道 [l] 索引的物理原始错误数。该计数器计算 FEC 校正之前的错误。如果此计数器正在增加,则表示 NIC 和网络之间的链路遭受高 BER,并且流量可能丢失。您可能需要更换电缆/收发器。请根据 信息
内核 4.20 及更高版本支持。 | 错误 |
优先级端口计数器
以下计数器是物理端口计数器,按 L2 优先级 (0-7) 计数。
计数器名称中的 p
代表优先级。
计数器 | 描述 | 类型 |
| 在物理端口上以优先级 p 接收的字节数。 | 信息性 |
| 在物理端口上以优先级 p 接收的数据包数量。 | 信息性 |
| 在物理端口上以优先级 p 发送的字节数。 | 信息性 |
| 在物理端口上以优先级 p 发送的数据包数量。 | 信息性 |
| 在物理端口上以优先级 p 接收的暂停数据包数量。如果此计数器正在增加,则表示网络拥塞,无法吸收来自适配器的流量。 注意: 仅当在优先级 p 上启用 PFC 时,此计数器才可用。请参阅 如何在 ConnectX-4 上配置 PFC。 | 信息性 |
| 在物理端口上以优先级 p 接收的暂停持续时间(微秒)。该计数器表示端口在此优先级上未发送任何流量的时间。如果此计数器正在增加,则表示网络拥塞,无法吸收来自适配器的流量。 注意: 仅当在优先级 p 上启用 PFC 时,此计数器才可用。请参阅 如何在 ConnectX-4 上配置 PFC。 | 信息性 |
| 在物理端口上优先级 p 上从 Xoff 到 Xon 的转换发生的次数。 注意: 仅当在优先级 p 上启用 PFC 时,此计数器才可用。请参阅 如何在 ConnectX-4 上配置 PFC。 | 信息性 |
| 在物理端口上以优先级 p 发送的暂停数据包数量。如果此计数器正在增加,则表示适配器拥塞,无法吸收来自网络的流量。 注意: 仅当在优先级 p 上启用 PFC 时,此计数器才可用。请参阅 如何在 ConnectX-4 上配置 PFC。 | 信息性 |
| 在物理端口上以优先级 p 发送暂停的持续时间(微秒)。 注意: 仅当在优先级 p 上启用 PFC 时,此计数器才可用。请参阅 如何在 ConnectX-4 上配置 PFC。 | 信息性 |
| 由于缺少每个主机的接收缓冲区,设备丢弃的数据包数量。 信息
内核 5.3 及更高版本支持。 | 信息性 |
| 由于每个主机的拥塞,设备丢弃的数据包数量。 信息
内核 5.3 及更高版本支持。 | 信息性 |
| 由于每个主机的拥塞,设备标记 ecn 的数据包数量。 信息
内核 5.3 及更高版本支持。 | 信息性 |
| 由于缺少接收缓冲区,设备丢弃的数据包数量。 信息
内核 5.6 及更高版本支持。 | 信息性 |
设备计数器
计数器 | 描述 | 类型 |
| 计数物理层 PCIe 信号完整性错误、由于帧错误和 CRC(dlp 和 tlp)而恢复的转换次数。 如果此计数器正在升高,请尝试将适配器卡移动到不同的插槽,以排除坏的 PCIe 插槽的可能性。验证您是否正在运行最新的固件和最新的服务器 BIOS 版本。 | 错误 |
| 计数物理层 PCIe 信号完整性错误、由另一侧发起的恢复转换次数(由于收到 TS/EIEOS 而移动到恢复)。 如果此计数器正在升高,请尝试将适配器卡移动到不同的插槽,以排除坏的 PCI 插槽的可能性。验证您是否正在运行最新的固件和最新的服务器 BIOS 版本。 | 错误 |
| 由于 pci 缓冲区溢出而丢弃的数据包数量。如果此计数器高速增长,则可能表明主机的接收流量速率大于 PCIe 总线,因此发生拥塞。 信息
内核 4.14 及更高版本支持。 | 信息性 |
| 在过去一秒内,NIC 有出站非发布读取请求,但由于发布信用不足而无法执行操作的时间百分比(范围 0...100)。 信息
内核 4.14 及更高版本支持。 | 信息性 |
| 在过去一秒内,NIC 有出站发布写入请求,但由于发布信用不足而无法执行操作的时间百分比(范围 0...100)。 信息
内核 4.14 及更高版本支持。 | 信息性 |
|
信息
内核 4.14 及更高版本支持。 | 信息性 |
|
信息
内核 4.14 及更高版本支持。 | 信息性 |
| 设备拥有的队列没有足够分配的缓冲区的次数。 | 错误 |
完整计数器列表
# ethtool -S eth5
NIC statistics:
rx_packets: 10
rx_bytes: 3420
tx_packets: 18
tx_bytes: 1296
tx_tso_packets: 0
tx_tso_bytes: 0
tx_tso_inner_packets: 0
tx_tso_inner_bytes: 0
tx_added_vlan_packets: 0
tx_nop: 0
rx_lro_packets: 0
rx_lro_bytes: 0
rx_ecn_mark: 0
rx_removed_vlan_packets: 0
rx_csum_unnecessary: 0
rx_csum_none: 0
rx_csum_complete: 10
rx_csum_unnecessary_inner: 0
rx_xdp_drop: 0
rx_xdp_redirect: 0
rx_xdp_tx_xmit: 0
rx_xdp_tx_full: 0
rx_xdp_tx_err: 0
rx_xdp_tx_cqe: 0
tx_csum_none: 18
tx_csum_partial: 0
tx_csum_partial_inner: 0
tx_queue_stopped: 0
tx_queue_dropped: 0
tx_xmit_more: 0
tx_recover: 0
tx_cqes: 18
tx_queue_wake: 0
tx_udp_seg_rem: 0
tx_cqe_err: 0
tx_xdp_xmit: 0
tx_xdp_full: 0
tx_xdp_err: 0
tx_xdp_cqes: 0
rx_wqe_err: 0
rx_mpwqe_filler_cqes: 0
rx_mpwqe_filler_strides: 0
rx_buff_alloc_err: 0
rx_cqe_compress_blks: 0
rx_cqe_compress_pkts: 0
rx_page_reuse: 0
rx_cache_reuse: 0
rx_cache_full: 0
rx_cache_empty: 2688
rx_cache_busy: 0
rx_cache_waive: 0
rx_congst_umr: 0
rx_arfs_err: 0
ch_events: 75
ch_poll: 75
ch_arm: 75
ch_aff_change: 0
ch_eq_rearm: 0
rx_out_of_buffer: 0
rx_if_down_packets: 15
rx_steer_missed_packets: 0
rx_vport_unicast_packets: 0
rx_vport_unicast_bytes: 0
tx_vport_unicast_packets: 0
tx_vport_unicast_bytes: 0
rx_vport_multicast_packets: 2
rx_vport_multicast_bytes: 172
tx_vport_multicast_packets: 12
tx_vport_multicast_bytes: 936
rx_vport_broadcast_packets: 37
rx_vport_broadcast_bytes: 9270
tx_vport_broadcast_packets: 6
tx_vport_broadcast_bytes: 360
rx_vport_rdma_unicast_packets: 0
rx_vport_rdma_unicast_bytes: 0
tx_vport_rdma_unicast_packets: 0
tx_vport_rdma_unicast_bytes: 0
rx_vport_rdma_multicast_packets: 0
rx_vport_rdma_multicast_bytes: 0
tx_vport_rdma_multicast_packets: 0
tx_vport_rdma_multicast_bytes: 0
tx_packets_phy: 0
rx_packets_phy: 0
rx_crc_errors_phy: 0
tx_bytes_phy: 0
rx_bytes_phy: 0
tx_multicast_phy: 0
tx_broadcast_phy: 0
rx_multicast_phy: 0
rx_broadcast_phy: 0
rx_in_range_len_errors_phy: 0
rx_out_of_range_len_phy: 0
rx_oversize_pkts_phy: 0
rx_symbol_err_phy: 0
tx_mac_control_phy: 0
rx_mac_control_phy: 0
rx_unsupported_op_phy: 0
rx_pause_ctrl_phy: 0
tx_pause_ctrl_phy: 0
rx_discards_phy: 0
tx_discards_phy: 0
tx_errors_phy: 0
rx_undersize_pkts_phy: 0
rx_fragments_phy: 0
rx_jabbers_phy: 0
rx_64_bytes_phy: 0
rx_65_to_127_bytes_phy: 0
rx_128_to_255_bytes_phy: 0
rx_256_to_511_bytes_phy: 0
rx_512_to_1023_bytes_phy: 0
rx_1024_to_1518_bytes_phy: 0
rx_1519_to_2047_bytes_phy: 0
rx_2048_to_4095_bytes_phy: 0
rx_4096_to_8191_bytes_phy: 0
rx_8192_to_10239_bytes_phy: 0
link_down_events_phy: 0
rx_prio0_bytes: 0
rx_prio0_packets: 0
tx_prio0_bytes: 0
tx_prio0_packets: 0
rx_prio1_bytes: 0
rx_prio1_packets: 0
tx_prio1_bytes: 0
tx_prio1_packets: 0
rx_prio2_bytes: 0
rx_prio2_packets: 0
tx_prio2_bytes: 0
tx_prio2_packets: 0
rx_prio3_bytes: 0
rx_prio3_packets: 0
tx_prio3_bytes: 0
tx_prio3_packets: 0
rx_prio4_bytes: 0
rx_prio4_packets: 0
tx_prio4_bytes: 0
tx_prio4_packets: 0
rx_prio5_bytes: 0
rx_prio5_packets: 0
tx_prio5_bytes: 0
tx_prio5_packets: 0
rx_prio6_bytes: 0
rx_prio6_packets: 0
tx_prio6_bytes: 0
tx_prio6_packets: 0
rx_prio7_bytes: 0
rx_prio7_packets: 0
tx_prio7_bytes: 0
tx_prio7_packets: 0
module_unplug: 0
module_bus_stuck: 0
module_high_temp: 0
module_bad_shorted: 0
ch0_events: 9
ch0_poll: 9
ch0_arm: 9
ch0_aff_change: 0
ch0_eq_rearm: 0
ch1_events: 23
ch1_poll: 23
ch1_arm: 23
ch1_aff_change: 0
ch1_eq_rearm: 0
ch2_events: 8
ch2_poll: 8
ch2_arm: 8
ch2_aff_change: 0
ch2_eq_rearm: 0
ch3_events: 19
ch3_poll: 19
ch3_arm: 19
ch3_aff_change: 0
ch3_eq_rearm: 0
ch4_events: 8
ch4_poll: 8
ch4_arm: 8
ch4_aff_change: 0
ch4_eq_rearm: 0
ch5_events: 8
ch5_poll: 8
ch5_arm: 8
ch5_aff_change: 0
ch5_eq_rearm: 0
rx0_packets: 0
rx0_bytes: 0
rx0_csum_complete: 0
rx0_csum_unnecessary: 0
rx0_csum_unnecessary_inner: 0
rx0_csum_none: 0
rx0_xdp_drop: 0
rx0_xdp_redirect: 0
rx0_lro_packets: 0
rx0_lro_bytes: 0
rx0_ecn_mark: 0
rx0_removed_vlan_packets: 0
rx0_wqe_err: 0
rx0_mpwqe_filler_cqes: 0
rx0_mpwqe_filler_strides: 0
rx0_buff_alloc_err: 0
rx0_cqe_compress_blks: 0
rx0_cqe_compress_pkts: 0
rx0_page_reuse: 0
rx0_cache_reuse: 0
rx0_cache_full: 0
rx0_cache_empty: 448
rx0_cache_busy: 0
rx0_cache_waive: 0
rx0_congst_umr: 0
rx0_arfs_err: 0
rx0_xdp_tx_xmit: 0
rx0_xdp_tx_full: 0
rx0_xdp_tx_err: 0
rx0_xdp_tx_cqes: 0
rx1_packets: 10
rx1_bytes: 3420
rx1_csum_complete: 10
rx1_csum_unnecessary: 0
rx1_csum_unnecessary_inner: 0
rx1_csum_none: 0
rx1_xdp_drop: 0
rx1_xdp_redirect: 0
rx1_lro_packets: 0
rx1_lro_bytes: 0
rx1_ecn_mark: 0
rx1_removed_vlan_packets: 0
rx1_wqe_err: 0
rx1_mpwqe_filler_cqes: 0
rx1_mpwqe_filler_strides: 0
rx1_buff_alloc_err: 0
rx1_cqe_compress_blks: 0
rx1_cqe_compress_pkts: 0
rx1_page_reuse: 0
rx1_cache_reuse: 0
rx1_cache_full: 0
rx1_cache_empty: 448
rx1_cache_busy: 0
rx1_cache_waive: 0
rx1_congst_umr: 0
rx1_arfs_err: 0
rx1_xdp_tx_xmit: 0
rx1_xdp_tx_full: 0
rx1_xdp_tx_err: 0
rx1_xdp_tx_cqes: 0
rx2_packets: 0
rx2_bytes: 0
rx2_csum_complete: 0
rx2_csum_unnecessary: 0
rx2_csum_unnecessary_inner: 0
rx2_csum_none: 0
rx2_xdp_drop: 0
rx2_xdp_redirect: 0
rx2_lro_packets: 0
rx2_lro_bytes: 0
rx2_ecn_mark: 0
rx2_removed_vlan_packets: 0
rx2_wqe_err: 0
rx2_mpwqe_filler_cqes: 0
rx2_mpwqe_filler_strides: 0
rx2_buff_alloc_err: 0
rx2_cqe_compress_blks: 0
rx2_cqe_compress_pkts: 0
rx2_page_reuse: 0
rx2_cache_reuse: 0
rx2_cache_full: 0
rx2_cache_empty: 448
rx2_cache_busy: 0
rx2_cache_waive: 0
rx2_congst_umr: 0
rx2_arfs_err: 0
rx2_xdp_tx_xmit: 0
rx2_xdp_tx_full: 0
rx2_xdp_tx_err: 0
rx2_xdp_tx_cqes: 0
...
tx0_packets: 1
tx0_bytes: 60
tx0_tso_packets: 0
tx0_tso_bytes: 0
tx0_tso_inner_packets: 0
tx0_tso_inner_bytes: 0
tx0_csum_partial: 0
tx0_csum_partial_inner: 0
tx0_added_vlan_packets: 0
tx0_nop: 0
tx0_csum_none: 1
tx0_stopped: 0
tx0_dropped: 0
tx0_xmit_more: 0
tx0_recover: 0
tx0_cqes: 1
tx0_wake: 0
tx0_cqe_err: 0
tx1_packets: 5
tx1_bytes: 300
tx1_tso_packets: 0
tx1_tso_bytes: 0
tx1_tso_inner_packets: 0
tx1_tso_inner_bytes: 0
tx1_csum_partial: 0
tx1_csum_partial_inner: 0
tx1_added_vlan_packets: 0
tx1_nop: 0
tx1_csum_none: 5
tx1_stopped: 0
tx1_dropped: 0
tx1_xmit_more: 0
tx1_recover: 0
tx1_cqes: 5
tx1_wake: 0
tx1_cqe_err: 0
tx2_packets: 0
tx2_bytes: 0
tx2_tso_packets: 0
tx2_tso_bytes: 0
tx2_tso_inner_packets: 0
tx2_tso_inner_bytes: 0
tx2_csum_partial: 0
tx2_csum_partial_inner: 0
tx2_added_vlan_packets: 0
tx2_nop: 0
tx2_csum_none: 0
tx2_stopped: 0
tx2_dropped: 0
tx2_xmit_more: 0
tx2_recover: 0
tx2_cqes: 0
tx2_wake: 0
tx2_cqe_err: 0
...
流量控制信息
以下 TC 对象受支持并报告有关入口过滤器的信息
过滤器
操作
信息以以下事件之一提供
基本过滤器事件
Flower/IPv4 过滤器事件
Flower/IPv6 过滤器事件
基本操作事件
Mirred 操作事件
Tunnel_key/IPv4 操作事件
Tunnel_key/IPv6 操作事件
通用说明
操作始终属于过滤器,因此操作事件通过
event_id
数据成员共享过滤器事件的 ID基本过滤器事件仅包含文本 kind(因此用户可以看到他们缺少哪些真实对象支持)
基本操作事件仅包含文本 kind 和一些基本通用统计信息(如果可用)
Amber 提供程序
amBER 格式的 InfiniBand 和以太网 MST 设备的 Amber 数据。
MST 设备名称可以在 /dev/mst/
下找到。
/dev/mst
应该可以在 DTS 容器内访问。
以下配置文件可用
amber_devices=DEV1,DEV2,DEV3 # Default:all, or set comma separated list of devices under /dev/mst
amber_update_interval_sec=30 # Sample rate for collection amber counters
PPCC_ETH 提供程序
可编程拥塞控制计数器基于最终用户定义的算法,尽管也提供默认算法。
计数器是按 MST 设备和算法参数收集的。
MST 设备名称可以在 /dev/mst/
下找到。
/dev/mst
应该可以在 DTS 容器内访问。
计数器列表取决于安装的 MFT 版本。
/usr/lib64/mft
或 /usr/lib/mft
应该挂载到 DTS 容器以根据安装的 MFT 版本获取计数器列表。如果未挂载,则使用计数器的内部 DTS 版本。
需要以逗号分隔的设备名称列表才能启用此提供程序
ppcc_eth_devices=mt41692_pciconf0,mt41692_pciconf0.1
以下算法参数可用
ppcc_algo_slot=1
ppcc_algo_param_index=0
local_port=1
pnat=0
lp_msb=0
有关更多详细信息,请查阅官方 PPCC 文档。
某些 algo_slots
未实现
如果没有要收集的计数器,则忽略该设备
如果没有要收集的设备,则禁用该提供程序
Fluent 聚合器
fluent_aggr
侦听端口以获取 Fluent Bit Forward 协议 输入连接。接收到的数据可以通过 Fluent Bit 导出器进行流式传输。
默认端口为 42442。可以通过更新以下选项来更改此端口
fluent-aggr-port=42442
Prometheus 聚合器
prometheus_aggr
从 Prometheus 端点列表轮询数据。
每个端点都以下列格式列出
prometheus_aggr_endpoint.{N}={host_name},{host_port_url},{poll_inteval_msec}
其中 N 从 0 开始。
聚合数据可以通过 Prometheus Aggr 导出器端点导出。
网络接口
ifconfig
收集网络接口数据。要启用,请设置
enable-provider=ifconfig
如果启用了 Prometheus 端点,请添加以下配置以缓存每个收集的网络接口并根据其名称排列索引
prometheus-fset-indexes=name
指标是为每个网络接口收集的,如下所示
name
rx_packets
tx_packets
rx_bytes
tx_bytes
rx_errors
tx_errors
rx_dropped
tx_dropped
multicast
collisions
rx_length_errors
rx_over_errors
rx_crc_errors
rx_frame_errors
rx_fifo_errors
rx_missed_errors
tx_aborted_errors
tx_carrier_errors
tx_fifo_errors
tx_heartbeat_errors
tx_window_errors
rx_compressed
tx_compressed
rx_nohandler
HCA 性能
hcaperf
收集 HCA 性能数据。由于它需要访问 RDMA 设备,因此必须在 BlueField 上使用 远程收集。在主机上,用户以特权模式运行容器并挂载 RDMA 设备。
计数器列表取决于设备。
hcaperf DPU 配置
要在 远程收集 模式下启用 hcaperf
,请设置
enable-provider=grpc.hcaperf
# specify HCAs to sample
grpc.hcaperf.mlx5_0=sample
grpc.hcaperf.mlx5_1=sample
DPE 服务器应在更改 dts_config.ini
文件之前处于活动状态。有关详细信息,请参阅“远程采集”部分。
hcaperf 主机配置
要在常规模式下启用 hcaperf
,请设置
enable-provider=hcaperf
# specify HCAs to sample
hcaperf.mlx5_0=sample
hcaperf.mlx5_1=sample
NVIDIA 系统管理界面
nvidia-smi
提供程序收集 NVIDIA 系统管理界面提供的 GPU 和 GPU 进程信息。
此提供程序仅在安装了 GPU 的 x86_64 主机上受支持。此提供程序支持 nvidia-smi
支持的所有 GPU 卡。
计数器列表取决于 GPU。此外,还为前 20 个(默认情况下)nvidia_smi_max_processes
进程收集每个进程的信息。
当设置 nvsmi_with_numeric_fields
时,计数器可以作为字符串数据“按原样”在 nvidia-smi
中收集,也可以转换为数字。
要启用 nvidia-smi
提供程序并更改参数,请设置
enable-provider=nvidia-smi
# Optional parameters:
#nvidia_smi_max_processes=20
#nvsmi_with_numeric_fields=1
NVIDIA 数据中心 GPU 管理器
dcgm
提供程序收集 NVIDIA 数据中心 GPU 管理器 (DCGM) API 提供的 GPU 信息。
此提供程序仅在安装了 GPU 的 x86_64 主机上受支持,并且需要运行 nv-hostengine
服务(有关详细信息,请参阅 DCGM 文档)。
DCGM 计数器按上下文分为多个组
GPU – 基本 GPU 信息(始终)
COMMON – 可以从所有设备收集的通用字段
PROF – 分析字段
ECC – ECC 错误
NVLINK / NVSWITCH / VGPU – 取决于设备类型的字段
要启用 DCGM 提供程序和计数器组,请设置
enable-provider=dcgm
dcgm_events_enable_common_fields=1
#dcgm_events_enable_prof_fields=0
#dcgm_events_enable_ecc_fields=0
#dcgm_events_enable_nvlink_fields=0
#dcgm_events_enable_nvswitch_fields=0
#dcgm_events_enable_vgpu_fields=0
BlueField 性能
bfperf
提供程序收集 BlueField Arm 核心的计算性能计数器。它需要可执行文件 bfperf_pmc
,该文件集成在 BlueField-3 的 DOCA BFB 捆绑包中,以及活动的 DPE。
要启用 BlueField 性能提供程序,请设置
enable-provider=bfperf
运行时,bfperf
提供程序应定期重置 sysfs.hwmon
组件的计数器。如果启用了 bfperf
,请考虑禁用它。
诊断数据
诊断数据由两个提供程序组成,它们从网络接口卡 (NIC) 收集诊断数据计数器。这些提供程序支持相同的计数器(如 YAML 文件 中定义),但它们的用法和收集频率不同
fwctl
和 mlx5_fwctl
驱动程序(在 NVIDIA BlueField-3 和 ConnectX-7 及更高版本的网络设备上受支持)是固件交互所必需的,并且是 MLNX_OFED 驱动程序的一部分。要加载它们,请运行
modprobe -a fwctl mlx5_fwctl
此提供程序利用 DOCA Telemetry 库进行数据收集。两个提供程序都从 YAML 文件 获取计数器集。
诊断数据低频
要启用诊断数据低频提供程序,请设置
enable-provider=diagnostic_data_low_freq
要验证 YAML 文件名是否与连接的 NIC 类型匹配
diagnostic-data-yml-file=/config/diagnostic_data_configs/all-single-port.yml
要配置诊断数据时间戳收集类型,请设置以下内容
diagnostic-data-timestamp-collection-type=<method>
其中 <method>
可以是以下之一
no_counters
– 不收集时间戳计数器。默认值。start_and_end
– 收集样本开始和结束时间戳per_counter
– 收集每个计数器收集时间戳
要配置固件在收集时间戳时应使用的时钟,请设置以下内容
diagnostic-data-timestamp-source=<clock>
其中 <clock>
可以是以下之一
RTC
- 实时时钟。默认值。RFC
- 自由运行时钟
诊断数据高频
诊断数据高频提供程序支持更高的采样频率和亚毫秒级分辨率,从而实现详细而精确的遥测数据收集。由于收集的数据量很大,因此此提供程序旨在临时运行有限的时间段,这与通过 /opt/mellanox/doca/services/telemetry/config/dts_config.ini
的 DTS 配置文件配置的标准 DTS 提供程序不同。
虽然标准 DTS 流程充当无休止的收集-导出循环,但高频遥测 (HFT) 作为由 HFT 配置文件触发的外部流程运行,该文件位于 /opt/mellanox/doca/services/telemetry/config/clx_ad_hoc_runner_config.ini
。
此配置文件指定 HFT 会话的计时参数、提供程序设置和导出配置。HFT 允许将数据导出到与标准 DTS 收集循环中使用的端点或协议不同的端点或协议。DTS 配置将 HFT 配置文件引用为“ad hoc runner”,使 DTS 可以通过以下指令监视其状态
ad-hoc-runner-file=/config/clx_ad_hoc_runner_config.ini
HFT 配置文件既充当 HFT 会话的触发器又充当其定义。修改文件会停止当前会话,并将新配置应用于下一个会话。删除文件将完全停止任何挂起的 HFT 会话。
必需的 HFT 参数
下表提供了必需的 HFT 参数的详细信息。有关更多有用的提示,请参阅“HFT 配置文件示例”部分。
选项 | 描述 |
| HFT 会话开始时间。如果未使用,会话将立即开始。 UTC 纪元时间戳(以微秒为单位)。语法:HH:MM:SS / HH:MM |
| HFT 会话结束时间。如果缺少 如果未使用,则使用 UTC 纪元时间戳(以微秒为单位)。语法:HH:MM:SS / HH:MM |
| 迭代次数。 如果未使用,则需要 |
| 迭代之间的时间间隔(以微秒为单位) |
| 要使用的提供程序。应为 |
| 是否将收集的遥测数据写入文件。 如果启用,则可能每秒写入几 MB 的数据。 |
| 文件写入的根文件夹。 如果 |
| 一次迭代中要收集的样本数。 影响固件用于诊断数据的缓冲区。 |
| 采样周期(纳秒)。 此选项指定每次迭代的采样间隔,因为 provider 在每次迭代期间收集 N 个样本。 |
| 要使用的诊断数据计数器 YAML 文件 |
Provider 兼容性
低频和高频 provider 可以同时运行。低频 provider 以 DTS 标准频率(在 dts_config.ini
中定义)进行采样,而高频 provider 则根据 HFT 配置文件( dts_high_freq_config.ini
)对计数器进行采样。
为了允许两个 provider 同时运行,请验证计数器、时间戳收集类型和时间戳收集源是否相同。否则,当高频 provider 开始采样时,低频 provider 将挂起,直到 HFT 会话结束。
HFT 配置文件示例
## DTS configuration file for
ad-hoc high frequency collection
## When modified, the file is parsed and applied.
## Note that the folders path is the container path, not the host path.
## Each section defines a collection. A file may have several sections, each one defines a high frequency collection.
## Section names must be unique and will be used as collection name by clx.
[hft-collection-session]
### Time between samples in microseconds
sample-time-us=100000
### Start time of high frequency collection. Can be in the format HH:MM:SS or HH:MM or as epoch timestamp in microseconds
### Note - in container, the time is in UTC
start-time=18
:00
:00
### End time of high frequency collection. Can be in the format HH:MM:SS or HH:MM or as epoch timestamp in microseconds
### Note - in container, the time is in UTC
end-time=18
:01
:00
### Alternatively, you can set the number of iterations. This and start_time field will determine the end time
#num-iterations=300
### Data provider to use
provider=diagnostic_data_high_freq
### Write data to file system. Could potentially fill up the disk
file-write=false
### Root directory to store the data
# Ignored if
file-write is set to false
data-root=/data
### Enable busy wait between iterations, for
a more accurate sample time (default
is false
)
#busy-wait-sampling=true
### Set prometheus endpoint to enable http endpoint
#prometheus-endpoint=http://0.0.0.0:9112
### Set fluentbit config dir to enable fluentbit export
#fluentbit-config-dir=/config/fluent_bit_configs
### Set open telemetry receiver to enable open telemetry export
#open-telemetry-receiver=http://0.0.0.0:9502/v1/metrics
### Set remote write receiver to enable remote write export
#remote-write-receiver=http://0.0.0.0:9090/api/v1/write
### Provider specific parameters. Format is 'provider.$KEY=$VALUE'
.
### The options below are specific to the diagnostic data high frequency provider
# Number of samples to collect on each iteration
provider.diagnostic-data-num-samples=1000
# The time period (in nanoseconds) between samples
provider.diagnostic-data-sample-period-nsec=100000
# The YAML file with the configuration for
the diagnostic data provider
provider.diagnostic-data-yml-file=/config/diagnostic_data_configs/all-single-port.yml
# Diagnostic Data timestamp collection type. Options are ['no_counters'
, 'start_and_end'
, 'per_counter'
]. default
: 'no_counters'
#provider.diagnostic-data-timestamp-collection-type=start_and_end
# Diagnostic Data timestamp source. Options are ['RTC'
, 'FRC'
]. default
: 'RTC'
#provider.diagnostic-data-timestamp-source=FRC
诊断数据 YAML 文件
为了与其他相关工具兼容,计数器集以 YAML 格式定义。
DTS 容器内有 4 个 YAML 文件(每个文件对应 BlueField-3 和 ConnectX-7 的双端口或单端口排列)。YAML 文件夹的路径为 /opt/mellanox/doca/services/telemetry/config/diagnostic_data_configs
,它被挂载到 /config/diagnostic_data_configs
。
默认情况下,YAML 文件包含一个非设备特定的计数器集。这意味着默认情况下所有设备都使用相同的计数器集。
可以在 YAML 文件中分配特定设备;但是,这需要为每个设备维护 YAML 文件的单独副本。要管理多个设备,请使用 diagnostic-data-yml-dir
选项来指定 YAML 文件的目录,其中每个 .yml
/.yaml
文件都会被使用。此文件夹应在容器中 /opt/mellanox/doca/services/telemetry/config
下可用。
以下列表描述了 YAML 文件中预期的条目
counters
– 要收集的计数器序列id
– 计数器数据 IDdesc
– 计数器描述(可选)unit
– 要从中收集的单元名称(可选)name
– 要使用的计数器名称(可选)。如果未指定,则生成的名称基于计数器描述。否则,它基于数据 ID。
device
– 要收集的 mlx 设备的名称(可选)。如果未使用,则 provider 需要一个包含计数器列表的单个文件,然后将其应用于主机上的所有可用设备。
YAML 文件示例
以下是 DTS 提供的 all-dual-port.yml
文件的内容
counters:
- id: 0x1020000100000000
name: port_rx_bytes_0
- id: 0x1020000100000001
name: port_rx_bytes_1
- id: 0x1020000300000000
name: port_rx_packets_0
- id: 0x1020000300000001
name: port_rx_packets_1
- id: 0x1140000100000000
name: port_tx_bytes_0
- id: 0x1140000100000001
name: port_tx_bytes_1
- id: 0x1140000300000000
name: port_tx_packets_0
- id: 0x1140000300000001
name: port_tx_packets_1
- id: 0x1100000100000000
name: port_tx_transport_cnp_sent_packets_0
- id: 0x1100000100000001
name: port_tx_transport_cnp_sent_packets_1
- id: 0x1080000500000000
name: port_rx_transport_cnp_handled_packets_0
- id: 0x1080000500000001
name: port_rx_transport_cnp_handled_packets_1
- id: 0x1080000400000000
name: port_rx_transport_ecn_packets_0
- id: 0x1080000400000001
name: port_rx_transport_ecn_packets_1
- id: 0x1160000b00000000
name: pcie_link_latency_total_read_ns
- id: 0x1160000c00000000
name: pcie_link_latency_total_read_packets
- id: 0x1160000d00000000
name: pcie_link_latency_max_read_ns
- id: 0x1160000e00000000
name: pcie_link_latency_min_read_ns
- id: 0x1180000100000000
name: global_icmc_request
- id: 0x1180000200000000
name: global_icmc_hit
- id: 0x1180000300000000
name: global_icmc_miss
NVIDIA Adapters Programmer's Reference Manual (PRM) “Diagnostic Data” 部分定义了数据 ID 以及计数器集的规则。
RDMA 通知
RDMA 通知事件 provider 从 RDMA 固件收集通知,并将其转换为 DTS 事件以用于遥测目的。
要启用 RDMA 通知 provider,请将以下行添加到 DTS 配置文件 (/opt/mellanox/doca/services/telemetry/config/dts_config.ini
)
enable-provider=rdma_notifications
先决条件
RDMA 设备配置为以以太网协议运行
已安装 OFED
ConnectX-7 或 BlueField-3 及更高版本
固件版本 x.44.0820 或更高版本
选项
名称 | 描述 | 类型 | 默认 | 注释 |
| 用于接收 QP 的 HCA,多个 HCA 用逗号分隔 | 字符串 |
| |
| 事件索引的数量 | 整数 |
| 如果用户想要存储每种类型的最后 N 个事件,则此选项与 Prometheus 导出相关。 为了正确索引 Prometheus 导出,请添加配置选项 |
| QP 使用的缓冲区数量 | 整数 |
|
|
| QP 使用的每个缓冲区的大小 | 整数 |
|
|
| 导出综合征计数器事件的间隔(秒) | 整数 |
| 请参阅事件类型部分中的“计数器事件”。 |
| 如果没有找到事件,则导出综合征计数器事件 | 布尔值 |
| 可能存在 2^7 种事件类型。如果启用,则每 |
| 在 RDMA 遥测对象中设置相应的字段 | 布尔值 |
| |
| vport 范围的数量 | 整数 |
| 可能与 |
| RDMA 遥测对象中的 Vport 范围最大 ID(包含) | 整数 |
| 此行适用于 4 个不同的选项。每行使用一个索引。 示例: |
| RDMA 遥测对象中的 Vport 范围最大 ID(包含) | 整数 |
| 此行适用于 4 个不同的选项。每行使用一个索引。 示例: |
事件列表
RDMA 通知提供两种类型的事件
通知事件 – 根据通知内容直接将 RDMA 通知转换为四种可能的事件类型之一
计数器事件 – 定期聚合事件,报告为每个综合征收集的事件总数
有关更多详细信息,请参阅 NVIDIA Adapters Programmer's Reference Manual (PRM) 中的“RDMA Telemetry Notifications”部分。
目前,仅支持带有错误的 CQE 类型的 RDMA 通知。
通知事件
为方便起见,提供了其他字段
guid
– 设备的全局唯一标识符idx
– 事件索引,由 provider 选项rdma-notifications-num-event-indexes
确定device_name
– RDMA 设备的名称,基于rdma-notifications-hca
中列出的设备
这些字段未在 NVIDIA Adapters PRM 中指定,但包含在事件数据中以增强可用性。
cqe_with_error_responder_ipv4
telemetry_counter
msn
syndrome
qp_type
vport_id
source_qpn
destination_qpn
psn
timestamp
dest_ipv4
node_guid
idx
device_name
cqe_with_error_responder_ipv6
telemetry_counter
msn
syndrome
qp_type
vport_id
source_qpn
destination_qpn
psn
timestamp
dest_ipv6
node_guid
idx
device_name
cqe_with_error_requestor_ipv4
telemetry_counter
msn
syndrome
opcode
qp_type
vport_id
source_qpn
destination_qpn
psn
timestamp
dest_ipv4
node_guid
idx
device_name
cqe_with_error_requestor_ipv6
telemetry_counter
msn
syndrome
opcode
qp_type
vport_id
source_qpn
destination_qpn
psn
timestamp
dest_ipv6
node_guid
idx
device_name
计数器事件
描述每个设备每个综合征的事件数量。
cqe_with_error_syndrome_counter
syndrome
device_name
node_guid
CQEwE_events
数据输出
DTS 可以将收集的数据发送到以下输出
数据写入器(将二进制数据保存到磁盘)
Prometheus 端点(保留要拉取的最新数据)
Fluent Bit(推送模型流式传输)
Open Telemetry exporter(推送模型流式传输)
Prometheus Remote write exporter(推送模型流式传输)
数据写入器
默认情况下禁用数据写入器,以节省 BlueField 上的空间。有关在调试期间激活数据写入的步骤,请参见 启用数据写入 部分。
schema 文件夹包含 JSON 格式的元数据文件,这些文件允许读取包含实际数据的二进制文件。二进制文件根据以下示例中显示的命名约定写入 (apt install tree
)
tree /opt/mellanox/doca/services/telemetry/data/
/opt/mellanox/doca/services/telemetry/data/
├── {year}
│ └── {mmdd}
│ └── {hash}
│ ├── {source_id}
│ │ └── {source_tag}{timestamp}.bin
│ └── {another_source_id}
│ └── {another_source_tag}{timestamp}.bin
└── schema
└── schema_{MD5_digest}.json
当服务启动或达到二进制文件年龄/大小限制时,会出现新的二进制文件。如果不存在 schema 或 data 文件夹,请参阅 故障排除 部分。
source_id
通常设置为机器主机名。source_tag
是一行描述收集的计数器的行,通常设置为 provider 的名称或用户计数器的名称。
可以使用以下命令从 DTS 容器内完成二进制数据的读取
crictl exec -it <Container ID> /opt/mellanox/collectx/bin/clx_read -s /data/schema /data/path/to/datafile.bin
数据文件的路径必须是绝对路径。
示例输出
{
"timestamp": 1634815738799728,
"event_number": 0,
"iter_num": 0,
"string_number": 0,
"example_string": "example_str_1"
}
{
"timestamp": 1634815738799768,
"event_number": 1,
"iter_num": 0,
"string_number": 1,
"example_string": "example_str_2"
}
…
Prometheus
Prometheus 端点保留要由 Prometheus 服务器拉取的最新数据,并且默认情况下处于启用状态。
要检查数据是否可用,请在 BlueField 上运行以下命令
curl -s http://0.0.0.0:9100/metrics
该命令以以下格式转储每个计数器
counter_name {list of meta fields} counter_value timestamp
此外,端点支持 JSON 和 CSV 格式
curl -s http://0.0.0.0:9100/json/metrics
curl -s http://0.0.0.0:9100/csv/metrics
Prometheus 的默认端口可以在 dts_config.ini
中更改。
配置详情
Prometheus 配置为 dts_config.ini
的一部分。
默认情况下,Prometheus HTTP 端点设置为端口 9100。注释掉此行以禁用 Prometheus 导出。
prometheus=http://0.0.0.0:9100
Prometheus 可以使用数据字段作为索引,以保留具有不同索引值的多个数据记录。索引字段添加到 Prometheus 标签。
# Comma-separated counter set description for Prometheus indexing:
#prometheus-indexes=idx1,idx2
# Comma-separated fieldset description for prometheus indexing
#prometheus-fset-indexes=idx1,idx2
默认的 fset
索引是 device_name
。它允许 Prometheus 为 p0
和 p1
设备保留 ethtool 数据。
prometheus-fset-indexes=device_name
如果未设置 fset
索引,则来自 p1
的数据将覆盖 p0
的数据。
为了快速名称过滤,Prometheus exporter 支持提供要忽略的计数器名称的逗号分隔列表
#prometheus-ignore-names=counter_name1,counter_name_2
为了按标签快速过滤数据,Prometheus exporter 支持提供要忽略的数据源标签的逗号分隔列表。
用户应为所有流式数据添加标签,因为 Prometheus exporter 不能用于流式传输。默认情况下,FI_metrics
已禁用。
prometheus-ignore-tags=FI_metrics
Prometheus Aggregator Exporter
Prometheus aggregator exporter 是一个端点,它使用 prometheus_aggr
保留最新的聚合数据。
此 exporter 根据其来源标记数据。
要启用此 provider,用户必须在 dts_config.ini
中设置 2 个参数
prometheus-aggr-exporter-host=0.0.0.0
prometheus-aggr-exporter-port=33333
Fluent Bit
Fluent Bit 允许流式传输到多个目标。目标在 .exp
文件中配置,这些文件已就地记录,可以在以下位置找到
/opt/mellanox/doca/services/telemetry/config/fluent_bit_configs
Fluent Bit 允许通过“Forward”协议导出数据,该协议连接到客户侧的 Fluent Bit/FluentD 实例。
可以手动启用导出
取消注释
dts_config.ini
中的fluent_bit_configs=…
行。在所需的
.exp
文件中为所需的插件设置enable=1
。如果需要,可以根据
.exp
文件中的说明设置其他配置。重启 DTS。
如果需要,设置 Fluent Bit/FluentD 的接收实例。
查看接收端的数据。
导出文件目标通过配置 .exp
文件或创建新文件来设置。建议首先查看记录的示例文件。记录的示例文件存在于以下受支持的插件中
forward
file
stdout
kafka
es (elastic search)
influx
如果未通过 .yaml
文件通过 initContainer
入口点配置所有 .exp
文件,则默认情况下禁用它们。
要将数据转发到多个目标,请创建多个 forward_{num}.exp
文件。这些文件中的每个文件都必须有自己的目标主机和端口。
导出文件配置详情
每个导出目标都具有以下字段
name
– 配置名称plugin_name
– Fluent Bit 插件名称enable
– 1 或 0 值,用于启用/禁用此目标host
– Fluent Bit 插件的主机port
– Fluent Bit 插件的端口msgpack_data_layout
– msgpacked 数据格式。默认为flb_std
。另一个选项是 custom。有关详细信息,请参阅 Msgpack 数据布局 部分。plugin_key=val
– Fluent Bit 插件参数的键值对(可选)counterset
/fieldset
– 文件路径(可选)。有关详细信息,请参阅 Cset/Fset 过滤 部分。source_tag=source_tag1,source_tag2
– 用于过滤的数据页源标签的逗号分隔列表。其余标签在导出期间被过滤掉。事件标签是事件 provider 名称。所有计数器只能与counters
关键字同时启用/禁用。
使用 #
注释配置行。
Msgpack 数据布局
可以使用 .exp
文件通过设置 msgpack_data_layout=layout
来配置数据布局。有两种可用的布局:Standard 和 Custom。
标准的 flb_std
数据布局是一个包含 2 个字段的数组
时间戳双精度值
纯字典(键值对)
标准布局适用于所有 Fluent Bit 插件。例如
[timestamp_val, {"timestamp"->ts_val, type=>"counters/events", "source"=>"source_val", "key_1"=>val_1, "key_2"=>val_2,...}]
自定义数据布局是元字段和计数器字段的字典。值被放入单独的纯字典中。可以使用安装的 Fluent-Bit 的 stdout_raw
输出插件转储自定义数据格式,也可以使用 forward
输出插件转发自定义数据格式。
计数器示例
{"timestamp"=>timestamp_val, "type"=>"counters", "source"=>"source_val", "values"=> {"key_1"=>val_1, "key_2"=>val_2,...}}
事件示例
{"timestamp"=>timestamp_val, "type"=>"events", "type_name"=>"type_name_val", "source"=>" source_val", "values"=>{"key_1"=>val_1, "key_2"=>val_2,...}}
Cset/Fset 过滤
每个导出文件都可以选择使用一个 cset
和一个 fset
文件来过滤 DTS 计数器和事件数据。
cset
每行包含令牌,用于过滤"type"="counters"
的数据。fset
包含多个块,这些块以标题行[event_type_name]
开头,并在该标题下包含令牌。Fset 文件用于过滤"type"="events"
的数据。注意事件类型名称可以添加前缀,以便将相同的令牌应用于所有合适的类型。例如,要过滤所有 ethtool 事件,请使用
[ethtool_event_*]
。
如果必须同时匹配多个令牌,请使用 <tok1>+<tok2>+<tok3>
。排他令牌也可用。例如,行 <tok1>+<tok2>-<tok3>-<tok4>
过滤同时匹配 tok1 和 tok2 且不匹配 tok3 或 tok4 的名称。
以下是编写 cset
文件的详细信息
# Put tokens on separate lines
# Tokens are the actual name 'fragments' to be matched
# port$ # match names ending with token "port"
# ^port # match names starting with token "port"
# ^port$ # include name that is exact token "port
# port+xmit # match names that contain both tokens "port" and "xmit"
# port-support # match names that contain the token "port" and do not match the "-" token "support"
#
# Tip: To disable counter export put a single token line that fits nothing
以下是编写 fset
文件的详细信息
# Put your events here
# Usage:
#
# [type_name_1]
# tokens
# [type_name_2]
# tokens
# [type_name_3]
# tokens
# ...
# Tokens are the actual name 'fragments' to be matched
# port$ # match names ending with token "port"
# ^port # match names starting with token "port"
# ^port$ # include name that is exact token "port
# port+xmit # match names that contain both tokens "port" and "xmit"
# port-support # match names that contain the token "port" and do not match the "-" token "support"
# The next example will export all the "tc" events and all events with type prefix "ethtool_" "ethtool" are filtered with token "port":
# [tc]
#
# [ethtool_*]
# packet
# To know which event type names are available check export and find field "type_name"=>"ethtool_event_p0"
# ...
# Corner cases:
# 1. Empty fset file will export all events.
# 2. Tokens written above/without [event_type] will be ignored.
# 3. If cannot open fset file, warning will be printed, all event types will be exported.
NetFlow 导出器
当数据作为 NetFlow 数据包从遥测客户端应用程序收集时,必须使用 NetFlow exporter。在这种情况下,DOCA Telemetry Exporter NetFlow API 通过 IPC 向 DTS 发送 NetFlow 数据包。DTS 使用 NetFlow exporter 将数据发送到 NetFlow 收集器(第三方服务)。
要启用 NetFlow exporter,请在 dts_config.ini
中设置 netflow-collector-ip
和 netflow-collector-port
。netflow-collector-ip
可以设置为 IP 或地址。
有关更多信息,请参阅 dts_config.ini
文件。
Open Telemetry Exporter
DTS 能够使用基于 HTTP 的 OTLP 指标协议将遥测数据流式传输到 Open Telemetry 接收器。
默认情况下禁用 Open Telemetry exporter,可以通过 dts_config.ini
进行配置。
要以指标形式启用遥测数据流式传输,请设置 OTLP 数据流式传输的目标(即 Open Telemetry 接收器)
open-telemetry-receiver=http://0.0.0.0:9502/v1/metrics
此示例期望正在运行的 Open Telemetry 接收器绑定到运行 DTS 实例的主机上的端口 9502。 “Open Telemetry Metrics Receiver Sample Configuration”部分提供了 Open Telemetry 接收器配置的示例。
OTLP exporter 实现仅限于基于 HTTP 的通信,数据有效负载采用 JSON 格式。
Open Telemetry exporter 可以配置为将计数器集或字段集应用于数据流,类似于 Fluent Bit exporter
open-telemetry-counter-set=slow_counters
open-telemetry-field-set=slow_counters
Open Telemetry exporter 以批量形式发送数据,尽可能组合突发。默认情况下,批量大小最多为 100 个数据点。如果需要,可以使用 open-telemetry-bulk-size
配置参数更改批量大小。例如
open-telemetry-bulk-size=20
Open Telemetry Metrics Receiver Sample Configuration
以下是 Open Telemetry 服务器配置文件示例 (collector-config.yaml
)
receivers:
otlp:
protocols:
http:
endpoint: 0.0
.0.0
:9502
exporters:
debug:
verbosity: detailed
service:
pipelines:
metrics:
receivers: [otlp]
exporters: [debug]
要运行 Open Telemetry 实例
docker run --rm
--name "$(whoami)_open_telemetry"
-p 9502:9502 \
-v
$(pwd
)/data:/data -v
$(pwd
)/collector-config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector
Prometheus Remote Write Exporter
DTS 可以将遥测数据流式传输到启用了指标接收器的外部 Prometheus 服务。如果启用,DTS 数据 exporter 将充当 Prometheus remote write 协议“Sender”,使用 remote write 协议将遥测数据流式传输到 Prometheus 服务器。
有关更多信息,请参阅 Prometheus Remote Write Specification。
要启用遥测数据流式传输
remote-write-receiver=http://0.0.0.0:9090/api/v1/write
此示例假定正在运行的 Prometheus remote write 接收器绑定到运行 DTS 实例的主机上的端口 9090。
例如,可以使用以下命令运行 Prometheus remote write 接收器
docker run -p 9090:9090 prom/prometheus --config.file
=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/prometheus --web.console.libraries=/usr/share/prometheus/console_libraries \
--web.console.templates=/usr/share/prometheus/consoles --web.enable
-remote-write-receiver
Prometheus remote write exporter 可以配置为将计数器集或字段集应用于数据流,类似于 Open Telemetry exporter
remote-write-counter-set=slow_counters
remote-write-field-set=slow_counters
Prometheus remote write exporter 以批量形式发送数据,尽可能组合突发。默认情况下,批量大小最多为 100 个数据点。如有必要,可以使用 bulk-size 配置参数更改批量大小。例如
remote-write-bulk-size=20
负载均衡器导出器
负载均衡器 exporter 是一个 exporter,它在另一个(辅助)exporter 的多个实例之间分配或复制数据。
负载均衡器 exporter 插件使用配置变量进行自定义,这些变量可能来自配置文件、环境或命令行。
例如,实例的数量可以根据用例按如下方式设置
配置文件中的行 –
loadbalancer-num-instances=5
命令行选项 –
-X loadbalancer-num-instances=5
环境变量 –
CLX_LOADBALANCER_NUM_INSTANCES=5
信息在此实例中,变量名称中的破折号 (
-
) 替换为下划线 (_
),并添加CLX_
前缀。
变量 | 描述 | 默认 | 示例 | 必需 |
| 用于搜索要由负载均衡器加载的辅助 exporter 的目录 |
|
| 否 |
| 要加载的辅助 exporter 的名称 | N/A |
| 是 |
| 要创建的辅助 exporter 实例数 | N/A |
| 是 |
| 用于替换辅助 exporter 实例的变量名称 | N/A |
| 否 |
| 负载均衡模式。可能的值: |
|
| 否 |
如果缺少任何必需的变量,则负载均衡器不会启动。
loadbalancer-exporter-config-var
是另一个配置变量的名称,该变量将替换所有辅助 exporter 实例。例如
如果
loadbalancer-exporter-config-var=open-telemetry-receiver
且loadbalancer-num-instances=3
,则实例配置变量open-telemetry-receiver-0
、open-telemetry-receiver-1
和open-telemetry-receiver-2
应该存在,并且open-telemetry-receiver
配置变量的值将替换为第一个辅助 exporter 实例的open-telemetry-receiver-0
值,第二个实例的open-telemetry-receiver-1
值,依此类推。如果
loadbalancer-exporter-config-var
不存在,则所有实例都是平等创建的,并且它们的配置根据其他可用的配置完成。如果任何实例配置变量不存在,则使用其他可用配置创建该实例。
以下是 dts_config.ini
配置文件的节,其中提供了一个启用负载均衡器以运行 2 个 OTLP exporter 实例的示例
loadbalancer-exporter-name=open_telemetry
loadbalancer-num-instances=2
loadbalancer-exporter-config-var=open-telemetry-receiver
loadbalancer-mode=replicate
open-telemetry-receiver-0=http://10.141.160.210:9502/v1/metrics
open-telemetry-receiver-1=http://10.141.160.211:9502/v1/metrics
DOCA 特权执行器 (DPE) 是一个守护程序,它使特定的 DOCA 服务(包括 DTS)能够访问 BlueField 信息,否则由于技术限制或受限权限而无法从容器访问这些信息。通过授予对特权系统信息的访问权限,DPE 丰富了 DTS 收集的数据,从而提供额外的见解和指标。但是,DTS 仍然可以在没有 DPE 的情况下独立运行,因为默认情况下该守护程序处于禁用状态。
DPE 仅在基于 Debian 的操作系统上可用。
DPE 用法
DPE 由 systemd 控制,可以按如下方式使用
检查 DPE 状态
sudo systemctl status dpe
启动 DPE
sudo systemctl start dpe
停止 DPE
sudo systemctl stop dpe
DPE 日志可以在 /var/log/doca/telemetry/dpe.log
中找到。
DPE 配置文件
DPE 可以由用户配置。本节介绍其配置文件的语法和含义。
DTS 收集的 DPU 遥测数据不需要使用此配置文件。
DPE 配置文件允许用户定义 DPE 应支持的命令集。这可以通过在 /etc/systemd/system/dpe.service
的以下行中传递 -f
选项来完成
ExecStart=/opt/mellanox/doca/services/telemetry/dpe/bin/dpeserver -vvv
要使用配置文件
ExecStart=/opt/mellanox/doca/services/telemetry/dpe/bin/dpeserver -vvv -f /path/to/dpe_config.ini
配置文件支持以下部分
[server]
- 常规服务器配置的 key=value 行列表。允许的键:socket
。[commands]
- 不使用自定义 RegEx 的 bash 命令行列表[commands_regex]
- 使用自定义 RegEx 的 bash 命令行列表[regex_macros]
-commands_regex
部分中使用的自定义 RegEx 定义
考虑以下示例配置文件
[server]
socket=/tmp/dpe.sock
[commands]
hostname
cat /etc/os-release
[commands_regex]
crictl inspect $HEXA # resolved as "crictl inspect [a-f0-9]+"
lspci $BDF # resolved as "lspci ([0-9a-f]{4}\:|)[0-9a-f]{2}\:[0-9a-f]{2}\.[0-9a-f]"
[regex_macros]
HEXA=[a-f0-9]+
BDF=([0-9a-f]{4}\:|)[0-9a-f]{2}\:[0-9a-f]{2}\.[0-9a-f]
DPE 随附一个预配置的文件,该文件与同一 DOCA 安装中包含的独立 DTS 版本使用的命令匹配。该文件位于 /opt/mellanox/doca/services/telemetry/dpe/etc/dpe_config.ini
中。
使用 DPE 配置文件可以对 DOCA 服务其余部分公开的接口进行细粒度控制。但是,即使在使用上述预先提供的配置文件时,也应记住,该文件已配置为匹配固定的 DTS 版本。也就是说,将独立 DTS 版本替换为从 NGC 下载的新版本意味着使用的配置文件可能无法涵盖新 DTS 版本中添加的其他功能。
本章概述了 DOCA Telemetry Service 与 Grafana 的部署配置。
Grafana 部署先决条件
运行 DOCA Telemetry Service 的 BlueField DPU。
可选的远程服务器,用于托管 Grafana 和 Prometheus。
主机上安装的 Prometheus。请参阅 Prometheus 网站 以获取更多信息。
主机上安装的 Grafana。请参阅 Grafana Labs 网站 以获取更多信息。
Grafana 部署配置

DTS 配置(DPU 侧)
配置 DTS 以使用 Prometheus 插件导出 sysfs 计数器
Sysfs 用作示例,其他计数器也可用。
确保 sysfs 计数器已启用。
vim /opt/mellanox/doca/services/telemetry/config/dts_config.ini enable-provider=sysfs
通过设置
prometheus
地址和端口来启用 Prometheus exporter。vim /opt/mellanox/doca/services/telemetry/config/dts_config.ini prometheus=http://0.0.0.0:9100
注意在此示例中,Prometheus 插件在 localhost 端口 9100 上导出数据,这是一个任意值,可以更改。
必须重启 DTS 才能应用更改。
Prometheus 配置(远程服务器)
请为您的平台下载 Prometheus。
Prometheus 通过命令行标志和配置文件 prometheus.yml
进行配置。
打开
prometheus.yml
文件并将 DPU 配置为端点目标。vim prometheus.yml # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["<dpu-ip>:<prometheus-port>"]
其中
<dpu-ip>
是 DPU IP 地址。Prometheus 连接到此 IP 以拉取数据。<prometheus-port>
在 DTS 配置 中设置的 exporter 端口。
运行 Prometheus 服务器
./prometheus --config.file="prometheus.yml"
提示Prometheus 服务以 Docker 镜像的形式提供。请参阅 Prometheus 安装指南中的 Using Docker。
Grafana 配置(远程服务器)
请为您的平台下载并安装 Grafana。
设置 Grafana。请参阅 Grafana 文档中的 Install Grafana 指南。
登录到 Grafana 仪表板,网址为 https://127.0.0.1:3000。
注意端口 3000 是 Grafana 设置的默认端口号。如果需要,可以更改此端口号。默认凭据为 admin/admin。
通过导航到 Settings → Data sources → Add data source → Prometheus,将 Prometheus 添加为数据源。
配置 Prometheus 数据源。在 HTTP 部分下,设置 Prometheus 服务器地址。
注意Prometheus 服务器的默认侦听端口为 9090。Prometheus 和 Grafana 都在同一服务器上运行,因此地址为 localhost。
保存并测试。
探索遥测数据
转到左侧的 Explore 页面,然后选择 Prometheus provider。
选择要显示的指标并指定标签。标签可用于根据来源和 HCA 设备过滤数据。

选择指标并指定要按其过滤的标签后显示的图表

除了 NVIDIA DOCA Container Deployment Guide 中的故障排除部分之外,以下是 DTS 的其他故障排除提示
对于一般故障排除,请参阅 DOCA 故障排除。
如果 pod 的状态未能标记为“Ready”,请参阅
/var/log/syslog
。检查服务是否配置为将数据写入磁盘,因为这可能会导致系统磁盘空间不足。
如果发生 PIC 总线错误,请在容器内配置以下文件
crictl exec -it <container-id> /bin/bash # Add to /config/clx.env the following line: " export UCX_TLS=tcp "
如果在 DTS 导出的
source
/source_id
标签中设置了错误的主机名,则可能表明容器未在主机网络上运行。在这种情况下,主机名通常基于容器名称doca-telemetry
。要解决此问题,请相应地更新 docker 命令/YAML 文件。