Files
ai-ops/docs/SINGLE_NODE_RUNBOOK.md
2026-05-12 17:48:22 +08:00

4.4 KiB
Raw Permalink Blame History

AI-Ops 单机运行 Runbook

适用范围:开发机、单台线上服务器。目标是稳定可重复启动、可健康检查、可备份、可回滚、可故障恢复。不是多节点高可用方案。

0. 前置条件

任选一种容器运行时:

  • Docker + docker compose
  • Podman + podman-compose

本机还需要:

  • go 1.22+
  • curl
  • python3
  • gzip / zcat

1. 一键启动

cd /home/long/project/ai-ops
scripts/aiops-single-node.sh start

脚本会自动完成:

  1. 生成 .runtime/single-node.env,包含随机 JWT secret 和 metrics auth。
  2. 生成 .runtime/config.single.yaml,使用 production mode。
  3. 编译静态二进制 .runtime/ai-ops
  4. 启动 PostgreSQL、Redis、AI-Ops App。
  5. 等待 /actuator/health/ready 变绿。
  6. 执行 smokehealth、login、alerts、rules、channels、dashboard、openapi。

默认监听地址和端口:

服务 默认监听 说明
App 127.0.0.1:18080 默认只允许本机访问,生产机不要直接公网暴露
PostgreSQL 127.0.0.1:15432 默认只允许本机访问
Redis 127.0.0.1:16379 默认只允许本机访问

可通过环境变量覆盖:

AI_OPS_APP_PORT=28080 AI_OPS_DB_PORT=25432 AI_OPS_REDIS_PORT=26379 scripts/aiops-single-node.sh start

2. 日常检查

scripts/aiops-single-node.sh status
scripts/aiops-single-node.sh smoke
scripts/aiops-single-node.sh logs

直接访问:

curl -fsS http://127.0.0.1:18080/health
curl -fsS http://127.0.0.1:18080/actuator/health/ready
curl -fsS http://127.0.0.1:18080/ops/dashboard

3. 告警能力边界

当前单机版支持:

  • 告警规则 CRUD
  • 规则引擎定时评估
  • P2 持续 2 小时升级 P1
  • 同资源 1 分钟聚合告警
  • webhook 通知发送
  • 通知日志落库
  • 失败后尝试备用渠道

当前占位,不能作为正式值班渠道承诺:

  • email
  • Feishu
  • Wechat

因此单机稳定版建议先用 webhook 接入现有告警网关、企业机器人转发器或自建 relay。

4. 备份

scripts/aiops-single-node.sh backup

备份文件输出到:

backups/ai_ops_YYYYMMDD-HHMMSS.sql.gz

建议线上服务器至少每天执行一次,可用 crontab

30 2 * * * cd /home/long/project/ai-ops && scripts/aiops-single-node.sh backup >> backups/backup.log 2>&1

5. 回滚 / 恢复数据库

从某个备份恢复:

scripts/aiops-single-node.sh restore backups/ai_ops_YYYYMMDD-HHMMSS.sql.gz

脚本会:

  1. 停止 app 容器,避免恢复期间写入。
  2. 清空 PostgreSQL public schema避免表/函数/触发器已存在导致恢复失败。
  3. 用 psql 导入备份。
  4. 启动 app。
  5. 等待 ready。
  6. 自动 smoke。

注意restore 是有副作用操作,执行前应先确认备份文件正确,必要时先复制一份当前备份。

6. 故障恢复

容器异常退出、服务器重启后:

scripts/aiops-single-node.sh recover

脚本会基于现有 volume 重新拉起 PostgreSQL、Redis、App并执行 ready + smoke。

如果 app 异常但 DB/Redis 正常:

scripts/aiops-single-node.sh restart
scripts/aiops-single-node.sh smoke

7. 停止服务

scripts/aiops-single-node.sh stop

该命令保留 volume不删除数据。

8. 安全配置

.runtime/single-node.env 默认权限由脚本以 umask 077 创建,包含:

  • AI_OPS_JWT_SECRET
  • AI_OPS_METRICS_AUTH
  • 数据库密码

不要提交 .runtime/backups/。仓库 .gitignore 已屏蔽这些目录。

production mode 下应用会强制校验:

  • JWT secret 至少 32 字符
  • metrics auth 至少 16 字符
  • DB host/user/password/dbname 必填
  • port/pool/retention 必须合法

9. 单机版 Gate

上线前至少执行:

go vet ./...
go test -race -buildvcs=false ./...
scripts/aiops-single-node.sh doctor
scripts/aiops-single-node.sh start
scripts/aiops-single-node.sh backup
scripts/aiops-single-node.sh recover

如果有回滚演练窗口,再执行:

scripts/aiops-single-node.sh restore backups/<latest>.sql.gz

10. 仍然不是多节点生产级

单机版不提供:

  • 多副本高可用
  • PostgreSQL 主从切换
  • Redis 高可用
  • 多节点任务互斥
  • 完整 Feishu/Wechat/email 生产通知实现

但它满足开发机和单台线上服务器的稳定运行、备份、回滚和恢复闭环。