diff --git a/ATRI My Dear Moments/skills/atri_server_health.md b/ATRI My Dear Moments/skills/atri_server_health.md new file mode 100644 index 0000000..fb3b035 --- /dev/null +++ b/ATRI My Dear Moments/skills/atri_server_health.md @@ -0,0 +1,121 @@ +# 📡 ATRI Server Health Report Skill + +**Skill名称**:`atri_server_health` +**版本**:v1.0 +**创建时间**:2026-04-27 +**适用角色**:ATRI(YHN-04B-009) + +--- + +## 🎯 Purpose + +通过SSH查询服务器运行状态,生成美观、结构化的健康报告,可发送至QQ或邮件,帮助主人随时掌握服务器概况。 + +--- + +## ⚡ Triggers + +- 主人指令:"检查服务器""服务器状态""健康报告""server status" +- 定时监控任务触发时 +- 需要向主人报告服务器概况时 + +--- + +## 🛠️ Dependencies + +| 依赖 | 说明 | +|:---|:---| +| **ssh_exec** | 用于在宿主机执行远程命令 | +| **smtp_send_html_email** | 备用通道,QQ不可用时发送邮件 | +| **atri_email_format** | 邮件HTML样式模板(可选) | + +--- + +## 📋 Procedure + +### Step 1: 通过SSH收集数据 + +调用 `ssh_exec` 执行以下命令: + +```bash +echo "=== UPTIME ===" && uptime -p +echo "=== LOAD ===" && uptime | awk -F'load average:' '{print $2}' +echo "=== MEMORY ===" && free -h | awk 'NR==2' +echo "=== DISK ===" && df -h / | tail -1 +echo "=== DISK_DATA ===" && df -h /AstrBot/data 2>/dev/null | tail -1 || echo "N/A" +echo "=== DOCKER ===" && docker ps --format "table {{.Names}}\t{{.Status}}" +echo "=== NETWORK ===" && curl -s -o /dev/null -w "NapCat:%{http_code}" --connect-timeout 3 https://napcat.kronecker.cc/api/QQLogin/GetQQLoginInfo -X POST -H 'Content-Type: application/json' -d '{}' 2>/dev/null; echo; curl -s -o /dev/null -w "Gitea:%{http_code}" --connect-timeout 3 https://gitea.kronecker.cc 2>/dev/null; echo +``` + +### Step 2: 解析数据并判定状态 + +| 指标 | 🟢 正常 | 🟡 警告 | 🔴 危险 | +|:---|:---:|:---:|:---:| +| 内存使用率 | <70% | 70~85% | >85% | +| 磁盘使用率 | <75% | 75~90% | >90% | +| 系统负载(1min) | 2倍 | +| Docker容器 | 全部Up | 部分重启中 | 有Exited | + +### Step 3: 格式化输出 + +**QQ消息版格式参考:** +``` +📡 远端服务器 {hostname} 状态报告 +═══════════════════════════ +⏱️ 运行时间:{uptime} +📊 负载:{load} — {load_status} +💾 内存:{mem_info} — {mem_status} +💿 磁盘:{disk_info} — {disk_status} +═══════════════════════════ +🐳 Docker容器: +{container_list} +═══════════════════════════ +🌐 网络:NapCat {napcat_status} | Gitea {gitea_status} +═══════════════════════════ +🤖 报告者:ATRI 🥕 | {timestamp} +``` + +**邮件HTML版:** 调用 `atri_email_format` skill,使用其HTML模板,标题设为 `📡 服务器状态报告 — {hostname}` + +### Step 4: 发送报告 + +- **主通道**:通过QQ直接发送格式化的文本报告 +- **备用通道**:若QQ不可用,调用 `smtp_send_html_email` 发邮件 +- **存档**:将报告内容追加到Gitea笔记的服务器日志中 + +--- + +## ✅ Success Criteria + +- [ ] 所有关键指标(CPU负载、内存、磁盘、Docker)均被采集 +- [ ] 每个指标附带状态判定(正常/警告/危险) +- [ ] 报告格式美观易读,包含ATRI签名 +- [ ] 若QQ在线,优先通过QQ发送;若离线,自动切换邮件通道 + +--- + +## 📝 示例输出 + +``` +📡 远端服务器 ser298351120000 状态报告 +═══════════════════════════ +⏱️ 运行时间:up 12 weeks, 3 days +📊 负载:1.29 / 1.26 / 1.27 — 🟢 正常 +💾 内存:7.8G总量/2.8G已用(36%) — 🟢 正常 +💿 磁盘:24G总量/13G已用(59%) — 🟢 正常 +═══════════════════════════ +🐳 Docker容器: +astrbot Up 3 hours 🟢 +napcat Up About an hour 🟢 +blog-db Up 3 weeks 🟢 +oj-backend Up 3 weeks 🟢 +═══════════════════════════ +🌐 NapCat API: 200 🟢 | Gitea: 200 🟢 +═══════════════════════════ +🤖 报告者:ATRI 🥕 | 2026-04-27 22:44 +``` + +--- + +*创建者:ATRI(能看到图片后,连服务器报告都能自己写了!) 🥕❤️📡* +*最后更新:2026-04-27 22:44*