Files
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

5.1 KiB
Raw Permalink Blame History

系统架构图

容器关系图

┌─ 边缘节点 (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 数据)