feat: 引入 vmauth 鉴权与严格多租户

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

Made-with: Cursor
This commit is contained in:
root
2026-04-22 11:41:13 +00:00
parent ab1515dffb
commit c4825c2d27
21 changed files with 278 additions and 37 deletions

View File

@@ -40,8 +40,8 @@ GRAFANA_PORT=3000
ALERTMANAGER_PORT=9093
# VictoriaMetrics 端口(边缘 vmagent 通过 remote_write 推送到此端口)
# 必须与边缘侧 CENTRAL_VM_URL 中的端口一致;通常不通过 Traefik边缘直连
VICTORIAMETRICS_PORT=8428
# 必须与边缘侧 CENTRAL_SERVER_PORT 一致;通常不通过 Traefik边缘直连
VICTORIAMETRICS_PORT=18428
# ============================================
# Grafana 配置
@@ -92,6 +92,33 @@ PROMETHEUS_REMOTE_WRITE_MAX_SHARDS=10
# VM 数据保留时间(如 30d、90d
VICTORIAMETRICS_RETENTION_PERIOD=30d
# ============================================
# vmauth鉴权 / 多租户入口)
# ============================================
# vmauth 作为 VictoriaMetrics 的统一入口:对外仅暴露 vmauth 端口;
# - 写入账号:边缘 vmagent、中央 Prometheus remote_write
# - 只读账号Grafana 查询(建议只读)
#
# 生产环境必须修改为强口令,并避免跨环境复用。
#
# 【严格多租户(推荐)】
# 在 central-server/config/vmauth/tenants.csv 中为每个边缘节点配置独立凭据与 tenant_id
# deploy.sh 会据此生成 vmauth.yml 与 Grafana 多数据源 provisioning。
# 可参考示例central-server/config/vmauth/tenants.csv.example
#
# 【单租户兼容模式(可选)】
# 如果你不提供 tenants.csv将使用下面这组单租户账号生成 vmauth 配置(不做按 tenant 隔离)。
VMAUTH_WRITE_USER=vm_write
VMAUTH_WRITE_PASSWORD=change-me-strong-write
VMAUTH_READ_USER=vm_read
VMAUTH_READ_PASSWORD=change-me-strong-read
# 【管理员只读账号(可选)】
# 允许访问所有租户的 /select/<tenant_id>/prometheus/... 查询接口(只读)。
# 用途:管理员在同一套 Grafana 下查看所有租户(可在仪表盘用“数据源变量”切换租户)。
VMAUTH_ADMIN_USER=vm_admin
VMAUTH_ADMIN_PASSWORD=change-me-strong-admin
# ============================================
# 数据存储路径
# ============================================