遥测数据

Better Auth 会收集匿名使用数据以帮助我们改进项目。此功能是可选的、透明的,且默认处于关闭状态。

为什么需要收集遥测数据?

自 v1.3.5 版本起,Better Auth 开始收集关于一般使用情况的匿名遥测数据。

遥测数据帮助我们了解 Better Auth 在不同环境中的使用情况,从而更有效地优化性能、确定功能优先级并修复问题。这些数据指导我们在性能优化、功能开发和错误修复方面的决策。所有数据均以完全匿名的方式收集,并始终将用户隐私放在首位,用户可以随时选择退出。我们致力于尽可能保持所收集数据的透明度。

收集哪些数据?

可能会上报以下数据点。所有数据均为匿名收集,仅用于聚合分析。

  • 匿名标识符:从你的项目(package.json 名称及可选的 baseURL)派生的不可逆哈希值。这使我们能够在不知道你是谁的情况下对每个项目的事件进行去重。
  • 运行时环境{ name: "node" | "bun" | "deno", version }
  • 运行环境development(开发)、production(生产)、test(测试)或 ci(持续集成)之一。
  • 框架(如果检测到):针对 Next.js、Nuxt、Remix、Astro、SvelteKit 等框架的 { name, version }
  • 数据库(如果检测到):针对 PostgreSQL、MySQL、SQLite、Prisma、Drizzle、MongoDB 等集成的 { name, version }
  • 系统信息:平台、操作系统版本、架构、CPU 数量/型号/速度、总内存,以及 isDockerisWSLisTTY 等标志。
  • 包管理器:从 npm 用户代理派生的 { name, version }
  • 脱敏的身份验证配置快照:由 getTelemetryAuthConfig 生成的 betterAuth 选项的最小化、保护隐私的视图。

我们还从 CLI 收集匿名遥测数据:

  • CLI 生成(cli_generate:结果包括 generated(已生成)、overwritten(已覆盖)、appended(已追加)、no_changes(无更改)、aborted(已中止),以及脱敏的配置。
  • CLI 迁移(cli_migrate:结果包括 migrated(已迁移)、no_changes(无更改)、aborted(已中止)、unsupported_adapter(不支持的适配器),以及适配器 ID(相关时)和脱敏的配置。

你可以在本地运行项目时设置环境变量 BETTER_AUTH_TELEMETRY_DEBUG=1,或在身份验证配置中设置 telemetry: { debug: true } 来审核遥测数据。在此调试模式下,遥测事件仅记录到控制台。

auth.ts
export const auth = betterAuth({
  telemetry: { 
    debug: true
  } 
});

我的数据如何受到保护?

所有收集的数据都是完全匿名的,仅在聚合层面有用。这些数据无法追溯到任何个体来源,并且只有少数核心 Better Auth 维护人员可以访问,用于指导路线图决策。

  • 不收集 PII 或密钥:我们不收集电子邮件、用户名、令牌、密钥、客户端 ID、客户端密钥或数据库 URL。
  • 不收集完整配置:我们从不发送您的完整 betterAuth 配置。相反,我们发送的是经过删减的非敏感开关和计数的快照。
  • 设计上的数据脱敏:有关包含的确切数据结构,请参阅 Better Auth 源代码中的 detect-auth-config.ts。它有意将敏感值转换为布尔值、计数或通用标识符。

如何启用它?

您可以在身份验证配置中或通过设置环境变量来启用遥测收集。

  • 通过您的身份验证配置。

    auth.ts
    export const auth = betterAuth({
      telemetry: { 
        enabled: true
      } 
    });
  • 通过环境变量。

    .env
    # 启用遥测
    BETTER_AUTH_TELEMETRY=1
    
    # 禁用遥测
    BETTER_AUTH_TELEMETRY=0

遥测数据何时发送?

  • betterAuth 初始化时(type: "init")。
  • 在 CLI 操作时:如上所述的 generatemigrate

在测试环境中(NODE_ENV=test),除非被内部工具显式覆盖,否则遥测会自动禁用。

On this page