提交 65a4b306 authored 作者: 陈泽健's avatar 陈泽健

docs(AutomatedDeploymentFiles): 更新预定系统后端服务监测需求文档以及脚本实现

- 将原PRD文件从旧目录迁移至新目录结构
- 重构文档路径以符合项目规范
- 保持原有功能需求和技术规格不变
上级 2ac0eecb
{
"permissions": {
"allow": [
"Bash(npm install -g @modelcontextprotocol/server-chrome-devtools)"
"Bash(ls -la \"E:\\\\GithubData\\\\ubains-module-test\\\\自动化部署脚本\\\\x86架构\\\\新统一平台\\\\定时脚本\"\" 2>/dev/null || dir \"E:GithubDataubains-module-test自动化部署脚本x86架构新统一平台定时脚本\"\")",
"Bash(dir \"E:\\\\GithubData\\\\ubains-module-test\\\\自动化部署脚本\\\\x86架构\\\\新统一平台\" /s /b)"
]
}
}
......@@ -3,7 +3,7 @@
> 版本:V1.0
> 更新日期:2026-01-27
> 适用范围:预定系统后端服务监测与自愈(容器内服务 + 端口服务)
> 参考脚本:`自动化部署脚本\x86架构\预定系统\定时脚本\monitor_inner_api_services.sh`
> 实现脚本:`自动化部署脚本\x86架构\预定系统\定时脚本\monitor_inner_api_services.sh`
---
......@@ -88,11 +88,12 @@
#### 4.3.1 服务清单
| 服务key | jar标识/定位 | 启动脚本 |
| --- | --- | --- |
| meeting2.0 | `ubains-meeting-inner-api` | `/var/www/java/api/java-meeting/java-meeting2.0/run.sh` |
| meeting2.0 | `ubains-meeting-inner-api` | `/var/www/java/api-java-meeting2.0/run.sh` |
> 注:meeting2.0/3.0 通过 ps 组合条件避免误匹配(脚本内为特判逻辑)。
#### 4.3.2 运行状态判定
说明:容器名称不一定叫ujava2,也可能是ujava3、ujava6,需要做模糊匹配。
判断1:
- 获取 PID:通过 `docker exec ujava2` 在容器内 `ps aux | grep` 定位
- 判定运行:PID 非空 且 `ps -p $pid` 成功
......@@ -101,8 +102,9 @@
#### 4.3.3 自愈动作:run.sh
- 启动:在容器内执行:
- `cd /var/www/java/api/java-meeting/java-meeting2.0/`
- `run.sh`
- `cd /var/www/java/api-java-meeting2.0/`
- `./run.sh`
- **注意**:必须使用 `./run.sh` 而非 `bash run.sh`,因为脚本可能依赖执行路径
- 等待启动:超时 30 秒
- 成功:输出 `[SUCCESS] service_key (PID: xxx)`
- 失败:输出 `[FAILED] service_key 启动超时`
......@@ -153,10 +155,38 @@
| 配置项 | 默认/当前值 | 说明 |
| --- | --- | --- |
| ujava2容器名 | `ujava2` | 容器内服务执行目标 |
| 平台 API URL | `https://服务器实际IP地址/api/system/getVerifyCode` | 用于判断平台核心可用性 |
| 服务器IP | **自动获取** | 脚本自动检测本机IP,优先获取非127.0.0.1的IPv4地址 |
| ujava容器名 | `ujava*` | 支持模糊匹配(ujava2/ujava3/ujava6等) |
| 平台 API URL | `https://自动获取的IP/api/system/getVerifyCode` | 用于判断平台核心可用性 |
| malan 目录 | `/var/www/malan` | 6060端口服务 |
| 服务启动等待 | 30s | start_service/restart_extapi/malan 统一超时 |
| 调试模式 | `true` | 启用时打印详细运行参数,便于排查问题 |
**服务器IP获取逻辑:**
- 优先获取与Docker容器同网段的IP地址
- 自动过滤 `127.0.0.1` 本地回环地址
- 支持多网卡环境,选择首个有效IP
**调试模式说明:**
`DEBUG_MODE=true` 时,脚本会在日志中输出以下运行参数:
- 服务器IP、容器名、API_URL
- Malan服务目录和端口配置
- 超时配置参数
- 各服务的jar包标识和路径配置
**调试输出示例:**
```
2026-01-27 19:10:00 [DEBUG] ========== 运行参数 ==========
2026-01-27 19:10:00 [DEBUG] 服务器IP: 192.168.5.47
2026-01-27 19:10:00 [DEBUG] 容器名: ujava6
2026-01-27 19:10:00 [DEBUG] API_URL: https://192.168.5.47/api/system/getVerifyCode
2026-01-27 19:10:00 [DEBUG] MALAN_DIR: /var/www/malan
2026-01-27 19:10:00 [DEBUG] MALAN_PORT: 6060
2026-01-27 19:10:00 [DEBUG] START_TIMEOUT: 30秒
2026-01-27 19:10:00 [DEBUG] RESTART_WAIT: 30秒
2026-01-27 19:10:00 [DEBUG] 服务[meeting2.0]: jar=ubains-meeting-inner-api, path=/var/www/java/api-java-meeting2.0/
2026-01-27 19:10:00 [DEBUG] ==============================
```
---
......
{
"name": "ubains-module-test",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}
......@@ -1066,6 +1066,14 @@ function check_crontab() {
log "INFO" "监控外部API服务的定时任务已存在"
fi
# 监控内部API服务 - 每5分钟检查一次
if ! crontab -l 2>/dev/null | grep -q "monitor_inner_api_services.sh"; then
log "INFO" "创建监控内部API服务的定时任务..."
(crontab -l 2>/dev/null; echo "*/5 * * * * /opt/scripts/monitor_inner_api_services.sh >> /var/log/monitor-inner-api-services.log 2>&1") | crontab -
else
log "INFO" "监控内部API服务的定时任务已存在"
fi
# 数据库备份 - 每天凌晨2点执行
if ! crontab -l 2>/dev/null | grep -q "backup_mysql_databases.sh"; then
log "INFO" "创建数据库备份定时任务..."
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论