设备总数
{{ overview.totalDevices }}
已接纳设备
在线设备
{{ overview.onlineDevices }}
{{ onlineRate }}% 当前在线率
设备分组
{{ overview.groupCount }}
组织结构节点
需要关注
{{ attentionCount }}
待审核 {{ overview.pendingCount }} · 失败任务 {{ overview.failedTasks }}
24 小时在线趋势 (每分钟采样)
24h 前现在
分组设备概览
▱ {{ g.name }}
{{ groupDeviceCount(g.id, true) }}
暂无分组
设备分组
全部设备 / {{ groupPath(groupFilter) }}
{{ currentGroupName }} {{ filteredDevices.length }} 台
待接纳设备 {{ pendingDevices.length }} 台
正在监听 Agent 主动连接
无需添加设备
设备安装 Agent 后会主动向服务器注册。显示名优先使用服务端名称,其次 Agent 设置名称,最后回退主机名。
| Agent 上报名 | 设备 ID | 平台 | 来源 IP | 首次发现 | 硬件指纹 | 操作 |
|---|---|---|---|---|---|---|
| {{ d.hostname }} | {{ d.installationId.slice(0,18) }}... | {{ d.os }}/{{ d.arch }} | {{ d.sourceIp || '-' }} | {{ fmtTime(d.createdAt) }} | {{ (d.fingerprint||'').slice(0,12) }}... |
暂未发现新的 Agent 连接
设备列表({{ filteredDevices.length }})
| 名称 | 状态 | 分组 | 标签 | 平台 | 最后心跳 | 操作 |
|---|---|---|---|---|---|---|
| {{ d.name || d.hostname }} | {{ d.online ? '在线' : '离线' }}已停用 | {{ groupName(d.groupId) }} | {{ t }} | {{ d.os }}/{{ d.arch }} | {{ d.lastSeenAt ? fmtTime(d.lastSeenAt) : '-' }} |
当前分组没有匹配的设备
{{ detailDevice.name || detailDevice.hostname }}
✎
设备 ID{{ detailDevice.id }}
主机名{{ detailDevice.hostname }}
平台{{ detailDevice.os }} / {{ detailDevice.arch }}
{{ detailDevice.online ? '在线' : '离线' }}
已停用
详情...
基本信息
| 设备 ID | {{ detailDevice.id }} |
|---|---|
| 主机名 | {{ detailDevice.hostname }} |
| 平台 | {{ detailDevice.os }} / {{ detailDevice.arch }} |
| installationId | {{ detailDevice.installationId }} |
| 硬件指纹 | {{ detailDevice.fingerprint }} |
| 注册时间 | {{ fmtTime(detailDevice.createdAt) }} |
| 最后心跳 | {{ detailDevice.lastSeenAt ? fmtTime(detailDevice.lastSeenAt) : '-' }} |
能力清单
{{ c.name }} v{{ c.version }}
资产与运行状态 (运行 {{ fmtUptime(detailDevice.assets.uptimeSec) }} · 5s 自动刷新)
CPU
{{ (detailDevice.assets.cpuModel || '-').slice(0, 30) }}({{ detailDevice.assets.cpuCores }} 核)
{{ fmtPct1(detailDevice.assets.cpuUsage) }}
GPU
{{ (detailDevice.assets.gpuModel || '无 / 未检测到').slice(0, 30) }}
{{ fmtPct1(detailDevice.assets.gpuUsage) }}
内存
{{ fmtBytes(detailDevice.assets.memUsed) }} / {{ fmtBytes(detailDevice.assets.memTotal) }}
{{ pct(detailDevice.assets.memUsed, detailDevice.assets.memTotal) }}
磁盘 /
{{ fmtBytes(detailDevice.assets.diskUsed) }} / {{ fmtBytes(detailDevice.assets.diskTotal) }}
{{ pct(detailDevice.assets.diskUsed, detailDevice.assets.diskTotal) }}
网络 {{ (detailDevice.assets.ips||[]).join(' ') }}
↑ {{ fmtKbps(detailDevice.assets.netTxKbps) }} ↓ {{ fmtKbps(detailDevice.assets.netRxKbps) }}
运行进程 {{ processList.length }} 个 · 5s 自动刷新
| {{ c.label }} {{ processSort.dir===1?'↑':'↓' }} | 操作 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| {{ p.pid }} | {{ p.name }} | {{ p.user }} | {{ p.cpuPercent.toFixed(1) }}% | {{ fmtBytes(p.rssBytes) }} | {{ p.ioReadKbps.toFixed(1) }} KB/s | {{ p.ioWriteKbps.toFixed(1) }} KB/s | {{ p.gpuMemBytes ? fmtBytes(p.gpuMemBytes) : '—' }} | — |
{{ processLoading ? '采集中...' : '暂无数据' }}
文件管理
上传中:{{ uploadName }} — {{ uploadPct }}%
⌂ 根目录
/ {{ part }}
| 名称 | 大小 | 修改时间 | 权限 | 操作 |
|---|---|---|---|---|
| {{ f.isDir ? '📁 ' : '📄 ' }}{{ f.name }} | {{ f.isDir ? '—' : fmtBytes(f.size) }} | {{ fmtTime(f.modTime) }} | {{ f.perm }} |
{{ fileLoading ? '加载中...' : '空目录' }}
授权根目录:{{ fileRootsText }}(Agent 配置文件 fileRoots 可调)
SSH 终端 — {{ detailDevice.name || detailDevice.hostname }} (本地 127.0.0.1:22)
本设备任务
| 动作 | 状态 | 结果 | 创建时间 | 完成时间 |
|---|---|---|---|---|
| {{ t.action }} | {{ t.status }} | {{ t.result.output }}- |
{{ fmtTime(t.createdAt) }} | {{ t.finishedAt ? fmtTime(t.finishedAt) : '-' }} |
暂无任务
组织结构
▱ {{ g.name }}
暂无分组,先建一个根分组
{{ groupPath(selectedGroup.id) }}
{{ selectedGroup.name }}
直属设备
{{ groupDeviceCount(selectedGroup.id, false) }}
含子组设备
{{ groupDeviceCount(selectedGroup.id, true) }}
直属子组
{{ childGroups(selectedGroup.id).length }}
上级分组
{{ selectedGroup.parentId ? groupName(selectedGroup.parentId) : '根分组' }}
下级分组
| 分组名称 | 直属设备 | 含子组设备 | 操作 |
|---|---|---|---|
| ▱ {{ g.name }} | {{ groupDeviceCount(g.id, false) }} | {{ groupDeviceCount(g.id, true) }} | 查看 |
暂无下级分组
删除规则
只能删除空分组。存在子组或设备时,需要先移动到其他分组,系统不会连带删除设备。
请在左侧选择一个分组,或新建根分组。
新建任务 → {{ taskForm.deviceName }}
任务列表
| 动作 | 目标设备 | 状态 | 结果 | 创建时间 | 完成时间 |
|---|---|---|---|---|---|
| {{ t.action }} | {{ deviceName(t.deviceId) }} | {{ t.status }} | {{ t.result.output }}- |
{{ fmtTime(t.createdAt) }} | {{ t.finishedAt ? fmtTime(t.finishedAt) : '-' }} |
审计日志
| 时间 | 操作者 | 动作 | 目标 | 结果 |
|---|---|---|---|---|
| {{ fmtTime(a.createdAt) }} | {{ a.actor }} | {{ a.action }} | {{ a.target }} | {{ a.result }} |
当前筛选条件下没有日志
主题配色
选择后立即生效,并保存为当前浏览器偏好。状态颜色不随主题变化。
令牌管理
设备入网的一次性注册令牌。完整令牌仅在创建时显示一次。
创建注册令牌
令牌列表
| 令牌 | 备注 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|
| {{ t.token }} | {{ t.note || '-' }} | {{ t.status }} | {{ fmtTime(t.createdAt) }} |
关于
| 平台版本 | v1.0.0 |
|---|---|
| 服务端 | {{ location.host }} |
| 当前账号 | {{ me.account }}({{ me.role }}) |