监控系统硬件

您可以使用以下命令和实用程序监控系统硬件

  • NVUE
  • decode-syseeprom
  • smond
  • sensors
  • watchdog

NVUE 命令

您可以运行 NVUE 命令来监控您的系统硬件。

命令描述
nv show system health显示有关交换机健康状况的信息,并描述任何问题。
nv show platform显示交换机上的平台硬件信息,例如型号和制造商、内存、序列号和系统 MAC 地址。
nv show platform environment fan显示有关交换机风扇的信息,例如最小、最大和当前速度、风扇状态和风扇方向。
nv show platform environment led显示有关交换机 LED 的信息,例如 LED 名称和颜色。
nv show platform environment psu显示有关交换机 PSU 的信息,例如 PSU 名称和状态。
nv show platform environment temperature显示有关交换机传感器信息,例如临界、最大、最小和当前温度以及传感器的当前状态。
nv show platform environment voltage显示交换机上的电压传感器列表。
nv show platform inventory显示交换机清单,包括风扇和 PSU 硬件版本、型号、序列号、状态和类型。 有关特定风扇或 PSU 的信息,请运行 `nv show platform inventory <inventory-name>` 命令。

以下示例显示了 `nv show platform` 命令的输出

cumulus@switch:~$ nv show platform
               operational      
-------------  -----------------
system-mac     44:38:39:22:01:b1                      
manufacturer   Cumulus                                
product-name   VX                                     
cpu            x86_64 QEMU Virtual CPU version 2.5+ x1
memory         1756460 kB                             
disk-size      n/a                                    
port-layout    n/a                                    
part-number    5.12                                 
serial-number  44:38:39:22:01:7a                      
asic-model     n/a                                    
system-uuid    e928ee83-20f7-4515-bfab-c204db3e604c

以下示例显示了 `nv show platform environment fan` 命令的输出。 所有风扇的气流方向必须相同。 如果 Cumulus Linux 检测到风扇气流方向不一致,它会在 `var/log/syslog` 文件中记录一条消息。

cumulus@switch:~$ nv show platform environment fan
Name      Fan State  Current Speed (RPM)  Max Speed  Min Speed  Fan Direction
--------  ---------  -------------------  ---------  ---------  -------------
FAN1/1    ok         6000                 29000      2500       F2B         
FAN1/2    ok         6000                 29000      2500       F2B         
FAN2/1    ok         6000                 29000      2500       F2B         
FAN2/2    ok         6000                 29000      2500       F2B         
FAN3/1    ok         6000                 29000      2500       F2B         
FAN3/2    ok         6000                 29000      2500       F2B         
PSU1/FAN  ok         6000                 29000      2500       F2B         
PSU2/FAN  ok         6000                 29000      2500       F2B   

如果所有风扇的气流方向不一致(前到后或后到前),则交换机、机架甚至整个数据中心的冷却效果将不是最佳的。

decode-syseeprom 命令

使用 `decode-syseeprom` 命令检索有关交换机 EEPROM 的信息。 如果 EEPROM 可写,则可以在 EEPROM 上设置值。

以下是 `decode-syseeprom` 命令输出示例。 不同交换机上的输出有所不同

cumulus@switch:~$ decode-syseeprom
TlvInfo Header:
   Id String:    TlvInfo
   Version:      1
   Total Length: 69
TLV Name             Code Len Value
-------------------- ---- --- -----
Vendor Name          0x2D  16 Cumulus Networks
Product Name         0x21   2 VX
Device Version       0x26   1 3
Part Number          0x22   5 5.12
MAC Addresses        0x2A   2 55
Base MAC Address     0x24   6 44:38:39:22:01:7A
Serial Number        0x23  17 44:38:39:22:01:7a
CRC-32               0xFE   4 0xF305A73F
(checksum valid)

`decode-syseeprom` 命令包含以下选项

选项描述
-h-help显示帮助消息并退出。
-a打印交换机接口的基本 MAC 地址。
-r打印为交换机接口分配的 MAC 地址数量。
-s设置 EEPROM 内容(如果 EEPROM 可写)。 您可以在命令行中以逗号分隔的列表形式提供参数,格式为 <field>=<value>
  • .,= 在字段名称和值中是不允许的。
  • 任何未指定的字段默认为当前值。

NVIDIA Spectrum 交换机不支持此选项。
-j--json显示 JSON 输出。
-t <target>打印目标 EEPROM 信息(board、psu2、psu1)。
--serial-e打印设备序列号。
-m打印管理接口的基本 MAC 地址。
--init清除并初始化板载 EEPROM 缓存。

运行 sudo dmidecode 命令以检索 BIOS 中填充的硬件配置信息。

smond

`smond` 服务监控电源和风扇等系统单元,更新相应的 LED,并记录状态变化。 `cpld` 寄存器检测系统单元状态的变化。 `smond` 利用这些寄存器读取所有来源,从而确定单元的健康状况并更新系统 LED。

运行 `sudo smonctl` 命令以显示各种系统单元的传感器信息

cumulus@switch:~$ sudo smonctl
Fan1      (Fan Tray 1, Fan 1                     ):  OK
Fan2      (Fan Tray 1, Fan 2                     ):  OK
Fan3      (Fan Tray 2, Fan 1                     ):  OK
Fan4      (Fan Tray 2, Fan 2                     ):  OK
Fan5      (Fan Tray 3, Fan 1                     ):  OK
Fan6      (Fan Tray 3, Fan 2                     ):  OK
PSU1                                              :  OK
PSU2                                              :  OK
PSU1Fan1  (PSU1 Fan                              ):  OK
PSU1Temp1 (PSU1 Temp Sensor                      ):  OK
PSU2Fan1  (PSU2 Fan                              ):  OK
PSU2Temp1 (PSU2 Temp Sensor                      ):  OK
Temp1     (Board Sensor near CPU                 ):  OK
Temp2     (Board Sensor Near Virtual Switch      ):  OK
Temp3     (Board Sensor at Front Left Corner     ):  OK
Temp4     (Board Sensor at Front Right Corner    ):  OK
Temp5     (Board Sensor near Fan                 ):  OK

当交换机未通电时,`smonctl` 将 PSU 状态显示为 *BAD* 而不是 *POWERED OFF* 或 *NOT DETECTED*。 这是一个已知限制。

`smonctl` 命令包含以下选项

选项 描述
-s <sensor>--sensor <sensor>显示指定传感器的数据。
-v--verbose显示详细的硬件传感器数据。

以下命令示例显示了有关交换机上 FAN6 的信息

cumulus@switch:~$ smonctl -s FAN6 -v
Fan6      (Fan Tray 3, Fan 2                     ):  OK

有关更多信息,请阅读 `man smond` 和 `man smonctl`。

sensors 命令

运行 `sensors` 命令以监控交换机硬件的健康状况,例如电源、温度和风扇速度。 此命令执行 `lm-sensors`。

即使您可以使用 `sensors` 命令来监控交换机硬件的健康状况,NVIDIA 还是建议您使用 `smond` 守护进程来监控硬件健康状况。 请参阅上面的 smond 守护进程

例如

cumulus@switch:~$ sensors
cumulus_vx_cpld-isa-0000
Adapter: ISA adapter
fan1:        6000 RPM  (min = 2500 RPM, max = 29000 RPM)
fan2:        6000 RPM  (min = 2500 RPM, max = 29000 RPM)
fan3:        6000 RPM  (min = 2500 RPM, max = 29000 RPM)
fan4:        6000 RPM  (min = 2500 RPM, max = 29000 RPM)
fan5:        6000 RPM  (min = 2500 RPM, max = 29000 RPM)
fan6:        6000 RPM  (min = 2500 RPM, max = 29000 RPM)
fan7:        6000 RPM  (min = 2500 RPM, max = 29000 RPM)
fan8:        6000 RPM  (min = 2500 RPM, max = 29000 RPM)
temp1:        +25.0°C  (low  =  +5.0°C, high = +80.0°C)
                       (crit low =  +0.0°C, crit = +85.0°C)
temp2:        +25.0°C  (low  =  +5.0°C, high = +80.0°C)
                       (crit low =  +0.0°C, crit = +85.0°C)
temp3:        +25.0°C  (low  =  +5.0°C, high = +80.0°C)
                       (crit low =  +0.0°C, crit = +85.0°C)
temp4:        +25.0°C  (low  =  +5.0°C, high = +80.0°C)
                       (crit low =  +0.0°C, crit = +85.0°C)
temp5:        +25.0°C  (low  =  +5.0°C, high = +80.0°C)
                       (crit low =  +0.0°C, crit = +85.0°C)
temp6:        +25.0°C  (low  =  +5.0°C, high = +80.0°C)
                       (crit low =  +0.0°C, crit = +85.0°C)
temp7:        +25.0°C  (low  =  +5.0°C, high = +80.0°C)
                       (crit low =  +0.0°C, crit = +85.0°C)

  • `sensors` 命令的输出因交换机而异。
  • 如果您只插入一个 PSU,则风扇将以最大速度运转。

下表显示了 `sensors` 命令选项。

选项描述
-c –config-file指定配置文件; 在 `-c` 之后使用 `-` 从 `stdin` 读取配置文件; 默认情况下,`sensors` 引用 `/etc/sensors.d/` 中的配置文件。
-s –set执行配置文件中的 set 语句(仅限 root 用户); `sensors -s` 在启动时运行一次,并将所有设置应用于启动驱动程序。
-f –fahrenheit以华氏度显示温度。
-A –no-adapter
-A –bus-list
不显示每个芯片的适配器。
为 `sensors.conf` 生成总线语句。
-u生成原始输出。
-j生成 json 输出。
-v显示程序版本。

硬件看门狗

Cumulus Linux 包含 `wd_keepalive(8)` 守护进程的简化版本,而不是标准 `watchdog` Debian 软件包中的版本。 `wd_keepalive` 定期(至少每分钟一次)写入名为 `/dev/watchdog` 的文件,以防止交换机重置。 每次写入都会将重启时间延迟一分钟。 如果一分钟内 `wd_keepalive` 未写入 `/dev/watchdog`,则交换机将自行重置。

Cumulus Linux 默认启用看门狗,它在您启动交换机时启动(在 `switchd` 启动之前)。

要禁用看门狗,请禁用并停止 `wd_keepalive` 服务

cumulus@switch:~$ sudo systemctl disable wd_keepalive ; systemctl stop wd_keepalive 

您可以在 `/etc/watchdog.conf` 配置文件中修改看门狗的设置,例如超时和调度程序优先级。

cumulus@switch:~$ sudo nano /etc/watchdog.conf
watchdog-device	= /dev/watchdog
# Set the hardware watchdog timeout in seconds
watchdog-timeout = 30
# Kick the hardware watchdog every 'interval' seconds
interval = 5
# Log a status message every (interval * logtick) seconds.  Requires
# --verbose option to enable.
logtick = 240
# Run the daemon using default scheduler SCHED_OTHER with slightly
# elevated process priority.  See man setpriority(2).
realtime = no
priority = -2