hy-app-monitor/README.md
2026-04-22 17:50:35 +08:00

163 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <service>` 之前,也会先把对应宿主机的完整 `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 <service>`
说明:
- `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连接、内存、网络、操作计数、复制集、数据库统计
- 自动刷新:前端可切换刷新间隔,并保存在浏览器本地