SwiftServer
故障排查

监控问题

状态卡片不见了或数值为空时:到数据源头查一遍,并把输出发给我们。

SwiftServer 的每一项指标,都由它在你的服务器上运行的命令算出来。卡片不见了或数值看着不对时, 自己跑一遍同样的命令,马上就能知道数据在源头是否存在;而这条命令的输出, 正是一份有用的问题报告需要的内容。

先排除预期内的缺失

有些东西不显示是设计如此,不是故障:

  • GPU 使用率只在存在 nvidia-smi 时出现;Docker 只在找到 Docker 时出现; CPU 负载在 Windows 上隐藏(Windows 没有平均负载)。
  • CPU 温度在 macOS 和 Windows 上不可用,没有温度传感器的 Linux 机器上也没有。
  • 磁盘 I/O 速率只有 Linux 和 Windows 有。服务器没有交换空间时,交换空间显示 N/A。
  • 卡片也可能是被手动隐藏的,到设置 → 仪表板 → 状态详情布局里确认一下。
  • 免费版只显示 3 台服务器的实时状态,见 Premium。

各平台分别覆盖到什么程度,见平台说明。

到数据源头查一遍

在出问题的机器上打开一个终端会话,运行出问题那张卡片对应的命令。 如果命令报错或什么都不输出,要修的是服务器这一侧(装上工具、检查权限)。 如果命令输出了正常的数据而 SwiftServer 什么都不显示,把那段输出发给我们。

Linux

卡片运行这条命令
CPU 利用率cat /proc/stat
CPU 负载cat /proc/loadavg
内存利用 / 交换空间cat /proc/meminfo
进程ps -eo pid,%cpu,rss,user,comm --sort=-%cpu | head -15
网络使用情况cat /proc/net/dev 和 ip addr
存储df 和 cat /proc/diskstats
温度cat /sys/class/hwmon/hwmon*/temp1_input
GPU 使用率nvidia-smi
系统信息cat /etc/os-release

精简的容器镜像里常常没有 ps 或 ip,装上 procps 和 iproute2, 进程和网络使用情况两张卡片就有数据了。

macOS

卡片运行这条命令
CPU 利用率top -l 1 -n 0 | grep "CPU usage"
CPU 负载sysctl -n vm.loadavg
内存利用vm_stat 和 sysctl -n vm.swapusage
进程ps -Aco pid,%cpu,rss,user,comm | head -15
网络使用情况netstat -ibn
存储df -k -P
系统信息sw_vers

Windows (PowerShell)

卡片运行这条命令
系统信息Get-CimInstance Win32_OperatingSystem | Select Caption,Version,BuildNumber
CPU 利用率Get-CimInstance Win32_Processor | Select Name,NumberOfLogicalProcessors
内存利用Get-CimInstance Win32_OperatingSystem | Select TotalVisibleMemorySize,FreePhysicalMemory
存储Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3'
网络使用情况Get-NetAdapterStatistics
GPU 使用率nvidia-smi

如果 PowerShell 本身在 SSH 上就报错,那就是线索所在,请把错误一并发来。

vnStat 历史

如果网络使用情况卡片的历史区域提示 vnStat 未安装,到 humdi.net/vnstat 安装它;跑在 Docker 容器里的 vnStat, SwiftServer 同样能检测到。刚装好的 vnStat 需要时间收集数据,之后图表才会出现。 验证方式:vnstat --json f 12(或 docker exec -it vnstat vnstat --json f 12)。

该发什么

卡片名称、这台机器的操作系统、上面那条命令的输出,以及卡片的截图。 如果整台机器显示的是错误,请改发它的对话框里的事件日志和 SSH 诊断, 那属于连接问题。

本页内容