Files
Distributed-Prometheus/doc/ARCHITECTURE.md
jack ab1515dffb refactor: config/apps 目录重组、文档重构、架构图收窄
- 中央:config/(prometheus,alertmanager,grafana)、apps/(tile-cache,topology-editor)
- 边缘:config/(vmagent,blackbox,targets)、apps/(onvif-exporter)
- env: TRAEFIK_PROVIDER、prometheus/env.example 详细说明
- 文档:README/doc 重构,EDGE_CACHE 合并到 EDGE_AGENT_CONFIG
- targets.csv 更新流程说明,ARCHITECTURE 图收窄

Made-with: Cursor
2026-02-28 22:05:43 -05:00

158 lines
4.9 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)
┌─ 中央服务器 ───────────────────────────────────┐
│ VictoriaMetrics (8428) 接收边缘推送、存储 │
│ │ 数据查询 │
│ ▼ │
│ Prometheus (9091) 抓取本地、告警评估 │
│ ├── 告警 ──> Alertmanager (9093) │
│ └── 查询 ──> Grafana (3000) │
└──────────────────┬─────────────────────────────┘
│ HTTP 访问
管理员 / 用户组A / 用户组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 → Prometheus 数据源 → Prometheus 返回结果。
- **边缘数据**Grafana → **VictoriaMetrics** 数据源 → VictoriaMetrics 返回结果(不经过 Prometheus 查询 VM
## 容器详细说明
### 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**(中央自抓指标)、**VictoriaMetrics**(边缘推送数据;查边缘 Ping/ONVIF 等请选此数据源)
- **功能**
- 创建图表和仪表板
- 多用户管理(组织隔离)
- 中文界面
- 权限控制
- **数据路径**`/storage/grafana-data`
## 网络关系
```
monitoring_net (Docker Bridge)
├─ 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 | 远程写入和查询接口 |
## 数据存储
```
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 数据)