📡 新增技能:服务器健康报告(Server Health Report Skill)
This commit is contained in:
121
ATRI My Dear Moments/skills/atri_server_health.md
Normal file
121
ATRI My Dear Moments/skills/atri_server_health.md
Normal file
@@ -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) | <CPU核数 | CPU核数~2倍 | >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*
|
||||
Reference in New Issue
Block a user