- 对外端口统一为 18428(vmauth 入口),VM 不再直接暴露宿主机端口 - 边缘 vmagent 与中央 Prometheus remote_write 增加 basic auth - 支持 tenants.csv 驱动的 per-tenant 写入/查询隔离,并提供管理员跨租户只读查询 - 更新 Grafana provisioning 与部署/文档 Made-with: Cursor
159 lines
5.1 KiB
Markdown
159 lines
5.1 KiB
Markdown
# 系统架构图
|
||
|
||
## 容器关系图
|
||
|
||
```
|
||
┌─ 边缘节点 (Edge Node 1/2/…/N) ─────────────────┐
|
||
│ vmagent | ONVIF Exporter | Blackbox Exporter │
|
||
└──────────────────┬────────────────────────────┘
|
||
│ remote_write (HTTP POST)
|
||
▼
|
||
┌─ 中央服务器 ───────────────────────────────────┐
|
||
│ vmauth (18428) 鉴权入口;后端 VictoriaMetrics 存储 │
|
||
│ │ 数据查询 │
|
||
│ ▼ │
|
||
│ Prometheus (9091) 抓取本地、告警评估 │
|
||
│ ├── 告警 ──> Alertmanager (9093) │
|
||
│ └── 查询 ──> Grafana (3000) │
|
||
└──────────────────┬─────────────────────────────┘
|
||
│ HTTP 访问
|
||
▼
|
||
管理员 / 用户组A / 用户组B
|
||
```
|
||
|
||
## 数据流向
|
||
|
||
### 1. 数据收集流程
|
||
|
||
```
|
||
边缘节点设备
|
||
│
|
||
├─ ONVIF 设备 (摄像头等)
|
||
│ └─> ONVIF Exporter ──┐
|
||
│ │
|
||
├─ 网络设备 (IP地址) │
|
||
│ └─> Blackbox Exporter ─┤
|
||
│ │
|
||
└─> Prometheus Edge ───────┘
|
||
│
|
||
│ remote_write (HTTP POST)
|
||
▼
|
||
vmauth (18428) -> VictoriaMetrics (container:8428)
|
||
│
|
||
│ 数据存储
|
||
▼
|
||
Prometheus Central (9091)
|
||
│
|
||
├─> 告警规则评估
|
||
│ └─> Alertmanager (9093)
|
||
│
|
||
└─> 数据查询
|
||
└─> Grafana (3000)
|
||
```
|
||
|
||
### 2. 告警流程
|
||
|
||
```
|
||
设备异常
|
||
│
|
||
▼
|
||
Prometheus 检测到指标异常
|
||
│
|
||
▼
|
||
告警规则触发 (alert_rules.yml)
|
||
│
|
||
▼
|
||
发送告警到 Alertmanager
|
||
│
|
||
▼
|
||
Alertmanager 处理告警
|
||
├─> 告警分组
|
||
├─> 告警抑制
|
||
└─> 发送通知 (webhook/邮件等)
|
||
```
|
||
|
||
### 3. 查询流程
|
||
|
||
- **中央自抓指标**:Grafana → Prometheus 数据源 → Prometheus 返回结果。
|
||
- **边缘数据**:Grafana → **VictoriaMetrics** 数据源 → VictoriaMetrics 返回结果(不经过 Prometheus 查询 VM)。
|
||
|
||
## 容器详细说明
|
||
|
||
### 1. vmauth (18428)
|
||
- **作用**:鉴权/路由入口,给 remote_write 与查询接口加访问控制
|
||
- **接收**:边缘节点通过 `remote_write` 推送的数据(带 basic auth)
|
||
- **提供**:数据查询接口
|
||
- **数据路径**:`/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**(中央自抓指标)、**VictoriaMetrics**(边缘推送数据;查边缘 Ping/ONVIF 等请选此数据源)
|
||
- **功能**:
|
||
- 创建图表和仪表板
|
||
- 多用户管理(组织隔离)
|
||
- 中文界面
|
||
- 权限控制
|
||
- **数据路径**:`/storage/grafana-data`
|
||
|
||
## 网络关系
|
||
|
||
```
|
||
monitoring_net (Docker Bridge)
|
||
├─ prometheus-central:9090 -> 宿主机 9091
|
||
├─ grafana:3000 -> 宿主机 3000
|
||
├─ alertmanager:9093 -> 宿主机 9093
|
||
├─ vmauth:8427 -> 宿主机 18428
|
||
└─ victoria-metrics:8428 -> (不对外暴露,仅容器网络可达)
|
||
```
|
||
|
||
## 端口映射
|
||
|
||
| 容器 | 内部端口 | 外部端口 | 用途 |
|
||
|------|---------|---------|------|
|
||
| Prometheus | 9090 | 9091 | PromQL 查询和 Web UI |
|
||
| Grafana | 3000 | 3000 | 可视化仪表板 |
|
||
| Alertmanager | 9093 | 9093 | 告警管理界面 |
|
||
| vmauth | 18428 | 8427 | 远程写入与查询入口(鉴权) |
|
||
|
||
## 数据存储
|
||
|
||
```
|
||
central-server/data/
|
||
├── prometheus-data/ # Prometheus 时序数据
|
||
├── grafana-data/ # Grafana 配置与仪表板
|
||
└── victoria-metrics-data/ # VictoriaMetrics 时序数据
|
||
```
|
||
|
||
## 依赖关系
|
||
|
||
```
|
||
VictoriaMetrics <── Prometheus
|
||
├─ 告警 ──> Alertmanager
|
||
└─ 查询 ──> Grafana
|
||
```
|
||
|
||
**启动顺序**:
|
||
1. VictoriaMetrics(数据存储)
|
||
2. Prometheus(依赖 VictoriaMetrics)
|
||
3. Alertmanager(接收 Prometheus 告警)
|
||
4. Grafana(查询 Prometheus 数据)
|