joy-cli/docs/ops/nas-dsm-observe.md
feibisi b7fecf7ab0 feat(web): NAS 硬件卡 SSH 探测 + 布局对齐其它主机
采集 Terminal API 与 BatchMode 公钥探测,硬件 tab 主卡精简(IP 常显、
DSM 版本进机身详情),明细用 hwFold;文档同步 SSH 已通与修复入口。
2026-07-10 21:25:50 +08:00

6 KiB
Raw Permalink Blame History

NAS / DSM 可观测DS224+ · 实测)

2026-07-10 · 用 linuxjoy 账号只读登录 DSM API 摸底
凭据仅存本机 ~/.config/nas/dsm.envchmod 600禁止入库
已落地joy.dashboard.nas_dsm.collect_nas_dsmdashboard.infra.nas.dsm → 硬件 tab「NAS」
总手册(挂载 / SSH / 安全 / 索引):nas.md


1. 访问结论

通道 结果
https://192.168.1.188:5001 DSM Web
DSM API SYNO.API.Auth v7 + entry.cgi 登录成功,权限够读机身/存储/共享
NFS 挂载 shared-contextMac 内容面;与 volume1 对应
SSH linuxjoy@192.168.1.188 密码 publickey,密码认证未开
建议 joy 采集 优先 DSM APIcurl -sk;内容面用已挂载路径;不必依赖 SSH

登录示例(勿把密码写进脚本仓库):

# sid 缓存 ~/.config/nas/dsm.sid
curl -sk -G 'https://192.168.1.188:5001/webapi/entry.cgi' \
  --data-urlencode 'api=SYNO.API.Auth' --data-urlencode 'version=7' \
  --data-urlencode 'method=login' --data-urlencode "account=$NAS_USER" \
  --data-urlencode "passwd=$NAS_PASS" --data-urlencode 'session=Core' \
  --data-urlencode 'format=sid'

Python urllib 对本机 DSM TLS 偶发 EOF生产采集用 curl 子进程更稳


2. 机身快照(实测)

型号 DS224+
DSM 7.3.2-86009 Update 4
CPU Intel Celeron J4125 4 核 @2.0GHz
内存 6 GBreal_usage ~15%
系统温度 ~41°C,无温度告警
运行时间 ~114h采样时
主机名 feibisi-NAS
网卡 eth0 1G connected 192.168.1.188eth1 disconnected
UPS USB 识别 APC UPS(专用 UPS API 对本账号 102 无权限,但 system.usb_dev 可见)
风扇 cool_fan=yes双风扇 cool 模式
健康 widget system_ok

存储

2× WD80EFPX 8TBDrive1/2SMART normal,温度 3537°C
RAID 1reuse_1status normal
volume1 btrfs~7.0T total~2.6T used~37%fs_normal
盘 IO 低负载util 采样时个位数%

文件服务

NFS 已开v4 未开 minor与 Mac NFS 挂载一致
SMB 配置可读
当前连接 NFSMac .104、其它内网)+ DSM Web/File Station 会话

共享文件夹11

含:shared-contextVM SHAREDdockerActiveBackupforBusinesshomesDownloadiCloudPhotosmusic/photo/video/web/web_packages

套件节选·running

ActiveBackup、ActiveBackup-Office365、ActiveInsight、CloudSync、Git、Node.js_v20、SnapshotReplication、SynologyDrive 等(共 48 包量级)。

日志噪声

Syslog 近段 error 多为 Synology Office 自动更新失败(重复),非盘故障。


3. 可用 API 白名单joy 采集建议)

API method 用途 实测
SYNO.API.Auth login 会话
SYNO.Core.System info 型号/固件/温度/UPS USB/uptime
SYNO.Core.System.Utilization get CPU/内存/网/NFS OPS
SYNO.Storage.CGI.Storage load_info 盘 SMART 状态/温度、卷用量、RAID 机身核心
SYNO.Core.Share list 共享列表
SYNO.Core.CurrentConnection list NFS/SMB/HTTP 会话 通道面
SYNO.Core.Package list 套件 running
SYNO.Core.Network.Ethernet list 网卡速度/链路
SYNO.Core.Hardware.FanSpeed get 风扇模式
SYNO.Core.System.SystemHealth get 健康摘要
SYNO.Core.FileServ.NFS get NFS 开关
SYNO.Core.SyslogClient.Log list 最近 warn/error 计数 慎用(量大)

权限不足或无需:独立 SMART CGI114、Core.Hardware.UPS102、部分 Storage.Disk.list101


4. 建议进 joy 的字段(硬件 · NAS 卡)

L0 机身(每 15 minDSM API

nas.dsm: {
  ok, model, dsm_ver, hostname, uptime,
  sys_temp_c, temp_warn,
  cpu: {series, cores, load_1m, ...}, mem_pct,
  eth0: {ip, speed, status},
  pool: {raid, status},
  volume: {used_gb, total_gb, used_pct, fs, status},
  disks: [{slot, model, temp_c, smart_status, status}],
  ups_usb, fan_mode,
  terminal: {enable_ssh, enable_telnet, ssh_port},   // 2026-07-10
  ssh: {ok, target, error},                          // BatchMode 公钥探测
  attention[]
}

L1 通道(同轮或稍慢)

nas.channels: {
  nfs_enabled, smb_enabled?,
  connections: {nfs_n, http_n, total},
  mount_mac_ok, mount_devops_ok,   // 现有
  write_probe_ok                   // shared-context 写删探针
}
# SSH 修复linuxjoy scripts/mac/nas-ssh.sh不进 joy 写路径)

L2 内容(日更/手动,勿每轮 du

  • 白名单目录 entry 数 / 可选日 du 缓存
  • 禁止 secrets 内容进 JSON

展示位置:继续 硬件 · NAS(粮仓),不进神州、不进神兽 badge 主公式。


5. 实现要点

  1. collect_nas_dsm():读 ~/.config/nas/dsm.envcurl 登录,缓存 sid ~1030 min。
  2. 失败降级:无账号/登录失败 → 仅保留现有 mount+df。
  3. TLScurl -sk 或等价;勿用会 EOF 的默认 SSL 栈硬扛。
  4. 密码不进 HANDOFF / git / dashboard 明文。
  5. SSH 公钥已通2026-07-10collect_nas_dsm 每轮 BatchMode 探测 ssh nasUI 硬件卡展示。复发:linuxjoy/scripts/mac/nas-ssh.sh fix
  6. 建议轮换聊天中暴露过的密码,并更新 ~/.config/nas/dsm.env

6. 安全提醒

本次会话中密码曾出现在聊天中。建议在 DSM 中:

  1. 修改 linuxjoy 密码,并更新 ~/.config/nas/dsm.env
  2. 或新建只读监控用户 + 最小权限
  3. 需要 SSH 时单独开公钥,不要开密码 SSH 到公网

实测账号linuxjoy本地 env。SSH 密码认证未启用。