# E2E Test - Argus Metric 部署测试
## 概述

本项目用于对 Argus Metric 模块进行端到端（E2E）部署测试。
通过一键脚本可快速搭建 Prometheus、FTP、Grafana 等服务，验证 Metric 模块的完整部署与运行流程。

## 拉取完整项目，进入 metric.tests 目录

``` bash
git clone https://git.nasp.fit/NASP/argus.git

cd {$PROJECT_ROOT}/argus/src/metric/tests
```

## 一键构建与部署 Prometheus / FTP / Grafana
### 1. 修改环境变量文件

将示例配置文件复制为 .env 并根据实际情况修改：

``` bash
cp env.example .env
```

### 2. 一键启动服务

执行以下命令完成环境初始化、镜像构建与服务启动：

``` bash
sudo bash start-all.sh
```

该脚本将自动完成：
- 初始化目录结构（如 /private/argus/metric）
- 构建各服务 Docker 镜像
- 启动 Prometheus、FTP、Grafana 容器

### 3. 检查容器日志

可手动验证容器运行状态：

``` bash
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 访问以下地址查看节点活性：
``` bash
http://127.0.0.1:9091/targets
```

Grafana 访问以下地址查看监控大屏：
``` bash
http://127.0.0.1:3000/d/node_gpu_metrics/node-and-gpu-metrics
```