# hy-app-monitor 部署在 `deploy` 机器上的轻量监控面板。 - 页面端口:`2026` - 页面入口:`http://43.164.75.199:2026/` - 服务健康:直接探测各业务服务健康接口 - 主机资源:通过 `TAT` 批量采集 `CPU / 内存 / 磁盘 / 进程数` - Nacos:直连 Nacos OpenAPI,列出命名空间、服务和注册实例 - MongoDB:直连 Mongo,采集 `serverStatus / listDatabases / replSetGetStatus` ## 目录 - `server.py`:后端入口 - `monitor/`:Python 模块实现 - `config/targets.json`:监控目标和实例 ID - `static/`:前端页面 - `scripts/`:启停、自启安装、前台运行脚本 - `systemd/`:systemd unit - `ops/`:TAT 放行和远端部署脚本 - `.env.example`:运行配置模板 ## 运行配置 项目根目录 `.env` 是唯一运行配置源,不入库。 最少需要: ```bash APP_BIND=0.0.0.0 APP_PORT=2026 DEFAULT_REFRESH_INTERVAL_SECONDS=10 REFRESH_INTERVAL_OPTIONS=5,10,15,30,60 NACOS_BASE_URL=http://10.2.1.17:8848 NACOS_NAMESPACE_ID=... MONGO_URI=mongodb://... DEPLOY_REGION=me-saudi-arabia TENCENT_SECRET_ID=*** TENCENT_SECRET_KEY=*** ``` 如果你要直接在页面里做“构建镜像 -> 推 Harbor -> 更新服务”,还需要补这几项: ```bash HARBOR_REGISTRY=10.2.1.3:18082 HARBOR_PROJECT=likei HARBOR_USERNAME=*** HARBOR_PASSWORD=*** JAVA_REPO_ROOT=/opt/deploy/sources/chatapp3-java GOLANG_REPO_ROOT=/opt/deploy/sources/chatapp3-golang UPDATE_DEFAULT_JAVA_GIT_REF=main UPDATE_DEFAULT_GO_GIT_REF=main ``` 可以直接复制模板: ```bash cp .env.example .env ``` ## 本地运行 ```bash bash scripts/start.sh bash scripts/status.sh ``` 访问: ```bash http://127.0.0.1:2026/ ``` ## systemd 开机自启 在远端项目目录执行: ```bash bash scripts/install_systemd.sh ``` 常用命令: ```bash bash scripts/restart.sh bash scripts/status.sh bash scripts/uninstall_systemd.sh ``` ## 通过 TAT 放行端口 ```bash python3 ops/open_port_via_tat.py ``` 默认会: 1. 解析 `deploy` 机器安全组 2. 通过 `TAT` 放开机器内防火墙 3. 通过腾讯云 API 放开安全组 TCP `2026` ## 通过 TAT 远端部署 ```bash python3 ops/deploy_via_tat.py ``` 默认会: 1. 拉取或更新 `/opt/hy-app-monitor` 2. 把本地项目 `.env` 同步到远端项目 `.env` 3. 创建远端 `.venv` 4. 安装 `requirements-ops.txt` 5. 安装并启用 `systemd` 6. 重启服务并检查 `2026` 监听 ## 维护完整 Compose 默认只刷新本地完整模板: ```bash python3 ops/sync_runtime_compose.py ``` 如果要把完整模板同步到远端业务主机: ```bash python3 ops/sync_runtime_compose.py --sync-remote ``` 模板文件会写到本地 `run/compose_templates/`。 滚动重启在真正执行 `docker compose up -d --force-recreate --no-deps ` 之前,也会先把对应宿主机的完整 `docker-compose.yml` 同步到远端,避免线上 compose 被裁剪成子集。 ## 服务更新 页面里的“服务更新”会直接在当前机器上执行这条链路: 1. 从 `JAVA_REPO_ROOT` / `GOLANG_REPO_ROOT` 指向的业务仓按 `git ref` 创建临时 `git worktree` 2. 本地构建镜像并推送到 Harbor 3. 取回 Harbor `digest` 4. 用新 `digest` 更新本地完整 compose 模板 5. 把完整 compose 下发到目标宿主机 6. 先在目标机 `docker pull` 新镜像 7. 最后只对你选中的服务执行 `docker compose up -d --force-recreate --no-deps ` 说明: - `other` 现在也按 Harbor 业务镜像更新,不再继续依赖本地 `./other/service.jar` 挂载 - 页面里的“滚动重启”仍然保留,适合只想让配置生效、不涉及代码构建的场景 - 这条链路默认假设 `hy-app-monitor` 就运行在打包机 / deploy 机上,并且本机已经能访问业务仓、Docker 和 Harbor ## 页面内容 - 主机:`CPU / 内存 / 磁盘 / 进程数`,带阈值颜色分级 - 服务:Java / Golang 健康检查和耗时 - Nacos:命名空间、服务、注册实例、健康状态 - Nacos 配置:读取当前 namespace 下的配置列表,支持格式校验、在线编辑保存 - Golang 配置:读取 app 节点当前运行中的 `service.env`,展示 `chatapp3-golang` 实际消费的环境变量并支持保存 - 服务更新:本地构建选中服务、推送 Harbor、更新完整 compose,并只重建选中的服务 - 滚动重启:可按服务选择 Java / Golang 节点,逐台重启并等待健康恢复 - MongoDB:连接、内存、网络、操作计数、复制集、数据库统计 - 自动刷新:前端可切换刷新间隔,并保存在浏览器本地