Files
Distributed-Prometheus/doc/ARCHITECTURE.md
root c4825c2d27 feat: 引入 vmauth 鉴权与严格多租户
- 对外端口统一为 18428(vmauth 入口),VM 不再直接暴露宿主机端口
- 边缘 vmagent 与中央 Prometheus remote_write 增加 basic auth
- 支持 tenants.csv 驱动的 per-tenant 写入/查询隔离,并提供管理员跨租户只读查询
- 更新 Grafana provisioning 与部署/文档

Made-with: Cursor
2026-04-22 11:41:13 +00:00

159 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 系统架构图
## 容器关系图
```
┌─ 边缘节点 (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 数据)