ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Kedro 匿名遥测机制详解:数据收集字段、同意撤回方式与底层实现

2026/9/15 17:47:47 拓冰建站 浏览量
Kedro 匿名遥测机制详解:数据收集字段、同意撤回方式与底层实现 Kedro 匿名遥测机制详解数据收集字段、同意撤回方式与底层实现【免费下载链接】kedroKedro is a toolbox for production-ready data science. It uses software engineering best practices to help you create data engineering and data science pipelines that are reproducible, maintainable, and modular.项目地址: https://gitcode.com/GitHub_Trending/ke/kedroKedro 作为一套面向生产环境数据科学工作流的工具箱通过可选的匿名遥测Anonymous Telemetry机制收集功能使用情况用以改进软件本身。本文基于 docs/about/telemetry.md 展开系统梳理 Kedro 遥测收集的数据字段、底层插件实现、四种撤回同意opt-out的方式以及隐藏提示消息的官方做法并辅以当前仓库源码kedro/framework/cli/starters.py与测试用例作为实现证据帮助开发者在隐私合规与项目工程化之间做出明确选择。遥测机制的定位与设计原则Kedro 的遥测数据由 Kedro Project 维护者 用于改进软件其设计遵循以下原则目的单一数据仅用于理解功能使用情况进而改进 Kedro从不用于营销或推广不含敏感信息不存储关于你的个人信息也不存储项目中的敏感数据默认开启、参与可选遥测默认启用但参与是可选行为选择退出后 Kedro 仍会正常工作经过合规审查该遥测方案已依据 LF Projects, LLC 的 Telemetry Data Collection and Usage Policy 审查与批准。从技术实现上看Kedro 通过Kedro-Telemetry 插件收集匿名遥测数据该插件随 Kedro 一起作为依赖安装。因此在当前仓库的测试中可以频繁看到针对kedro_telemetry.plugin._check_for_telemetry_consent的 mock——例如 tests/framework/session/test_session.py 与 tests/framework/session/test_service_session.py 在构造KedroSession时都会先mocker.patch(kedro_telemetry.plugin._check_for_telemetry_consent, return_valueFalse)模拟未授权状态以保证测试环境不发送任何遥测事件。这从侧面印证遥测的“同意检查”发生在会话创建、命令执行等关键入口点。此外 tests/framework/cli/test_cli.py 中的test_info_only_kedro_telemetry_plugin_installed用例会断言kedro info输出中列出了kedro_telemetry插件说明该插件作为 Kedro 默认依赖被识别和加载。收集的数据字段详解Kedro 遥测收集的字段全部围绕“功能使用”这一主题具体包括字段说明隐私处理唯一用户标识UUID随机生成的匿名标识符存储在 Kedro 的系统级配置目录下的telemetry.toml文件中若不存在则自动生成并持久化后续事件复用该 UUIDCLI 命令参数掩码用户执行的命令敏感参数会被遮蔽。例如输入kedro run --pipelinesds --envtest实际收到的是kedro run --pipelines ***** --env *****参数值一律以*****替换项目 UUID项目 UUID随机生成的匿名项目标识符与包名的哈希结果若项目 UUID 不存在则自动生成并存入pyproject.toml随后与包名拼接后整体哈希Kedro 项目版本当前使用的 Kedro 版本号—Kedro-Telemetry 版本当前插件版本号—Python 版本运行 Kedro 的 Python 版本—操作系统Kedro 运行所在的操作系统—工具选择与示例流水线执行kedro new时选择的工具和是否包含示例流水线如适用—Starter创建项目时使用的起始模板。仅当项目使用官方 Kedro starters 创建时该字段可见—数据集、节点、流水线数量关于项目结构的量化数据—数据集类型项目中使用的数据集类型仅当数据集属于kedro.io或kedro-datasets时数据集名称可见数据集验证器声明了验证器的数据集数量以及按验证库统计的计数仅当库为pandera这类公开包时库名可见用户自定义验证器统一记为custom验证器名称、schema 内容、数据集名称一律不收集Kedro-Skills 使用情况kedro-skills插件在每次 install、update、uninstall 命令时发送的事件技能标识仅当与包内置技能匹配时发送其余记为unknown技能内容、文件路径与项目细节一律不收集其中 Kedro-Skills 相关事件的细化规则值得单独说明kedro skills install发送技能标识符、目标 IDE、是否使用了--all、命令是否成功kedro skills update发送更新技能数量、是否发现被修改的文件、命令是否成功kedro skills uninstall发送技能标识符kedro skills list不发送任何事件。所有上述事件遵循与页面其余数据相同的同意流程consent flow。关于遥测收集工作的技术细节可直接浏览kedro-telemetry插件的源码。撤回同意的四种方式方式一设置环境变量全局生效、优先级最高设置DO_NOT_TRACK或KEDRO_DISABLE_TELEMETRY环境变量为任意值即可在当前环境下对所有 Kedro 项目禁用遥测。环境变量的存在会覆盖特定项目.telemetry文件中指定的任何同意状态。方式二创建新项目时通过 CLI 选项关闭创建新项目时执行kedro new --telemetryno该命令会在新项目根目录生成一个.telemetry文件内容为consent: false。此后在该项目目录内执行 Kedro 命令时都会依据该文件。注意kedro new命令本身的遥测数据仍会发送——除非已通过环境变量禁用遥测。在 kedro/framework/cli/starters.py 中可以找到该选项的完整实现。--telemetry短选项-tc接收的值限定为yes、no、y、n大小写不敏感其帮助文本明确说明“允许或不允许 Kedro 收集使用分析。我们无法查看也不能存储 Kedro 项目中的信息。用 yes 加入用 no 退出。”随后的处理逻辑为telemetry_consent经_parse_yes_no_to_bool归一化为true/false字符串最终由_create_project在 cookiecutter 生成项目后写入result_path /.telemetry文件consent: true|false。这一行为在 tests/framework/cli/starters/test_new_from_cli_flags.py 的TestTelemetryCLIFlag测试类中有完整的参数化验证输入yes、YES、y、Y、yEs均会在新项目根目录生成.telemetry文件且内容包含consent: true输入no、NO、n、N、No则生成内容为consent: false的文件输入非法值如wrong时命令以退出码 2 失败并提示wrong is not one of yes, no, y, n且不会生成.telemetry文件完全省略该参数时项目根目录不会出现.telemetry文件。方式三手动创建或修改.telemetry文件若项目根目录已存在.telemetry文件将consent变量设为false若文件不存在则手动创建并写入consent: false注意.telemetry文件不应提交到git也不应被打包进部署产物。在kedro0.17.4版本中该文件已被加入 git 忽略列表。仓库的端到端测试也依赖这一机制在 features/steps/cli_steps.py 中测试步骤会在根项目目录写入.telemetry文件并置为consent: false注释说明这是为了“防止 e2e 测试期间遥测提示输入”直观展示了该文件在实际运行链路中的生效方式。方式四卸载插件最后的备选方案pip uninstall kedro-telemetry这是最后的手段因为卸载会破坏 Kedro 的依赖关系——例如pip check会报告依赖问题。日常使用应优先选择前三种方式。如何隐藏遥测提示消息默认情况下Kedro 会显示如下提示消息Kedro is sending anonymous usage data with the sole purpose of improving the product. No personal data or IP addresses are stored on our side. To opt out, set the KEDRO_DISABLE_TELEMETRY or DO_NOT_TRACK environment variables, or create a .telemetry file in the current working directory with the contents consent: false. To hide this message, explicitly grant or deny consent. Read more at https://docs.kedro.org/en/stable/configuration/telemetry.html要隐藏这条消息只需显式授予或拒绝同意。拒绝同意的做法见上文“撤回同意”一节设置环境变量或更新.telemetry文件授予同意同样可以通过手动修改或创建.telemetry文件实现若文件已存在则设置consent为true否则创建文件并写入consent: true从源码看kedro new的遥测写入链路结合仓库源码kedro new与遥测相关的完整调用链可以归纳如下new命令通过click.option(--telemetry, -tc, ...)接收参数取值仅允许yes/no/y/n大小写不敏感kedro/framework/cli/starters.py参数被放入flag_inputs字典参与校验同一文件 L343-L354若参数非空_parse_yes_no_to_bool将其转为布尔再映射为字符串true/falseL424-L427_create_project调用 cookiecutter 生成项目后若telemetry_consent非空则在项目根目录写入.telemetry文件内容为consent: true|falseL974-L1000。从源码结构可以看出kedro new只在显式传参时才生成.telemetry文件不传参时项目根目录不会有该文件此时遥测同意状态由环境变量DO_NOT_TRACK/KEDRO_DISABLE_TELEMETRY或后续手动创建的文件决定这也与上述测试用例的断言完全一致。实践建议希望完全不参与遥测在 shell 配置如.bashrc、.zshrc中统一导出DO_NOT_TRACK1一次性覆盖所有项目与所有 Kedro 命令包括kedro new本身仅对单个项目关闭在该项目根目录创建.telemetry文件并写入consent: false或创建项目时直接使用kedro new --telemetryno保持默认但隐藏提示显式创建consent: true的.telemetry文件或通过环境变量/CLI 显式授权即可消除每次运行时的提示消息注意 CI/CD 与部署环境.telemetry文件不应提交到版本库或打包进部署产物建议在.gitignore中确认其已被忽略kedro0.17.4默认忽略并根据团队合规要求决定是否在 CI 环境中设置DO_NOT_TRACK。【免费下载链接】kedroKedro is a toolbox for production-ready data science. It uses software engineering best practices to help you create data engineering and data science pipelines that are reproducible, maintainable, and modular.项目地址: https://gitcode.com/GitHub_Trending/ke/kedro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考