完善中央与边缘部署、远程写入与监控文档
- 增加中央与边缘完整配置和部署脚本 - 引入 VictoriaMetrics 数据源与 remote_write 故障排查说明 - 新增 edge-agent 配置脚本、ONVIF 自建 exporter 与 ping 监控示例 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
243
doc/ARCHITECTURE.md
Normal file
243
doc/ARCHITECTURE.md
Normal file
@@ -0,0 +1,243 @@
|
||||
# 系统架构图
|
||||
|
||||
## 容器关系图
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 边缘节点 (Edge Agents) │
|
||||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||||
│ │ Edge Node 1 │ │ Edge Node 2 │ │ Edge Node N │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ Prometheus │ │ Prometheus │ │ Prometheus │ │
|
||||
│ │ Edge │ │ Edge │ │ Edge │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ ONVIF │ │ ONVIF │ │ ONVIF │ │
|
||||
│ │ Exporter │ │ Exporter │ │ Exporter │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ Blackbox │ │ Blackbox │ │ Blackbox │ │
|
||||
│ │ Exporter │ │ Exporter │ │ Exporter │ │
|
||||
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
|
||||
│ │ │ │ │
|
||||
│ └──────────────────┼──────────────────┘ │
|
||||
│ │ │
|
||||
│ remote_write │
|
||||
│ (HTTP POST) │
|
||||
└────────────────────────────┼────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 中央服务器 (Central Server) │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||||
│ │ VictoriaMetrics (8428) │ │
|
||||
│ │ ┌────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ 远程写入接收器 │ │ │
|
||||
│ │ │ - 接收边缘节点推送的指标数据 │ │ │
|
||||
│ │ │ - 存储时序数据 │ │ │
|
||||
│ │ │ - 提供查询接口 │ │ │
|
||||
│ │ └────────────────────────────────────────────────────┘ │ │
|
||||
│ └────────────────────┬───────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ 数据查询 │
|
||||
│ │ │
|
||||
│ ┌────────────────────▼───────────────────────────────────────┐ │
|
||||
│ │ Prometheus Central (9091) │ │
|
||||
│ │ ┌────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ 指标收集和查询引擎 │ │ │
|
||||
│ │ │ - 从 VictoriaMetrics 读取数据 │ │ │
|
||||
│ │ │ - 抓取本地服务指标 (自身、Grafana、Alertmanager) │ │ │
|
||||
│ │ │ - 评估告警规则 │ │ │
|
||||
│ │ │ - 提供 PromQL 查询接口 │ │ │
|
||||
│ │ └────────────────────────────────────────────────────┘ │ │
|
||||
│ └────────────┬───────────────────────────┬───────────────────┘ │
|
||||
│ │ │ │
|
||||
│ │ 告警触发 │ 数据查询 │
|
||||
│ │ │ │
|
||||
│ ┌────────────▼──────────┐ ┌─────────────▼──────────────┐ │
|
||||
│ │ Alertmanager (9093) │ │ Grafana (3000) │ │
|
||||
│ │ ┌──────────────────┐ │ │ ┌──────────────────────┐ │ │
|
||||
│ │ │ 告警管理 │ │ │ │ 可视化仪表板 │ │ │
|
||||
│ │ │ - 接收告警 │ │ │ │ - 从 Prometheus 查询 │ │ │
|
||||
│ │ │ - 告警分组 │ │ │ │ - 创建图表和仪表板 │ │ │
|
||||
│ │ │ - 发送通知 │ │ │ │ - 多用户管理 │ │ │
|
||||
│ │ │ - 告警抑制 │ │ │ │ - 中文界面 │ │ │
|
||||
│ │ └──────────────────┘ │ │ └──────────────────────┘ │ │
|
||||
│ └───────────────────────┘ │ └──────────────────────────┘ │
|
||||
│ │ │
|
||||
└──────────────────────────────┼──────────────────────────────────┘
|
||||
│
|
||||
│ HTTP 访问
|
||||
│
|
||||
┌───────────────┼───────────────┐
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
||||
│ 管理员 │ │ 用户组A │ │ 用户组B │
|
||||
│ (Admin) │ │ (Org A) │ │ (Org B) │
|
||||
└─────────────┘ └─────────────┘ └─────────────┘
|
||||
```
|
||||
|
||||
## 数据流向
|
||||
|
||||
### 1. 数据收集流程
|
||||
|
||||
```
|
||||
边缘节点设备
|
||||
│
|
||||
├─ ONVIF 设备 (摄像头等)
|
||||
│ └─> ONVIF Exporter ──┐
|
||||
│ │
|
||||
├─ 网络设备 (IP地址) │
|
||||
│ └─> Blackbox Exporter ─┤
|
||||
│ │
|
||||
└─> Prometheus Edge ───────┘
|
||||
│
|
||||
│ remote_write (HTTP POST)
|
||||
▼
|
||||
VictoriaMetrics (8428)
|
||||
│
|
||||
│ 数据存储
|
||||
▼
|
||||
Prometheus Central (9091)
|
||||
│
|
||||
├─> 告警规则评估
|
||||
│ └─> Alertmanager (9093)
|
||||
│
|
||||
└─> 数据查询
|
||||
└─> Grafana (3000)
|
||||
```
|
||||
|
||||
### 2. 告警流程
|
||||
|
||||
```
|
||||
设备异常
|
||||
│
|
||||
▼
|
||||
Prometheus 检测到指标异常
|
||||
│
|
||||
▼
|
||||
告警规则触发 (alert_rules.yml)
|
||||
│
|
||||
▼
|
||||
发送告警到 Alertmanager
|
||||
│
|
||||
▼
|
||||
Alertmanager 处理告警
|
||||
├─> 告警分组
|
||||
├─> 告警抑制
|
||||
└─> 发送通知 (webhook/邮件等)
|
||||
```
|
||||
|
||||
### 3. 查询流程
|
||||
|
||||
```
|
||||
用户访问 Grafana
|
||||
│
|
||||
▼
|
||||
Grafana 发送 PromQL 查询
|
||||
│
|
||||
▼
|
||||
Prometheus 处理查询
|
||||
│
|
||||
├─> 从 VictoriaMetrics 读取数据
|
||||
└─> 返回查询结果
|
||||
│
|
||||
▼
|
||||
Grafana 渲染图表
|
||||
│
|
||||
▼
|
||||
用户查看监控数据
|
||||
```
|
||||
|
||||
## 容器详细说明
|
||||
|
||||
### 1. VictoriaMetrics (8428)
|
||||
- **作用**:远程写入接收器,存储时序数据
|
||||
- **接收**:边缘节点通过 `remote_write` 推送的数据
|
||||
- **提供**:数据查询接口
|
||||
- **数据路径**:`/storage/victoria-metrics-data`
|
||||
|
||||
### 2. Prometheus Central (9091)
|
||||
- **作用**:指标收集、查询和告警评估
|
||||
- **数据源**:
|
||||
- 从 VictoriaMetrics 读取边缘节点数据
|
||||
- 抓取本地服务(自身、Grafana、Alertmanager、VictoriaMetrics)
|
||||
- **功能**:
|
||||
- 评估告警规则 (`alert_rules.yml`)
|
||||
- 提供 PromQL 查询接口
|
||||
- 发送告警到 Alertmanager
|
||||
- **数据路径**:`/storage/prometheus-data`
|
||||
|
||||
### 3. Alertmanager (9093)
|
||||
- **作用**:告警管理和通知
|
||||
- **接收**:来自 Prometheus 的告警
|
||||
- **功能**:
|
||||
- 告警分组和去重
|
||||
- 告警抑制
|
||||
- 发送通知(当前配置:webhook `http://127.0.0.1:5001/`)
|
||||
|
||||
### 4. Grafana (3000)
|
||||
- **作用**:数据可视化和仪表板
|
||||
- **数据源**:从 Prometheus 查询数据
|
||||
- **功能**:
|
||||
- 创建图表和仪表板
|
||||
- 多用户管理(组织隔离)
|
||||
- 中文界面
|
||||
- 权限控制
|
||||
- **数据路径**:`/storage/grafana-data`
|
||||
|
||||
## 网络关系
|
||||
|
||||
```
|
||||
monitoring_net (Docker Bridge Network)
|
||||
│
|
||||
├─ prometheus-central:9090 (内部)
|
||||
│ └─> 映射到宿主机:9091
|
||||
│
|
||||
├─ grafana:3000 (内部)
|
||||
│ └─> 映射到宿主机:3000
|
||||
│
|
||||
├─ alertmanager:9093 (内部)
|
||||
│ └─> 映射到宿主机:9093
|
||||
│
|
||||
└─ victoria-metrics:8428 (内部)
|
||||
└─> 映射到宿主机:8428
|
||||
```
|
||||
|
||||
## 端口映射
|
||||
|
||||
| 容器 | 内部端口 | 外部端口 | 用途 |
|
||||
|------|---------|---------|------|
|
||||
| Prometheus | 9090 | 9091 | PromQL 查询和 Web UI |
|
||||
| Grafana | 3000 | 3000 | 可视化仪表板 |
|
||||
| Alertmanager | 9093 | 9093 | 告警管理界面 |
|
||||
| VictoriaMetrics | 8428 | 8428 | 远程写入和查询接口 |
|
||||
|
||||
## 数据存储
|
||||
|
||||
所有数据存储在 `/storage` 分区:
|
||||
|
||||
```
|
||||
/storage/
|
||||
├── prometheus-data/ # Prometheus 时序数据
|
||||
├── grafana-data/ # Grafana 配置和仪表板
|
||||
├── victoria-metrics-data/ # VictoriaMetrics 时序数据
|
||||
└── docker/ # Docker 数据
|
||||
```
|
||||
|
||||
## 依赖关系
|
||||
|
||||
```
|
||||
VictoriaMetrics
|
||||
↑ (数据查询)
|
||||
│
|
||||
Prometheus
|
||||
├─> (告警触发) ──> Alertmanager
|
||||
└─> (数据查询) ──> Grafana
|
||||
```
|
||||
|
||||
**启动顺序**:
|
||||
1. VictoriaMetrics(数据存储)
|
||||
2. Prometheus(依赖 VictoriaMetrics)
|
||||
3. Alertmanager(接收 Prometheus 告警)
|
||||
4. Grafana(查询 Prometheus 数据)
|
||||
Reference in New Issue
Block a user