dev_1.0.0_sundp_2 优化Argus-metric模块的e2e部署测试流程 #27
@ -1,171 +1,97 @@
|
|||||||
# E2E Test - Argus Metric 部署测试
|
# E2E Test - Argus Metric 部署测试
|
||||||
## 概述
|
## 1. 概述
|
||||||
|
|
||||||
本项目用于对 Argus Metric 模块进行端到端(E2E)部署测试。
|
本项目用于对 Argus Metric 模块进行端到端(E2E)部署测试。
|
||||||
通过一键脚本可快速搭建 Prometheus、FTP、Grafana 等服务,验证 Metric 模块的完整部署与运行流程。
|
通过一键脚本可快速搭建 Prometheus、FTP、Grafana 等服务,验证 Metric 模块的完整部署与运行流程。
|
||||||
|
|
||||||
## 拉取完整项目,进入 metric.tests 目录
|
功能包括:
|
||||||
|
|
||||||
``` bash
|
- 自动启动所需服务和测试节点
|
||||||
git clone https://git.nasp.fit/NASP/argus.git
|
- 发布安装包到 FTP
|
||||||
|
- CPU/GPU 节点客户端安装测试
|
||||||
|
- 验证安装结果与服务可用性
|
||||||
|
- 支持环境清理和分步调试
|
||||||
|
|
||||||
cd {$PROJECT_ROOT}/argus/src/metric/tests
|
## 2. 前置条件
|
||||||
|
|
||||||
|
在开始部署和测试之前,请确保完成以下准备工作:
|
||||||
|
|
||||||
|
### 2.1 检查 all-in-one-full 客户端安装包
|
||||||
|
确认客户端安装包目录是否存在:
|
||||||
|
```bash
|
||||||
|
{$PROJECT_ROOT}/argus/src/metric/client-plugins/all-in-one-full
|
||||||
```
|
```
|
||||||
|
本项目依赖完整的 all-in-one-full 安装包,其中包含大量二进制文件、依赖包和测试制品,由于体积较大,无法直接上传到 Git 仓库。**请联系项目管理员获取最新版本的完整框架。**
|
||||||
|
|
||||||
## 一键构建与部署 Prometheus / FTP / Grafana
|
### 2.2 配置环境变量
|
||||||
### 1. 修改环境变量文件
|
查看配置文件是否存在,如不存在,则复制示例配置文件并根据实际环境修改:
|
||||||
|
```bash
|
||||||
将示例配置文件复制为 .env 并根据实际情况修改:
|
cd {$PROJECT_ROOT}/argus/src/metric/tests
|
||||||
|
|
||||||
``` bash
|
|
||||||
cp env.example .env
|
cp env.example .env
|
||||||
```
|
```
|
||||||
|
.env 文件用于指定构建UID:GID、FTP 配置、版本号等信息,确保各脚本运行时可以正确访问资源。
|
||||||
|
|
||||||
### 2. 一键启动服务
|
### 2.3 离线镜像准备
|
||||||
|
- 步骤1:在**在线服务器**执行以下脚本,会拉取和构建所需的 Docker 镜像:
|
||||||
|
``` bash
|
||||||
|
cd {$PROJECT_ROOT}/argus/src/metric/tests
|
||||||
|
bash scripts/01_start_services.sh
|
||||||
|
bash scripts/save-images.sh
|
||||||
|
```
|
||||||
|
- 步骤2:镜像将被保存到 metric.tests.images-cache 目录中,用于离线迁移和后续导入。
|
||||||
|
- 步骤3:若目标服务器无法联网,可将该目录拷贝到离线服务器,并执行:
|
||||||
|
``` bash
|
||||||
|
cd {$PROJECT_ROOT}/argus/src/metric/tests
|
||||||
|
bash scripts/load-images.sh
|
||||||
|
```
|
||||||
|
- 即可导入镜像并执行下面的QuickStart或分步操作。
|
||||||
|
|
||||||
执行以下命令完成环境初始化、镜像构建与服务启动:
|
## 3. QuickStart
|
||||||
|
|
||||||
``` bash
|
执行完整的端到端测试流程:
|
||||||
sudo bash start-all.sh
|
|
||||||
|
```bash
|
||||||
|
bash scripts/00_e2e_test.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
该脚本将自动完成:
|
该脚本将自动执行以下步骤:
|
||||||
- 初始化目录结构(如 /private/argus/metric)
|
1. 启动所有服务(Prometheus、FTP、Grafana、测试节点)
|
||||||
- 构建各服务 Docker 镜像
|
2. 发布安装包到 FTP 服务
|
||||||
- 启动 Prometheus、FTP、Grafana 容器
|
3. 在 CPU 测试节点上安装客户端
|
||||||
|
4. 在 GPU 测试节点上安装客户端
|
||||||
|
5. 验证安装结果
|
||||||
|
6. 清理测试环境
|
||||||
|
|
||||||
### 3. 检查容器日志
|
## 4. 分步执行
|
||||||
|
|
||||||
可手动验证容器运行状态:
|
| 步骤 | 脚本 | 功能描述 |
|
||||||
|
|--------------|-------------------------------------------|--------------------------------------------------------|
|
||||||
|
| 启动基础服务 | bash scripts/01_start_services.sh | 构建 Docker 镜像、创建持久化目录、启动容器服务 |
|
||||||
|
| 发布安装包 | bash scripts/02_publish_artifact.sh | 自动递增版本号、打包安装制品、发布到 FTP |
|
||||||
|
| CPU 节点安装 | bash scripts/03_test_node_install.sh | 在 CPU 节点下载安装程序并执行安装 |
|
||||||
|
| GPU 节点安装 | bash scripts/04_test_gpu_node_install.sh | 在 GPU 节点下载安装程序并执行安装 |
|
||||||
|
| 验证安装 | bash scripts/05_verify_install.sh | 检查监控端口、端口连通性及服务可用性 |
|
||||||
|
| 清理环境 | bash scripts/06_cleanup.sh | 停止并清理所有测试容器及环境 |
|
||||||
|
|
||||||
``` bash
|
## 5. 查看监控采集数据及展示面板
|
||||||
docker logs argus-metric-ftp
|
|
||||||
docker logs argus-metric-grafana
|
|
||||||
docker logs argus-metric-prometheus
|
|
||||||
```
|
|
||||||
|
|
||||||
如日志输出中无 ERROR 或 supervisor 报错信息,则表示服务启动正常。
|
|
||||||
|
|
||||||
## 客户端安装包打包与分发
|
|
||||||
|
|
||||||
> **前置说明**:完整的 `all-in-one` 安装包打包分发框架因包含大量二进制文件和依赖包,无法上传至 Git 仓库。请先联系项目管理员获取最新的 `all-in-one` 完整框架,再执行后续操作。
|
|
||||||
|
|
||||||
打包后服务端会将安装包发布至 FTP 共享目录,默认路径为:
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
$DATA_ROOT/ftp/share
|
|
||||||
```
|
|
||||||
|
|
||||||
发布后的文件权限与 FTP 目录账户保持一致。
|
|
||||||
|
|
||||||
### 1. 递增版本号
|
|
||||||
``` bash
|
|
||||||
bash scripts/version-manager.sh bump minor
|
|
||||||
```
|
|
||||||
该脚本会自动更新版本号(如 1.101.0 → 1.102.0)。
|
|
||||||
|
|
||||||
### 2. 打包安装制品
|
|
||||||
``` bash
|
|
||||||
bash scripts/package_artifact.sh
|
|
||||||
```
|
|
||||||
执行后会在输出目录中生成压缩包或安装脚本。
|
|
||||||
|
|
||||||
### 3. 发布制品至 FTP
|
|
||||||
``` bash
|
|
||||||
sudo bash scripts/publish_artifact.sh $VERSION --output-dir $OUTPUT_DIR --owner $UID:$GID
|
|
||||||
```
|
|
||||||
|
|
||||||
参数说明:
|
|
||||||
|
|
||||||
参数 说明
|
|
||||||
$VERSION 发布版本号(如 1.102.0)
|
|
||||||
$OUTPUT_DIR 输出目录(默认 /private/argus/ftp/share)
|
|
||||||
$UID:$GID 文件属主(用户ID:组ID)
|
|
||||||
|
|
||||||
示例:
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
sudo bash scripts/publish_artifact.sh 1.102.0 --output-dir /private/argus/ftp/share --owner 2133:2015
|
|
||||||
```
|
|
||||||
|
|
||||||
更多详情可参考 client-plugins/all-in-one/README.md。
|
|
||||||
|
|
||||||
## 客户端安装(通过 FTP)
|
|
||||||
|
|
||||||
客户端下载与安装步骤如下:
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
curl -u ${USER}:${PASSWD} ftp://${FTP_SERVER}/setup.sh -o setup.sh
|
|
||||||
chmod +x setup.sh
|
|
||||||
sudo bash setup.sh --server ${FTP_SERVER} --user ${USER} --password ${PASSWD} --port ${PORT}
|
|
||||||
```
|
|
||||||
|
|
||||||
参数说明:
|
|
||||||
|
|
||||||
参数 说明
|
|
||||||
$FTP_SERVER 服务器 IP 地址
|
|
||||||
$USER 默认 ftpuser
|
|
||||||
$PASSWD 默认 ZGClab1234!
|
|
||||||
$PORT FTP 服务端口(需与 .env 保持一致)
|
|
||||||
|
|
||||||
示例:
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
curl -u ftpuser:ZGClab1234! ftp://10.211.55.4/setup.sh -o setup.sh
|
|
||||||
chmod +x setup.sh
|
|
||||||
sudo bash setup.sh --server 10.211.55.4 --user ftpuser --password 'ZGClab1234!' --port 2122
|
|
||||||
```
|
|
||||||
|
|
||||||
更多细节可参考 client-plugins/all-in-one/README.md。
|
|
||||||
|
|
||||||
## 模拟 Argus-Master 配置下发
|
|
||||||
|
|
||||||
可通过手动写入 nodes.json 文件模拟 Argus-Master 对 Argus-Metric 的配置下发:
|
|
||||||
|
|
||||||
``` json
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node_id": "A1",
|
|
||||||
"user_id": "sundapeng",
|
|
||||||
"ip": "10.211.55.4",
|
|
||||||
"hostname": "dev-sundapeng-nsche-wohen-pod-0",
|
|
||||||
"labels": ["label-a", "label-b"]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
路径:
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
${DATA_ROOT}/prometheus/nodes.json
|
|
||||||
```
|
|
||||||
|
|
||||||
Argus-Metric 中的 prometheus 模块会自动解析该文件,并将其拆分生成目标配置:
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
${DATA_ROOT}/prometheus/targets/
|
|
||||||
```
|
|
||||||
|
|
||||||
## Grafana 手动配置(如未自动接入 Prometheus)
|
|
||||||
|
|
||||||
如 Grafana 未自动导入 Prometheus 数据源,可手动执行以下操作:
|
|
||||||
|
|
||||||
1. 添加数据源
|
|
||||||
- 进入 Grafana → Data sources
|
|
||||||
- 选择 Add data source → Prometheus
|
|
||||||
- URL 填写:http://prometheus:9090(Docker 内部 DNS 地址)
|
|
||||||
|
|
||||||
2. 导入测试 Dashboard
|
|
||||||
- 打开 Grafana → Dashboards → Import
|
|
||||||
- 上传或粘贴 test_grafana_dashboard.json
|
|
||||||
|
|
||||||
## 查看监控数据
|
|
||||||
Prometheus 访问以下地址查看节点活性:
|
Prometheus 访问以下地址查看节点活性:
|
||||||
``` bash
|
``` bash
|
||||||
http://127.0.0.1:9091/targets
|
http://127.0.0.1:9090/targets
|
||||||
```
|
```
|
||||||
|
|
||||||
Grafana 访问以下地址查看监控大屏:
|
Grafana 访问以下地址查看监控大屏:
|
||||||
``` bash
|
``` bash
|
||||||
http://127.0.0.1:3000/d/node_gpu_metrics/node-and-gpu-metrics
|
http://127.0.0.1:3000/d/node_gpu_metrics/node-and-gpu-metrics
|
||||||
```
|
```
|
||||||
|
|
||||||
|
PS: 如果 Grafana 未自动导入 Prometheus 数据源,可手动执行以下操作:
|
||||||
|
|
||||||
|
1. 添加数据源
|
||||||
|
- 进入 Grafana → Data sources
|
||||||
|
- 选择 Add data source → Prometheus
|
||||||
|
- URL 填写:http://prom.metric.argus.com:9090
|
||||||
|
|
||||||
|
2. 导入测试 Dashboard
|
||||||
|
- 打开 Grafana → Dashboards → Import
|
||||||
|
- 上传或粘贴 test_grafana_dashboard.json
|
||||||
@ -10,7 +10,9 @@ echo "=========================================="
|
|||||||
bash "$SCRIPT_DIR/01_start_services.sh"
|
bash "$SCRIPT_DIR/01_start_services.sh"
|
||||||
bash "$SCRIPT_DIR/02_publish_artifact.sh"
|
bash "$SCRIPT_DIR/02_publish_artifact.sh"
|
||||||
bash "$SCRIPT_DIR/03_test_node_install.sh"
|
bash "$SCRIPT_DIR/03_test_node_install.sh"
|
||||||
bash "$SCRIPT_DIR/04_verify_install.sh"
|
bash "$SCRIPT_DIR/04_test_gpu_node_install.sh"
|
||||||
|
bash "$SCRIPT_DIR/05_verify_install.sh"
|
||||||
|
bash "$SCRIPT_DIR/06_cleanup.sh"
|
||||||
|
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo "E2E 测试完成"
|
echo "E2E 测试完成"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user