当前部署情况 - h1: 部署server & client - h2: 部署client - 部署2025-11-25 - 部署目录: /home2/argus/server , /home2/argus/client - 部署使用账号:argus 网络拓扑: - h1 作为docker swarm manager - h2 作为worker加入docker swarm - docker swarm 上创建overlay network 访问方式: - 通过ssh到h1服务器,端口转发 20006-20011 端口到笔记本本地; - 门户网址:http://localhost:20006/dashboard 部署截图:    注意事项: - server各容器使用域名作为overlay network上alias别名,实现域名访问,当前版本禁用bind作为域名解析,原因是容器重启后IP变化场景bind机制复杂且不稳定。 - client 构建是内置安装包,容器启动时执行安装流程,后续重启容器跳过安装步骤。 - UID/GID:部署使用 argus账号 uid=2133, gid=2015。 Reviewed-on: #51 Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn> Reviewed-by: xuxt <xuxt@zgclab.edu.cn> Reviewed-by: huhy <husteryezi@163.com>
5.5 KiB
5.5 KiB
Argus Server 安装指南(deployment_new)
适用:通过 Server 安装包在 Docker Swarm + external overlay 网络一体化部署 Argus 服务端组件。
—— 本文强调“怎么做、看什么、符合了才继续”。
一、准备条件(开始前确认)
- Docker 与 Docker Compose v2 已安装;
docker info正常;docker compose version可执行。 - 具备 root/sudo 权限;磁盘可用空间 ≥ 10GB(包根与
/var/lib/docker)。 - 你知道本机管理地址(SWARM_MANAGER_ADDR),该 IP 属于本机某网卡,可被其他节点访问。
- 很重要:以统一账户
argus(UID=2133,GID=2015)执行后续安装与运维,并将其加入docker组;示例命令如下(如需不同 UID/GID,请替换为贵方标准):
后续的解压与执行(config/install/selfcheck 等)均使用该# 1) 创建主组(GID=2015,组名 argus;若已存在可跳过) sudo groupadd --gid 2015 argus || true # 2) 创建用户 argus(UID=2133、主组 GID=2015,创建家目录并用 bash 作为默认 shell;若已存在可用 usermod 调整) sudo useradd --uid 2133 --gid 2015 --create-home --shell /bin/bash argus || true sudo passwd argus # 3) 将 argus 加入 docker 组,使其能调用 Docker Daemon(新登录后生效) sudo usermod -aG docker argus # 4) 验证(重新登录或执行 newgrp docker 使组生效) su - argus -c 'id; docker ps >/dev/null && echo OK || echo NO_DOCKER_PERMISSION'argus账户进行。
二、解包与目录结构
- 解压:
tar -xzf server_YYYYMMDD.tar.gz。 - 进入:
cd server_YYYYMMDD/ - 你应当能看到:
images/(逐服务镜像 tar.gz,如argus-master-YYYYMMDD.tar.gz)compose/(docker-compose.yml与.env.example)scripts/(安装/运维脚本)private/argus/(数据与配置骨架)docs/(中文文档)
三、配置 config(生成 .env 与 SWARM_MANAGER_ADDR)
命令:
export SWARM_MANAGER_ADDR=<本机管理IP>
./scripts/config.sh
脚本做了什么:
- 检查依赖与磁盘空间;
- 自动从“端口 20000 起”分配所有服务端口,确保“系统未占用”且“彼此不冲突”;
- 写入
compose/.env(包含端口、镜像 tag、overlay 名称与 UID/GID 等); - 将当前执行账户的 UID/GID 写入
ARGUS_BUILD_UID/GID(若主组名是 docker,会改用“与用户名同名的组”的 GID,避免拿到 docker 组 999); - 更新/追加
cluster-info.env中的SWARM_MANAGER_ADDR(不会覆盖其他键)。
看到什么才算成功:
- 终端输出:
已生成 compose/.env 并更新 cluster-info.env 的 SWARM_MANAGER_ADDR。 compose/.env打开应当看到:- 端口均 ≥20000 且没有重复;
ARGUS_BUILD_UID/GID与id -u/-g一致;SWARM_MANAGER_ADDR=<你的IP>。
遇到问题:
- 端口被异常占用:可删去
.env后再次执行config.sh,或手工编辑端口再执行install.sh。
四、安装 install(一次到位)
命令:
./scripts/install.sh
脚本做了什么:
- 若 Swarm 未激活:执行
docker swarm init --advertise-addr $SWARM_MANAGER_ADDR; - 确保 external overlay
argus-sys-net存在; - 导入
images/*.tar.gz到本机 Docker; docker compose up -d启动服务;- 等待“六项就绪”:
- Master
/readyz=200、ES/_cluster/health=200、Prometheus TCP 可达、Grafana/api/health=200、Alertmanager/api/v2/status=200、Kibana/api/statuslevel=available;
- Master
- 校验 Docker DNS + overlay alias:在
argus-web-proxy内通过getent hosts与curl检查master.argus.com、grafana.metric.argus.com等域名连通性; - 写出
cluster-info.env(含SWARM_JOIN_TOKEN_{WORKER,MANAGER}/SWARM_MANAGER_ADDR;compose 架构下不再依赖 BINDIP/FTPIP); - 生成
安装报告_YYYYMMDD-HHMMSS.md(端口、健康检查摘要与提示)。
看到什么才算成功:
docker compose ps全部是 Up;安装报告_…md中各项 HTTP 检查为 200/available;cluster-info.env包含五个关键键:SWARM_MANAGER_ADDR=...SWARM_MANAGER_ADDR=...SWARM_JOIN_TOKEN_*=...SWARM_JOIN_TOKEN_WORKER=SWMTKN-...SWARM_JOIN_TOKEN_MANAGER=SWMTKN-...
五、健康自检与常用操作
- 健康自检:
./scripts/selfcheck.sh- 期望输出:
selfcheck OK -> logs/selfcheck.json - 文件
logs/selfcheck.json中overlay_net/es/kibana/master_readyz/prometheus/grafana/alertmanager/web_proxy_cors为 true。
- 期望输出:
- 状态:
./scripts/status.sh(相当于docker compose ps)。 - 诊断:
./scripts/diagnose.sh(收集容器/HTTP/CORS/ES 细节,输出到logs/diagnose_*.log)。 - 卸载:
./scripts/uninstall.sh(Compose down)。 - ES 磁盘水位临时放宽/还原:
./scripts/es-watermark-relax.sh/./scripts/es-watermark-restore.sh。
六、下一步:分发 cluster-info.env 给 Client
- 将
cluster-info.env拷贝给安装 Client 的同事; - 对方在 Client 机器的包根放置该文件(或设置
CLUSTER_INFO=/绝对路径)即可。
七、故障排查快览
- Proxy 502 或 8080 连接复位:通常是 overlay alias 未生效或 web-proxy 尚未解析到其它服务;重跑
install.sh(会重启栈并在容器内校验 DNS),或查看logs/diagnose_error.log。 - Kibana 不 available:等待 1–2 分钟、查看
argus-kibana-sys日志; - cluster-info.env 的 SWARM_MANAGER_ADDR 为空:重新
export SWARM_MANAGER_ADDR=<IP>; ./scripts/config.sh或./scripts/install.sh(会回读.env补写)。