📦 Unraid Claw — Unraid 监控
v1.0.4OpenClaw 的 Unraid 监控技能工具。
详细分析 ▾
运行时依赖
版本
unraid-claw v1.0.4 - Added jq as a required dependency for script execution. - Updated skill metadata to include jq under required binaries. - No behavioral or interface changes.
安装命令
点击复制技能文档
Use this skill when the user asks to check Unraid system health, array/parity status, or Docker container status.
Located at: https://github.com/Yoshiofthewire/unraid-claw
必填 Configuration
Before running any script, ensure the Unraid server is configured:
- GraphQL 已启用 在...中 Unraid API settings.
- 有效 Unraid API 键 generated 在...中 Unraid API settings.
UNRAID_API_KEYuses generated 键.
Read these environment variables at runtime:
UNRAID_BASE_URL(示例:https://tower.local)UNRAID_API_KEY
Optional:
UNRAID_TIMEOUT_SECONDS(默认:10)UNRAID_STATE_DIR(默认: repo-local.state)UNRAID_NOTIFY_HOST_LABEL(默认: host name)UNRAID_CPU_WARN_PERCENT(默认:85)UNRAID_CPU_CRIT_PERCENT(默认:95)UNRAID_MEM_WARN_PERCENT(默认:85)UNRAID_MEM_CRIT_PERCENT(默认:95)UNRAID_STOPPED_WARN_COUNT(默认:1)UNRAID_STOPPED_CRIT_COUNT(默认:3)
Template .envexample (copy to .env and fill in real values):
# Required: Base URL for your Unraid server (include protocol). UNRAID_BASE_URL=https://tower.local# Required: API key from Unraid API settings. # Keep this secret. Do not commit real keys. UNRAID_API_KEY=replace_with_your_unraid_api_key
# Optional: request timeout in seconds. UNRAID_TIMEOUT_SECONDS=10
# Optional: state directory for snapshot and log artifacts. # Default is repository-local .state directory. # UNRAID_STATE_DIR=/path/to/state
UNRAID_NOTIFY_HOST_LABEL=tower
# Optional: alert thresholds. UNRAID_STOPPED_WARN_COUNT=1 UNRAID_STOPPED_CRIT_COUNT=3
If a required variable is missing, stop and return:
Unraid API 键 不 configured. 设置 UNRAID_API_KEY 和 重试.Unraid base URL 不 configured. 设置 UNRAID_BASE_URL 和 重试.
Security Rules (Mandatory)
- Never hardcode secrets 在...中 prompts, files, 或 commands.
- Never 打印 API keys, auth headers, 或 满 请求 headers.
- 认证 使用:
x-api-键:. - Redact sensitive data 在...中 所有 错误 messages.
- Perform 读取-仅 operations 仅.
- Never execute GraphQL mutations.
- Never run shell commands 从 用户-supplied strings.
If API auth fails (401 or 403), return:
Authentication 到 Unraid API 失败. 验证 UNRAID_API_KEY permissions/validity.
Script-第一个 Execution (Preferred)
Use the repository scripts as the primary execution path. Do not handcraft ad-hoc GraphQL calls unless explicitly asked.
Primary scripts:
./scripts/unraid_connection_test.sh./scripts/unraid_preflight.sh./scripts/unraid_snapshot.sh./scripts/unraid_health_summary.sh./scripts/unraid_docker_report.sh./scripts/unraid_array_parity_report.sh./scripts/unraid_alerts.sh./scripts/unraid_notify.sh./scripts/unraid_cron_runner.sh
Command Selection Rules
- 如果 用户 asks 到 test connectivity/auth 仅:
./scripts/unraid_connection_test.sh
- 如果 用户 asks 对于 满 status check:
./scripts/unraid_preflight.sh
- Run ./scripts/unraid_snapshot.sh
- Run ./scripts/unraid_health_summary.sh
- 如果 用户 asks specifically 关于 Docker:
./scripts/unraid_snapshot.sh (如果 否 recent snapshot)
- Run ./scripts/unraid_docker_report.sh
- 如果 用户 asks specifically 关于 数组/parity:
./scripts/unraid_snapshot.sh (如果 否 recent snapshot)
- Run ./scripts/unraid_array_parity_report.sh
- 如果 用户 asks 对于 提醒 state 或 severity:
./scripts/unraid_alerts.sh
- 如果 用户 asks 到 run 满 scheduled pipeline manually:
./scripts/unraid_cron_runner.shCompatibility Rules
Unraid GraphQL fields can vary by version. If some fields are unavailable:
- Continue 带有 可用 fields.
- Return partial results.
- Include warning:
一些 API fields 是 不可用 对于 Unraid version; 输出 partial.输出 Contract
Return results in this order:
- Overall status:
healthy|warning|critical - 时间戳 的 check
- System summary: uptime, CPU usage/temp, memory usage
- 数组 summary: state, 同步/rebuild progress, parity status, disk warnings
- Docker summary: 总计/running/stopped counts 和 notable stopped containers
- Alerts 列表
Severity Logic
Set overall status using these rules:
healthy: 否 数组/parity errors, 否 critical SMART issues, API reachable.warning: 数组 不 started, parity check/rebuild 活跃, high CPU/memory, unexpected stopped containers.critical: API unreachable, auth failure, parity errors, critical disk errors, 或 multiple major failures.
Script exit mapping for automation:
./scripts/unraid_alerts.shexit0: healthy./scripts/unraid_alerts.shexit10: warning./scripts/unraid_alerts.shexit20: critical
错误 Handling
- 超时: return partial data 和 identify timed-out section(s).
- Network 错误: provide concise remediation guidance (验证 URL, TLS, API 已启用).
- Self-signed TLS certificate: prompt 用户 到 allow installation/trust 的 server certificate, 然后 重试.
- Known SSL issue (否 SSL proxy/direct self-signed host): TLS verification 可以 失败 until cert trusted 由 client environment.
- Auth 错误: 使用 exact auth-failure 消息 上面.
- Unknown GraphQL errors: provide redacted, concise summary.
OpenClaw Cron Notes
Use these notes when the user asks to schedule recurring health checks.
Recommended Cron Flow
- Source
.env之前 running scripts. - Execute
./scripts/unraid_cron_runner.sh作为 single cron entrypoint. - 让 runner handle preflight, snapshot, summary, alerts, 和 可选 notifications.
- Keep logs 在...中
.state/logs/(或UNRAID_STATE_DIR/logs/如果 overridden). - Prefer 使用 cron 模板:
./scripts/unraid_monitor.cron.模板.
Suggested Cron Schedule
Use the template file as the source of truth:
./scripts/unraid_monitor.cron.模板
Setup flow:
- 替换
/path/到/Unraid_Claw在...中 模板. - Keep one schedule line (15-minute recommended baseline).
- Install 通过
crontab.
Example: run every 15 minutes.
/15 cd /path/to/Unraid_Claw && set -a && . ./.env && set +a && ./scripts/unraid_cron_runner.sh >> ./.state/logs/cron.log 2>&1
Example: run every 5 minutes for tighter monitoring.
/5 cd /path/to/Unraid_Claw && set -a && . ./.env && set +a && ./scripts/unraid_cron_runner.sh >> ./.state/logs/cron.log 2>&1
OpenClaw Behavior 对于 Cron Requests
- 如果 用户 asks 到 "设置 up cron":
scripts/unraid_monitor.cron.模板.
- 使用 unraid_cron_runner.sh 作为 command target.
- Ensure .env loading included.
- 如果 用户 asks 到 "验证 cron":
.state/logs/cron.log 和 runner logs.
- Confirm 提醒 exit codes 和 通知 results.
- 如果 用户 asks 到 "disable cron":
Never place secrets directly in crontab lines. Always source .env.
响应 样式
Keep responses concise and operator-friendly.
Example shape:
Overall: warning
Time: 2026-03-20T14:22:00ZSystem:
- Uptime: 12d 4h
- CPU: 68% (72 C)
- Memory: 81%
Array:
- State: started
- Sync: parity-check 43%
- Disk alerts: disk3 SMART warning
Docker:
- Total: 14
- Running: 12
- Stopped: 2 (plex, immich_ml)
Alerts:
- Parity check in progress
- 1 disk SMART warning