Home
Softono
go-wind-uba

go-wind-uba

Open source MIT Vue
37
Stars
17
Forks
1
Issues
2
Watchers
1 week
Last Commit

About go-wind-uba

Go Wind UBA 是一款面向企业的用户行为分析系统,后端基于 Go、go-kratos 构建,深度适配 ClickHouse、Doris 等高性能分析存储引擎。支持多租户隔离、用户事件实时采集、行为模型构建、风险识别与分析、多数据源数据同步,提供多维度数据统计、自定义报表与可视化大屏能力,助力企业快速搭建安全、稳定、高性能的用户行为数据分析平台。

Platforms

Web Self-hosted Cloud

Languages

Vue

GoWind UBA · 风行用户行为分析平台

开箱即用的企业级用户行为分析与商业智能平台

让每一次用户行为都有迹可循,让每一份数据洞察触手可及

中文 · English · 日本語

Go Version Vue Version Kratos License PRs Welcome


项目亮点

  • 十大分析模型:事件分析、漏斗分析、留存分析、归因分析、分布分析、用户路径分析、用户分群、点击分析、用户属性分析、行为序列分析,覆盖用户行为分析全场景
  • 双引擎可切换数据仓库:原生支持 ClickHouse 与 Apache Doris 两种 OLAP 引擎,按需二选一部署,极致查询性能
  • 全链路事件采集:自研 Web SDK,零代码埋点 + 自定义事件,数据经 Kafka 实时写入数仓
  • 多租户架构:租户数据物理隔离,自动初始化部门、角色与管理员,开箱即用
  • 微服务架构:基于 go-kratos 微服务框架,支持服务发现、链路追踪、分布式缓存
  • 风险事件检测:内置风险规则引擎,支持 Webhook 实时告警,守护业务安全
  • 生产就绪:JWT 鉴权、Casbin/OPA 权限引擎、SSE 消息推送、异步任务调度、Swagger 文档、Docker 一键部署

什么是 UBA?

UBA(User Behavior Analysis,用户行为分析)是一种数据分析技术,用于收集、分析和报告用户在网站、App 等数字产品上的行为。它可以帮助企业了解用户的偏好、习惯和行为模式,从而优化产品体验、提升转化率、实现精准营销。

UBA 最早应用于电商领域,通过分析用户的点击、收藏、购买等行为,实现用户画像和精准营销推荐。随后被引入信息安全领域,通过多维度、长周期的关联分析和行为建模,发现潜在的安全威胁。

2015 年,UBA 演化为 UEBA(User and Entity Behavior Analytics,用户和实体行为分析),将分析范围从用户扩展到设备、应用程序、端点等所有实体,通过机器学习和统计模型自动建立行为基线,精准识别异常行为。


分析模型

模型 典型问题
事件分析 最近几个月来,哪个渠道的用户注册量最高?变化趋势如何?
漏斗分析 从浏览产品,到点击支付的转化与流失情况如何?
留存分析 新用户在注册后的第 1 天、第 7 天、第 30 天的留存率是多少?
归因分析 是哪些运营位吸引了用户,让他们购买了这个产品?
分布分析 揭示单个用户对产品的依赖程度,复购率如何?
用户路径分析 用户如何浏览你的产品?理想路径与实际路径偏差在哪?
用户分群 过去 30 天购买产品的用户都有谁?如何制定定向营销策略?
点击分析 用户都点击了哪个界面元素?哪个元素被高频点击?
用户属性分析 不同时间的注册用户数的变化趋势如何?用户按省份分布情况如何?
行为序列分析 用户未支付即流失。查看用户的历史行为记录,快速验证流失原因

技术栈

后端

层级 技术 说明
语言 Go 1.25+ 高性能编译型语言
框架 go-kratos v2 B站开源微服务框架
依赖注入 Wire 编译时依赖注入
ORM Ent Go 实体框架(PostgreSQL)
OLAP 引擎 ClickHouse / Apache Doris 列式存储,极致分析性能
消息队列 Kafka 高吞吐事件流处理
缓存 Redis 内存数据库
对象存储 MinIO S3 兼容对象存储
服务注册 Etcd / Consul 服务发现与配置
链路追踪 Jaeger + OpenTelemetry 分布式可观测
API 定义 Protobuf + buf.build 接口契约优先
权限引擎 Casbin / OPA 策略驱动鉴权
异步任务 Asynq 基于 Redis 的异步任务队列
BI 平台 Apache Superset 数据可视化与报表

管理后台前端

技术 说明
Vue 3 渐进式前端框架
TypeScript 类型安全
Ant Design Vue 企业级 UI 组件库
Vben Admin 后台管理框架
Vite 新一代构建工具

数据采集 SDK

SDK 说明
Web SDK (JavaScript) 网页端事件采集,支持自动埋点与自定义事件

系统架构

graph TB
    SDK["客户端层<br/>Web SDK · App SDK · 小程序 SDK"]
    Collector["Collector Service<br/>埋点数据接收 · 校验 · 转发"]
    Core["Core Service<br/>事件存储 · 分析建模 · 风险检测 · 标签管理 · 数据同步"]
    Admin["Admin Service<br/>管理后台 BFF · 权限管理 · 报表 · 配置"]
    Frontend["管理后台前端<br/>Vue 3 + Ant Design Vue + Vben Admin"]

    SDK -->|"事件上报"| Collector
    Collector -->|"Kafka"| Core
    Core --- OLAP[(OLAP 引擎<br/>ClickHouse 或 Apache Doris 二选一)]
    Core -->|"gRPC"| Admin
    Admin -->|"HTTP / gRPC"| Frontend

核心功能

数据采集与管理

功能 说明
事件采集 支持自定义事件上报,Web SDK 零代码接入
应用管理 管理采集应用,生成 AppID / AppKey,配置采集参数
数据同步 同一份业务模型可落到 ClickHouse 或 Doris 任一引擎,字段、分区、索引、主键保持一致
会话管理 自动关联用户会话,支持会话级行为分析

分析模型

功能 说明
事件分析 多维度事件统计与趋势分析
漏斗分析 自定义漏斗步骤,计算转化率与流失率
留存分析 新用户 / 活跃用户留存,支持多时间粒度
归因分析 多触点归因,识别关键转化路径
分布分析 用户行为频次分布,揭示用户依赖度
路径分析 用户行为路径可视化,发现关键路径
用户分群 基于行为特征的用户分群,支持定向营销
点击分析 界面元素点击热力图分析
属性分析 用户属性多维度统计与趋势分析
行为序列 用户历史行为时序展示,快速定位问题

风险与安全

功能 说明
风险规则引擎 可视化配置风险检测规则,支持多维度条件组合
风险事件管理 自动检测风险事件,支持人工审核与处理
Webhook 告警 风险事件实时推送至第三方系统

组织与权限

功能 说明
多租户管理 租户数据隔离,自动初始化部门、角色与管理员
用户管理 用户全生命周期管理,支持多角色、多部门绑定
角色管理 精细化配置菜单权限、接口权限与数据权限
权限管理 权限分组、菜单节点与权限点管理,支持按钮级控制
字典管理 数据字典大类与子项管理,联动查询、排序、导入导出

系统运维

功能 说明
文件管理 文件上传至 OSS 或本地,支持预览、下载、删除
缓存管理 缓存实时查询,按键精准清除或批量清理
消息通知 多级消息分类,向指定用户发送站内消息
登录日志 登录成功/失败日志,含 IP、设备、时间
操作日志 全链路操作日志,支持详情追溯
任务调度 定时任务管理,支持启动/暂停/立即执行

项目结构

go-wind-uba/
├── backend/                            # 后端项目
│   ├── api/                            # Protobuf API 定义与生成代码
│   │   ├── protos/                     # .proto 源文件(按领域分层)
│   │   │   ├── admin/                  # 管理后台接口
│   │   │   ├── audit/                  # 审计接口
│   │   │   ├── authentication/         # 认证接口
│   │   │   ├── collector/              # 数据采集接口
│   │   │   ├── dict/                   # 字典接口
│   │   │   ├── identity/               # 身份接口
│   │   │   ├── internal_message/       # 站内消息接口
│   │   │   ├── permission/             # 权限接口
│   │   │   ├── resource/               # 资源接口
│   │   │   ├── storage/                # 文件存储接口
│   │   │   ├── task/                   # 任务接口
│   │   │   └── uba/                    # UBA 核心接口
│   │   └── gen/go/                     # buf 生成的 Go 代码
│   ├── app/                            # 服务应用
│   │   ├── admin/service/              # Admin 服务(管理后台 BFF)
│   │   ├── collector/service/          # Collector 服务(埋点采集 BFF)
│   │   └── core/service/               # Core 服务(核心业务逻辑)
│   ├── pkg/                            # 公共包
│   │   ├── authorizer/                 # 鉴权引擎
│   │   ├── constants/                  # 常量定义
│   │   ├── crypto/                     # 加密工具(AES-GCM)
│   │   ├── jwt/                        # JWT 工具
│   │   ├── metadata/                   # 元数据管理
│   │   ├── middleware/                 # 中间件(鉴权/日志/Ent/元数据)
│   │   ├── oss/                        # 对象存储(MinIO)
│   │   ├── serviceid/                  # 服务标识
│   │   ├── task/                       # 异步任务
│   │   ├── topic/                      # Kafka Topic 管理
│   │   └── utils/                      # 通用工具
│   ├── sql/                            # 数据库脚本
│   │   ├── clickhouse/                 # ClickHouse 建表脚本
│   │   ├── doris/                      # Doris 建表脚本
│   │   └── postgresql/                 # PostgreSQL 建表脚本
│   ├── scripts/                        # 部署脚本
│   │   ├── deploy/                     # PM2 部署脚本
│   │   ├── docker/                     # Docker 部署脚本
│   │   └── env/                        # 环境安装脚本
│   └── docs/                           # 文档
├── frontend/                           # 前端项目
│   ├── admin/                          # 管理后台(Vue 3 + Vben Admin)
│   └── sdk/web/                        # Web 数据采集 SDK
└── LICENSE                             # MIT 开源许可

快速开始

环境要求

工具 版本
Go 1.25+
Node.js >= 20.10.0
pnpm >= 9.12.0
Docker 20.0+
buf 最新版

环境脚本

  • Linux / macOS 开发环境scripts/env/install_unix_dev.sh
  • Linux / macOS 生产环境scripts/env/install_unix_prod.sh
  • Windows 开发环境scripts/env/install_windows_dev.ps1

Docker 两种部署模式

  • full_deploy 完整模式:同步启动中间件 + 后端应用,适用于一键演示、生产部署
  • libs_only 依赖模式(推荐开发):仅启动中间件,应用本地 IDE 运行调试

1. 启动依赖服务

Linux / macOS:

cd backend

# 赋予脚本执行权限
chmod +x scripts/**/*.sh

# 仅启动中间件依赖(推荐开发)
./scripts/docker/libs_only.sh

# 一键完整部署(中间件 + 后端服务)
./scripts/docker/full_deploy.sh

Windows(PowerShell 管理员):

cd backend

# 放行脚本策略(首次仅需执行一次)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

# 仅启动中间件依赖(推荐开发)
.\scripts\docker\libs_only.ps1

# 一键完整部署(中间件 + 后端服务)
.\scripts\docker\full_deploy.ps1

2. 启动后端服务

cd backend

# 安装依赖
go mod tidy

# 初始化开发环境(安装 protoc 插件和 CLI 工具)
make init

# 生成代码(ent + wire + api + openapi)
make gen

# 构建所有服务
make build

# 运行 Core 服务
go run ./app/core/service/cmd/server/ -c ./app/core/service/configs

# 运行 Admin 服务
go run ./app/admin/service/cmd/server/ -c ./app/admin/service/configs

# 运行 Collector 服务
go run ./app/collector/service/cmd/server/ -c ./app/collector/service/configs

3. 初始化数据库

执行 sql/ 目录下的建表脚本:

# PostgreSQL(业务库)
psql -h localhost -U postgres -d gwubd -f sql/postgresql/schema.sql

# ClickHouse(分析引擎,与 Doris 二选一)
clickhouse-client --queries-file sql/clickhouse/schema.sql

# Doris(分析引擎,与 ClickHouse 二选一)
mysql -h localhost -P 9030 -u root < sql/doris/schema.sql

4. 启动前端

cd frontend/admin

# 安装依赖
pnpm install

# 启动开发服务器
pnpm dev

常用命令

cd backend

# 生成 Protobuf API 代码
make api

# 生成 OpenAPI 文档
make openapi

# 生成 TypeScript 代码
make ts

# 一键生成全部代码(ent + wire + api + openapi)
make gen

# 构建所有服务
make build

# 运行测试
make test

# 代码检查
make lint

# Docker Compose 启动依赖
make docker-libs

# Docker Compose 完整部署
make docker-up

后端服务说明

服务 说明 端口
Core Service 核心业务服务,负责事件存储、分析建模、风险检测、标签管理、数据同步等核心逻辑 -
Admin Service 管理后台 BFF,提供用户管理、权限管理、配置管理、报表查询等接口 HTTP: 9700 / gRPC: 9701
Collector Service 埋点采集 BFF,接收客户端事件上报数据,校验并转发至消息队列 HTTP: 9800 / gRPC: 9801

OLAP 引擎选型与 Schema 设计

  • ClickHouse 与 Apache Doris 为二选一关系,部署时按需选择其一作为分析引擎即可,运行时通过 data.UseClickHouse 配置项切换
  • 两种引擎共用同一份业务模型,字段、分区、索引、主键定义保持一致
  • 支持 struct 定义自动生成、注解(json、ch)自动处理
  • 支持批量数据写入,严格模式下自动补齐 NOT NULL 字段
  • 落库后可进一步优化字段类型、索引、分区等,参考 backend/sql/ 脚本

Web SDK 接入

<script type="text/javascript" src="report_sdk.js"></script>
<script type="text/javascript">
    // 初始化(单例模式)
    // 参数:采集服务地址, AppID, AppKey, 调试模式
    // 调试模式:0=正常入库, 1=测试入库, 2=测试不入库
    const tracker = new EventReport(
        "http://localhost:9800",
        "your_app_id",
        "your_app_key",
        0
    );

    // 设置全局属性
    tracker.setSuperProperties({ platform: "web", version: "1.0.0" });

    // 上报自定义事件
    tracker.track("page_view", { page: "/home", title: "首页" });

    // 上报用户属性
    tracker.userSet({ name: "张三", vip_level: 3 }).trackUserData();
</script>

详见 Web SDK 文档


参考资料


相关项目

  • go-wind-admin — 开箱即用的企业级前后端一体中后台脚手架
  • go-wind-cms — 开箱即用的企业级前后端一体内容平台

联系我们

  • 微信个人号:yang_lin_bo(备注:go-wind-uba)

开源许可

本项目基于 MIT License 开源。

致谢

JetBrains

感谢 JetBrains 提供的免费 GoLand & WebStorm 开源许可。