监控系统硬件
您可以使用以下命令和实用程序监控系统硬件
- 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