Automatisch 遥测(Telemetry)机制全解析:数据收集范围、实现原理与关闭方法
Automatisch 遥测Telemetry机制全解析数据收集范围、实现原理与关闭方法【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch本文以 Automatisch 内置遥测系统为主线从官方文档出发结合仓库中真实实现源码为你完整讲解 Automatisch 收集哪些匿名数据、绝对不碰哪些敏感数据、如何在 docker-compose 部署中关闭遥测以及这套遥测系统在底层是如何借助事件埋点与定时任务运行的。读完本文你将能够判断自建实例的数据隐私边界并在 5 分钟内完成遥测的开启或关闭。为什么 Automatisch 需要遥测Automatisch 是开源的工作流自动化平台定位为 Zapier 的开源替代品安装即用、默认开启遥测。官方文档明确指出内置遥测系统只收集匿名的使用数据用于帮助改进产品、确保开发资源聚焦在正确的功能上并且整个过程不收集任何个人信息。为了做到可审计、可信任Automatisch 官方将遥测相关的全部代码收敛到了单一入口文件中即 packages/backend/src/helpers/telemetry/index.js。这意味着一方面社区可以随时审查数据上报逻辑另一方面任何遥测行为都有明确的代码依据可循。Automatisch 收集什么根据 官方遥测文档 的定义Automatisch 收集的数据可以归纳为四大类Flow、Step 与 Connection 的结构数据即工作流flow、步骤step、连接connection的创建与更新信息但不包含任何凭据credentials。Execution 与 Execution Step 的运行数据执行记录与执行步骤记录不含任何 payload 或可识别个人信息。组织与实例标识符安装 Automatisch 时分配的两个随机 ID用于评估正在运行的实例数量和实际使用中的组织数量。诊断信息Diagnostic informationAutomatisch 版本号服务类型主服务 main 或 工作进程 worker操作系统类型与版本CPU 与内存信息。从源码看收集了什么的精确细节上述抽象描述在源码中有非常精确的落地。以 telemetry/index.js 为入口Telemetry 类通过track(name, properties)方法统一上报事件其中各事件的 properties 字段全部是结构化元数据与凭据、密钥、请求参数无关事件名携带字段节选flowCreated/flowUpdatedflowId、name、active、createdAt、updatedAtstepCreated/stepUpdatedstepId、flowId、key、appKey、type、position、status等executionCreatedexecutionId、flowId、testRun是否为测试运行executionStepCreatedexecutionStepId、executionId、stepId、statusconnectionCreated/connectionUpdatedconnectionId、key、verified注意connectionCreated中只包含连接的key应用标识如gmail、slack和verified状态连接中保存的第三方服务令牌、密码等敏感信息不会出现在任何上报字段里。另外两个关键 ID 的来源如下实例 IDinstance ID由 instance-id.js 中的Crypto.randomUUID()在每次启动时随机生成属于临时随机标识组织 IDorganization ID由 organization-id.js 基于ENCRYPTION_KEY通过CryptoJS.SHA3(key, { outputLength: 256 })计算出的 256 位哈希值——它是加密密钥的单向派生值反向推导不出密钥本身因而既能区分不同安装实例又不泄露凭据加密信息。Automatisch 不收集什么官方文档给出了明确的负面清单这四类数据被明确排除在遥测范围之外个人身份信息Personal information第三方服务的凭据credentials登录 Automatisch 所用的邮箱和密码错误请求的 payloadError payloads。从实现层面看track()方法在发送前只拼接appEnv、instanceId等附加字段见 index.js整个 Telemetry 类中不存在任何读取用户表、凭据字段或请求正文的逻辑因此上述排除项在代码层面同样成立。如何关闭遥测遥测默认开启。如果你希望关闭它只需将TELEMETRY_ENABLED环境变量设为false。docker-compose 部署下的配置位置Automatisch 推荐使用 docker-compose.yml 运行。请注意该变量同时被 main 主服务与 worker 工作进程使用官方 配置文档 也专门提醒涉及两个服务共用的变量时main和worker两个 service 都要改。因此应在两个服务的environment段下分别添加services: main: environment: - TELEMETRY_ENABLEDfalse # ...其余环境变量 worker: environment: - TELEMETRY_ENABLEDfalse # ...其余环境变量修改后重启容器使配置生效。官方环境变量速查表中该变量的定义为变量名类型默认值说明TELEMETRY_ENABLEDbooleantrue启用/禁用遥测从源码看该开关的解析逻辑开关的实际解析位于 packages/backend/src/config/app.jstelemetryEnabled: process.env.TELEMETRY_ENABLED false ? false : true,即只有显式设置为字符串false才会关闭其他任意取值包括不设置都视为开启。而在track()方法第一行就有守卫逻辑if (!appConfig.telemetryEnabled) { return; }这意味着关闭遥测后所有事件上报与诊断信息上报都会在本地直接短路返回不会有任何网络请求发出数据不会离开你的实例。数据收集是如何工作的官方文档将遥测的数据采集机制概括为两点事件驱动Automatisch 通过与用户自定义操作相关联的事件来收集数据每当用户触发这些操作例如创建工作流、更新步骤、创建连接、执行流程时数据即被发送到官方服务器定时补充除了用户操作触发的事件外系统每六个小时还会额外收集一次诊断信息。源码级验证事件如何上报Telemetry 类的track()最终通过rudderstack/rudder-sdk-nodeSDK 上报this.client.track({ userId: this.organizationId, event: name, properties, });其中userId使用组织 IDevent为事件名properties为上述元数据字段。数据面data plane地址由部署形态决定标准版上报至https://telemetry.automatisch.io/v1/batch若appConfig.isMationMation 白标发行版为真则上报至https://telemetry.mation.work/v1/batch。源码级验证六小时定时诊断诊断信息的定时上报直接定义在 Telemetry 构造函数后的模块加载阶段const telemetry new Telemetry(); telemetry.diagnosticInfo();diagnosticInfo()上报完成后通过setTimeout(() this.diagnosticInfo(), SIX_HOURS_IN_MILLISECONDS)自我调度其中SIX_HOURS_IN_MILLISECONDS 21600000精确对应文档所说的每六小时收集一次。它采集的字段包括automatischVersionAutomatisch 版本serviceType服务类型operatingSystemos.type()与os.version()memoryos.totalmem()换算为 MB 的总内存cpusCPU 核数os.cpus().length、型号与主频。服务类型如何区分服务类型由启动入口注入主服务在 packages/backend/src/server.js 中调用telemetry.setServiceType(main)工作进程则在 packages/backend/src/worker.js 中调用telemetry.setServiceType(worker)。这解释了官方文档中服务类型主服务或工作进程这一诊断字段的由来。另外track()中还有一层测试环境守卫if (appConfig.isTest) { return; }即运行测试套件时不会产生真实上报避免开发与 CI 环境污染线上遥测数据。小结Automatisch 的遥测是匿名、默认开启、可一键关闭的收集范围严格限定在 flow/step/connection/execution 的结构元数据与实例诊断信息关闭方式很简单在docker-compose.yml的main与worker两个服务中同时设置TELEMETRY_ENABLEDfalse所有遥测代码集中在 packages/backend/src/helpers/telemetry/index.js组织 ID 与实例 ID 的生成逻辑分别在 organization-id.js 与 instance-id.js社区可以随时审查如需调整采集策略修改这些文件即可。【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考