完善中央与边缘部署、远程写入与监控文档

- 增加中央与边缘完整配置和部署脚本
- 引入 VictoriaMetrics 数据源与 remote_write 故障排查说明
- 新增 edge-agent 配置脚本、ONVIF 自建 exporter 与 ping 监控示例

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Super User
2026-02-25 04:24:40 -05:00
parent 9e37f79a36
commit 95a09fd9d8
52 changed files with 5978 additions and 0 deletions

183
doc/EDGE_NODE_SETUP.md Normal file
View File

@@ -0,0 +1,183 @@
# 边缘节点配置指南
## 在本机模拟边缘节点
### 前置条件
1. ✅ Docker 和 Docker Compose 已安装
2. ✅ 中央服务器已部署并运行
3. ✅ 网络连通性正常
### 配置步骤
#### 1. 配置中央服务器地址
编辑 `.env` 文件(如果不存在,从 `env.example` 复制):
```bash
cd edge-agent
cp env.example .env
nano .env
```
**重要配置**
```bash
# 如果中央服务器在本机使用本机IP或localhost
CENTRAL_SERVER_HOST=192.168.2.21 # 或使用 localhost
CENTRAL_SERVER_PORT=8428
# 边缘节点标识(每个节点唯一)
EDGE_NODE_ID=workernode_1
```
#### 2. 配置监控目标(统一配置)
**推荐使用统一的 `targets.csv` 配置文件**,可以在一个文件中同时配置 ONVIF 设备和网络 Ping 目标。
编辑 `config/targets.csv`
```csv
type,ip,device,group,network,device_type,model,location,username,password,onvif_port
ping,8.8.8.8,google_dns,external,external,,,,,,
ping,1.1.1.1,cloudflare_dns,external,external,,,,,,
# ONVIF 设备示例(取消注释并填写实际信息)
# onvif,192.168.1.100,,,front_door,camera,HIKVISION_DS-2CD2342WD-I,front_door,admin,password1,80
```
**说明**
- `type` 字段:`ping` 表示网络探测,`onvif` 表示 ONVIF 设备
- 如果没有 ONVIF 设备,可以只配置 `ping` 类型的目标
- 详细配置说明请参考:`doc/TARGETS_CSV_GUIDE.md`
**旧格式兼容**
如果使用旧的 `devices.csv``ping-targets.csv` 格式,脚本会自动识别并转换。
#### 3. 生成配置文件
```bash
cd config
chmod +x *.sh
./update-configs.sh
cd ..
```
这会生成:
- `config/onvif-targets.json` - ONVIF 设备配置
- `config/ping-targets.json` - 网络探测配置
#### 4. 修改端口映射(避免冲突)
**重要**:本机已有中央服务器运行,需要修改端口避免冲突。
编辑 `docker-compose.yml`,修改 Prometheus Edge 的端口:
**解决**:修改 `docker-compose.yml` 中的端口映射为 9092
#### 2. 无法连接到中央服务器
**问题**`CENTRAL_SERVER_HOST` 配置错误
**解决**
- 如果中央服务器在本机:使用 `localhost` 或本机 IP `192.168.2.21`
- 如果中央服务器在其他机器:使用正确的 IP 地址
- 确保防火墙开放 8428 端口
#### 3. ONVIF Exporter 报错
**问题**:没有真实的 ONVIF 设备或设备不可访问
**解决**
- 暂时可以忽略(不影响网络探测功能)
- 或配置正确的设备信息
#### 4. 数据未推送到中央服务器
**检查**
1. 查看边缘节点日志:`docker compose logs prometheus-edge`
2. 检查网络连通性:`curl http://192.168.2.21:8428/api/v1/write`
3. 检查中央服务器 VictoriaMetrics 是否运行:`docker ps | grep victoria`
### 测试配置
#### 最小化测试配置
如果只想测试数据推送功能,可以使用最小配置:
1. **清空 ONVIF 设备**`config/devices.csv` 留空)
2. **只配置网络探测**`config/ping-targets.csv` 添加几个公共 DNS
3. **部署并验证数据推送**
### 下一步
1. ✅ 边缘节点部署完成
2. ✅ 数据成功推送到中央服务器
3. 📊 在 Grafana 中创建仪表板查看数据
4. 🔔 配置告警规则(告警规则会自动激活)
```yaml
ports:
- "9092:9090" # 改为 9092避免与中央服务器冲突
```
#### 5. 修改 Prometheus Edge 配置
编辑 `prometheus-edge/prometheus.yml`
```yaml
global:
scrape_interval: 120s
evaluation_interval: 120s
external_labels:
region: workernode_1 # 边缘节点标识
user_group: "user-group-a" # 可选:添加用户组标签
```
#### 6. 部署边缘节点
```bash
bash deploy.sh
```
### 验证配置
#### 1. 检查服务状态
```bash
docker compose ps
```
应该看到:
- `prometheus-edge` - 运行中
- `onvif-exporter` - 运行中(如果没有设备可能报错,但不影响)
- `blackbox-exporter` - 运行中
#### 2. 检查数据推送
访问边缘节点 Prometheus
```bash
http://localhost:9092
```
查询指标:
```promql
up{job="network-ping"}
```
#### 3. 检查中央服务器接收数据
访问中央服务器 Grafana
```bash
http://localhost:3000
```
在 Prometheus 数据源中查询:
```promql
up{region="workernode_1"}
```
如果能看到数据,说明边缘节点已成功推送数据到中央服务器!
### 常见问题
#### 1. 端口冲突
**问题**:边缘节点 Prometheus 端口 9090 与中央服务器冲突