今天我们推出 Fleet Management ,它位于 Pydantic Logfire:更改你的 OpenTelemetry Collector 和应用 SDK 采集什么、以及将它们发送到哪里,从 Logfire无需在每台机器上编辑配置文件。调整采样、对新发现的敏感数据进行脱敏,而且无需重新部署应用即可完成。Fleet 处于 Beta 阶段,所有套餐均可使用。
为什么需要 Fleet Management?
现在是凌晨2点,而 checkout-api 出事了。有人带着调试日志上线,于是每个请求都会写入四十行日志。某个 span 属性携带了本不该有的卡号令牌。同样的数据既发往 Logfire,也发往你们平台团队运行的第二套后端。要关掉其中任何一项,都得提一个拉取请求、跑一次 CI、再做一次部署。如果 CI 给面子,四十分钟。继续开着,每小时就要多花数千美元。而在这期间已经发出去的卡号令牌,已经落在两个地方了。
你的 Collector 也有同样的问题,只是低了一层。它们的设置存放在每台主机上的 YAML 文件里,改动其中一项就意味着要对所有主机执行一次 Ansible 运行或 Helm 升级。
在 Logfire 中打开该服务的 SDK 策略,设置 最低日志级别 为“警告”,将令牌的属性添加到“属性脱敏”,然后发布。几秒钟内,正在运行的进程就会停止发送 info 和 debug 日志,令牌也会在 span 离开进程之前被移除。无需重启任何东西。事件结束后,将日志级别设回“由应用控制”并再次发布。工作原理每个 Collector 和每个应用都从策略中获取设置:策略是一组带版本的设置,你在 Logfire 中编辑并发布。Fleet Management 是一组能力, 警告,将令牌的属性添加到“属性脱敏” 属性脱敏,然后发布。

“由应用控制”并再次发布。 由应用控制 并再次发布。
工作原理

每个 Collector 和每个应用都从策略中获取其设置:策略是一组带版本的设置,你在 Logfire 中编辑并发布。 策略:一组你在 Logfire 中编辑并发布的带版本设置。Fleet Management 是 Pydantic Logfire 中用于实现这一目标的一组能力:内置于 Logfire 的 OpAMP 服务器,Collector 和 SDK 会连接到它,以及你用来查看它们、编辑并发布策略的 UI。客户端通过 OpAMP,这是远程管理遥测软件所用的 OpenTelemetry 标准。它们会报告自身的健康状况和正在运行的设置,而你发布新版本后,已连接的客户端会在几秒内获取到。启用 rollout 后,它会等到你启动一个试点分组。
Fleet 承载的是设置,而不是遥测数据。你的应用继续用已有的写入令牌发送数据,你的 Collector 也继续按各自 pipeline 的配置发送到相应位置。
在 Logfire 中管理,发送到任何地方
Collector 策略涵盖 Collector 的整条 pipeline,包括 exporter。如果它同时向 Logfire 和另一个后端发送数据,你需要在 Fleet 中同时管理这两者。
应用侧也是如此。在 Python、Node.js、Java 和 .NET 中,SDK 策略管辖 SDK 所经由的每一个 exporter,而不只是指向 Logfire 的那一个:控制台 exporter、发往另一家厂商的第二个 OTLP exporter、插件添加的 exporter。因此,脱敏、采样和流量控制对每一个目的地都生效,而每个 span 的一次采样决策在所有目的地之间保持一致。应用在 SDK 之外自行接入的 exporter 同样不受该策略管辖。
你可以管理的内容
- 主机上的 Collector。 一条命令即可在 Linux、macOS 或 Windows 上将 OpenTelemetry Collector 安装为服务,并将其加入你的项目。选择一个起点(主机监控、文件日志),Fleet 便会创建策略。
- Kubernetes 集群。 集群中的一座小桥驱动着 OpenTelemetry Operator资源。你已经在运行的 Collector。添加 Collector › 现有 Collector 会为你提供一个连接密钥,以及一段用于 Collector Contrib 中该扩展的代码片段。由 Helm 或 GitOps 管理的 Collector 随后会出现在 Fleet 中,显示其健康状况、组件和配置,并标记为“仅报告”。其配置仍由你掌控。应用程序。Python、Node.js、Java、.NET 和 Go,可使用 Logfire SDK 或普通 OpenTelemetry SDK。在 Logfire SDK 上只需一个选项:Python 中为(Logfire 5.5.0,Python 3.11+),Node.js 中为
OpenTelemetryCollector资源。 - 你已经在运行的 Collector。 添加 Collector › 现有 Collector 会为你提供一个连接密钥,以及一段用于 Collector Contrib 中该扩展的代码片段。
opamp由 Helm 或 GitOps 管理的 Collector 随后会出现在 Fleet 中,显示其健康状况、组件和配置,并标记为 仅报告其配置仍由你掌控。 - 应用程序。 Python、Node.js、Java、.NET 和 Go,可使用 Logfire SDK 或普通 OpenTelemetry SDK。在 Logfire SDK 上只需一个选项:
logfire.configure(fleet=True)(Logfire 5.5.0,Python 3.11+)以及logfire.configure({ fleet: true })在 Node.js 中(0.22.0)。策略可以设置跟踪采样、采样规则、最低日志级别、要导出哪些信号、流量控制、属性脱敏和清理。策略未设置的所有内容都保持应用程序配置的原样。
一个页面即可展示全部内容:每个 Collector 和应用、它们是否已连接、健康状况、所运行的策略以及该策略是否已生效。 流量 展示你的 Collector 从哪里接收数据、向哪里发送数据,并且 概览 会将每个对象发送的数据量与上一周期进行比较。

更改一千台机器应该是件枯燥的事
一个能改变你所运行的每一个进程的工具,最好能确保这样做是安全的。
- 每个策略都有版本。 审查会在你发布前展示该变更与已发布版本的对比,并在某个 Collector 缺少新版本所使用的组件时发出警告。
- 无法运行某个版本的主机 Collector 或应用会拒绝该版本,并保留其现有配置。 并保留其现有配置。Fleet 将其显示为 失败 并标明该设置或组件。Kubernetes Collector 不会先做检查,因此请在那里先在试点分组上测试变更。
- 先在少数几个上试点推出。 开启 rollout(现已进入早期访问阶段),新版本会推送到你选定的试点分组。它不会自行扩大范围:当结果看起来合适时,再由你扩大范围。
- 回滚。 打开任意历史版本并将其恢复到编辑器中。
基于 OpenTelemetry 构建
Fleet 使用 OpAMP 协议,通过标准 Operator 管理标准 Collector,并通过运行在你现有 OpenTelemetry SDK 内的小型软件包连接各 SDK。我们的 OpAMP 客户端共享同一个协议核心,该核心用 Rust 编写并在每种语言中运行,而且它们与上游 OpenTelemetry 客户端运行在同一套一致性测试套件中。周三的文章将介绍我们如何构建并验证该核心。
快速开始
在项目侧边栏中打开 Fleet 管理。所有套餐均已启用。阅读文档。Fleet 概览、管理 Collector、管理应用和更改策略。查看实际效果。明天的文章将连接一个应用和一台主机,然后更改两者。查看产品页面。Fleet 管理。你的套餐决定了 Fleet 管理多少个应用和 Collector 策略,Fleet 会实时显示你的用量。本周先在一个服务上试用。如果有缺失的功能,请在 GitHub 上告诉我们或通过联系方式反馈。查看更多来自 Fleet 管理 在项目的侧边栏中。所有套餐均已启用。
- 阅读文档。 Fleet 概览, 管理 Collector, 管理应用 和 更改策略.
- 查看实际效果。 明天的文章将连接一个应用和一台主机,然后更改两者。
- 查看产品页面。 Fleet 管理.
你的套餐决定了 Fleet 管理多少个应用和 Collector 策略,Fleet 会实时显示你的用量。
本周先在一个服务上试用。如果有缺失的功能,请在 GitHub 或通过 联系我们.
在 Google 搜索中查看更多来自 Pydantic 的内容
将 Pydantic 添加为首选来源,以便更轻松地找到我们的最新文章。
将 Pydantic 添加为 Google 首选来源(在新标签页中打开)准备好看看你的代理实际在做什么了吗?
免费开始 免费开始 联系我们 联系我们探索我们的开源软件包