Files
Super User 95a09fd9d8 完善中央与边缘部署、远程写入与监控文档
- 增加中央与边缘完整配置和部署脚本
- 引入 VictoriaMetrics 数据源与 remote_write 故障排查说明
- 新增 edge-agent 配置脚本、ONVIF 自建 exporter 与 ping 监控示例

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 04:24:40 -05:00

5.5 KiB
Raw Permalink Blame History

Grafana 多用户管理方案

概述

Grafana 支持多用户管理,可以通过以下方式实现不同用户查看不同设备监控:

  1. 组织Organizations:创建多个组织,每个组织有独立的用户和数据源
  2. 数据源权限:通过 Prometheus/VictoriaMetrics 的标签过滤实现数据隔离
  3. 仪表板权限:为不同用户/组织分配不同的仪表板访问权限

实现方案

方案一:使用组织隔离(推荐)

每个用户组创建一个独立的 Grafana 组织,通过数据源标签过滤实现数据隔离。

优点

  • 完全隔离,安全性高
  • 每个组织有独立的数据源和仪表板
  • 易于管理

配置步骤

  1. 在 Grafana Web 界面创建组织

    • 登录 Grafana (admin/admin123)
    • 点击左侧菜单 → Administration → Organizations
    • 创建新组织用户组A、用户组B
  2. 为每个组织创建用户

    • 在对应组织中创建用户
    • 设置用户角色Viewer/Editor/Admin
  3. 配置数据源标签过滤

    • 为每个组织创建独立的数据源
    • 使用 Prometheus 标签过滤,例如:
      # 用户组A只能看到 region="region_a" 的设备
      up{region="region_a"}
      

方案二:使用 Prometheus 标签过滤

在 Prometheus 查询中使用标签过滤,通过 Grafana 变量实现动态过滤。

配置示例

  1. 在 Prometheus 中为设备添加标签

    # prometheus.yml
    external_labels:
      cluster: 'central-monitoring'
      # 边缘节点推送数据时添加用户组标签
    
  2. 在 Grafana 仪表板中使用变量

    • 创建变量:$user_group(从用户属性获取)
    • 查询时使用标签过滤:
      up{user_group="$user_group"}
      

方案三:使用 Grafana 权限控制

为不同用户分配不同的仪表板访问权限。

配置步骤

  1. 创建用户

    • Administration → Users → New User
    • 设置用户名、邮箱、密码
  2. 设置仪表板权限

    • 打开仪表板 → Settings → Permissions
    • 为不同用户/团队设置权限View/Edit/Admin
  3. 使用文件夹组织仪表板

    • 创建文件夹用户组A设备、用户组B设备
    • 为文件夹设置权限

推荐配置流程

1. 通过 API 批量创建用户和组织

可以使用 Grafana API 或配置脚本批量创建。

2. 数据源配置

为每个组织创建独立的数据源,使用标签过滤:

# grafana/provisioning/datasources/prometheus-user-group-a.yml
datasources:
  - name: Prometheus-UserGroupA
    type: prometheus
    access: proxy
    url: http://prometheus-central:9090
    jsonData:
      # 使用标签过滤
      exemplarTraceIdDestinations:
        - name: traceID
          datasourceUid: tempo

3. 仪表板权限

在仪表板 JSON 中配置权限:

{
  "dashboard": {
    "title": "用户组A设备监控",
    "tags": ["user-group-a"],
    ...
  },
  "meta": {
    "permissions": [
      {
        "role": "Viewer",
        "permission": 1
      }
    ]
  }
}

使用脚本自动化配置

可以使用 setup-users.sh 脚本批量创建用户和组织。

管理员权限说明

服务器管理员Server Admin

默认管理员账户admin / admin123

权限范围

  • 可以访问所有组织:管理员可以在不同组织间切换
  • 可以查看所有数据:通过切换组织或使用无标签过滤的查询
  • 可以管理所有用户和组织
  • 可以创建和编辑所有数据源和仪表板

如何让管理员查看所有数据

方法一:切换组织查看(推荐)

  1. 登录管理员账户
  2. 点击右上角用户图标 → Switch Organization
  3. 选择要查看的组织
  4. 每个组织的数据源和仪表板都会显示

方法二:创建全局数据源

为管理员创建一个不受标签限制的数据源:

# grafana/provisioning/datasources/prometheus-admin.yml
apiVersion: 1

datasources:
  - name: Prometheus-All-Data
    type: prometheus
    access: proxy
    url: http://prometheus-central:9090
    isDefault: true
    editable: false
    # 管理员可以使用无标签过滤的查询查看所有数据
    # 例如: up 而不是 up{user_group="xxx"}

方法三:创建管理员专用仪表板

创建管理员仪表板,使用无标签过滤的查询:

# 查看所有设备(不限制用户组)
up

# 按用户组分组查看
up{user_group=~".+"}

# 查看所有标签的设备
up{job=~".+"}

组织管理员Org Admin

组织管理员只能:

  • 管理自己组织内的用户
  • 查看自己组织的数据源和仪表板
  • 在组织内创建和编辑仪表板

权限层级

服务器管理员 (Server Admin)
  ├── 可以访问所有组织
  ├── 可以查看所有数据
  └── 可以管理所有用户和组织

组织管理员 (Org Admin)
  ├── 只能管理自己组织
  └── 只能查看自己组织的数据

普通用户 (Viewer/Editor)
  ├── 只能查看/编辑分配的仪表板
  └── 受数据源标签过滤限制

注意事项

  1. 数据安全:确保 Prometheus 查询权限正确配置
  2. 性能:大量用户时考虑使用 Grafana Enterprise 版本
  3. 标签管理:确保边缘节点推送数据时包含正确的用户组标签
  4. 管理员权限:服务器管理员默认可以访问所有数据,这是 Grafana 的设计特性