ClawSkills logoClawSkills

Unraid

通过 GraphQL API 查询和监控 Unraid 服务器。当用户要求“检查 Unraid”、“监控 Unraid”、“Unraid API”、“获取 Unraid 状态”、“检查磁盘

介绍

# Unraid API Skill

使用 GraphQL API 查询和监控 Unraid 服务器。访问全部 27 个只读端点,进行系统监控、磁盘健康状况、日志、容器、虚拟机等操作。

## 快速开始

设置您的 Unraid 服务器凭据:

```bash export UNRAID_URL="https://your-unraid-server/graphql" export UNRAID_API_KEY="your-api-key" ```

**获取 API 密钥:** 设置 (Settings) → 管理访问 (Management Access) → API 密钥 (API Keys) → 新建 (Create) (选择“Viewer”角色)

使用辅助脚本进行任意查询:

```bash ./scripts/unraid-query.sh -q "{ online }" ```

或运行示例脚本:

```bash ./scripts/dashboard.sh # Complete multi-server dashboard ./examples/disk-health.sh # Disk temperatures & health ./examples/read-logs.sh syslog 20 # Read system logs ```

## 核心概念

### GraphQL API 结构

Unraid 7.2+ 使用 GraphQL(而非 REST)。主要区别如下: - **单一端点:** 所有查询均通过 `/graphql` - **按需请求:** 在查询中指定所需字段 - **强类型:** 使用内省 (introspection) 来发现字段 - **无容器日志:** 无法访问 Docker 容器输出日志

### 获取统计数据的两种资源

- **`info`** - 静态硬件规格(CPU 型号、核心数、操作系统版本) - **`metrics`** - 实时使用情况(CPU 百分比、内存百分比、当前负载)

监控时请始终使用 `metrics`,获取规格时请使用 `info`。

## 常见任务

### 系统监控

**检查服务器是否在线:** ```bash ./scripts/unraid-query.sh -q "{ online }" ```

**获取 CPU 和内存使用率:** ```bash ./scripts/unraid-query.sh -q "{ metrics { cpu { percentTotal } memory { used total percentTotal } } }" ```

**完整仪表板:** ```bash ./scripts/dashboard.sh ```

### 磁盘管理

**检查磁盘健康状况和温度:** ```bash ./examples/disk-health.sh ```

**获取阵列状态:** ```bash ./scripts/unraid-query.sh -q "{ array { state parityCheckStatus { status progress errors } } }" ```

**列出所有物理磁盘(包括缓存/USB):** ```bash ./scripts/unraid-query.sh -q "{ disks { name } }" ```

### 存储共享

**列出网络共享:** ```bash ./scripts/unraid-query.sh -q "{ shares { name comment } }" ```

### 日志

**列出可用日志:** ```bash ./scripts/unraid-query.sh -q "{ logFiles { name size modifiedAt } }" ```

**读取日志内容:** ```bash ./examples/read-logs.sh syslog 20 ```

### 容器与虚拟机

**列出 Docker 容器:** ```bash ./scripts/unraid-query.sh -q "{ docker { containers { names image state status } } }" ```

**列出虚拟机:** ```bash ./scripts/unraid-query.sh -q "{ vms { name state cpus memory } } }" ```

**注意:** 容器输出日志无法通过 API 访问。请通过 SSH 使用 `docker logs`。

### 通知

**获取通知计数:** ```bash ./scripts/unraid-query.sh -q "{ notifications { overview { unread { info warning alert total } } } }" ```

## 辅助脚本用法

`scripts/unraid-query.sh` 辅助脚本支持:

```bash # Basic usage ./scripts/unraid-query.sh -u URL -k API_KEY -q "QUERY"

# Use environment variables export UNRAID_URL="https://unraid.local/graphql" export UNRAID_API_KEY="your-key" ./scripts/unraid-query.sh -q "{ online }"

# Format options -f json # Raw JSON (default) -f pretty # Pretty-printed JSON -f raw # Just the data (no wrapper) ```

## 其他资源

### 参考文件

详细文档,请参阅: - **`references/endpoints.md`** - 所有 27 个 API 端点的完整列表 - **`references/troubleshooting.md`** - 常见错误和解决方案 - **`references/api-reference.md`** - 详细字段文档

### 辅助脚本

- **`scripts/unraid-query.sh`** - 主 GraphQL 查询工具 - **`scripts/dashboard.sh`** - 自动化多服务器清单报告器

## 快速命令参考

```bash # System status ./scripts/unraid-query.sh -q "{ online metrics { cpu { percentTotal } } }"

# Disk health ./examples/disk-health.sh

# Array status ./scripts/unraid-query.sh -q "{ array { state } }"

# Read logs ./examples/read-logs.sh syslog 20

# Complete dashboard ./scripts/dashboard.sh

# List shares ./scripts/unraid-query.sh -q "{ shares { name } }"

# List containers ./scripts/unraid-query.sh -q "{ docker { containers { names state } } }" ```

更多产品