用途:该技能用于通过 Unraid 的 GraphQL API 查询和监控 Unraid 服务器,适用于用户提出“check Unraid”“monitor Unraid”“Unraid API”“get Unraid status”等需求时。它提供对全部 27 个只读端点的访问,覆盖系统监控、磁盘健康、日志、容器、虚拟机等。
主要能力:
- 系统监控:检查服务器是否在线,获取 CPU 与内存使用率,运行完整的多服务器仪表盘。
- 磁盘管理:检查磁盘健康与温度,获取阵列状态(含奇偶校验状态),列出所有物理磁盘(包括缓存/USB)。
- 存储共享:列出网络共享。
- 日志:列出可用日志文件,读取日志内容。
- 容器与虚拟机:列出 Docker 容器(名称、镜像、状态、状态描述),列出虚拟机(名称、状态、CPU、内存)。注意:容器输出日志无法通过 API 访问,需通过 SSH 使用 docker logs。
- 通知:获取通知计数(未读的信息、警告、警报、总数)。
使用方式:
- 设置凭据: export UNRAID_URL="https://your-unraid-server/graphql" export UNRAID_API_KEY="your-api-key" API Key 获取路径:Settings → Management Access → API Keys → Create(选择 "Viewer" 角色)。
- 使用辅助脚本执行查询: ./scripts/unraid-query.sh -q "{ online }" 或运行示例脚本: ./scripts/dashboard.sh # 完整多服务器仪表盘 ./examples/disk-health.sh # 磁盘温度与健康 ./examples/read-logs.sh syslog 20 # 读取系统日志
- 辅助脚本参数: ./scripts/unraid-query.sh -u URL -k API_KEY -q "QUERY" 或使用环境变量: export UNRAID_URL="https://unraid.local/graphql" export UNRAID_API_KEY="your-key" ./scripts/unraid-query.sh -q "{ online }" 格式选项:-f json(原始 JSON,默认)、-f pretty(美化 JSON)、-f raw(仅数据,无包装)。
核心概念:
- Unraid 7.2+ 使用 GraphQL(非 REST)。关键差异:单一端点 /graphql 处理所有查询;按需精确指定字段;强类型,可用内省发现字段;容器日志不可访问。
- 两类统计资源:info 为静态硬件规格(CPU 型号、核心数、OS 版本);metrics 为实时使用情况(CPU %、内存 %、当前负载)。监控应使用 metrics,规格应使用 info。
常用命令参考:
- 系统状态:./scripts/unraid-query.sh -q "{ online metrics { cpu { percentTotal } } }"
- 磁盘健康:./examples/disk-health.sh
- 阵列状态:./scripts/unraid-query.sh -q "{ array { state } }"
- 读取日志:./examples/read-logs.sh syslog 20
- 完整仪表盘:./scripts/dashboard.sh
- 列出共享:./scripts/unraid-query.sh -q "{ shares { name } }"
- 列出容器:./scripts/unraid-query.sh -q "{ docker { containers { names state } } }"
附加资源:
- references/endpoints.md:全部 27 个 API 端点的完整列表。
- references/troubleshooting.md:常见错误与解决方案。
- references/api-reference.md:详细字段文档。
- scripts/unraid-query.sh:主 GraphQL 查询工具。
- scripts/dashboard.sh:自动化多服务器清单报告器。
适用场景:需要以只读方式监控 Unraid 服务器状态、磁盘健康、阵列、共享、日志、容器与虚拟机,以及获取通知计数的场景。
限制:仅支持只读端点;容器输出日志无法通过 API 访问,需通过 SSH 使用 docker logs;需要 Unraid 7.2+ 及有效的 API Key(Viewer 角色)。