互联网基础设施和安全公司 Cloudflare 记录了它是如何通过从 syslog-ng 迁移到 OpenTelemetry Collector 来显著升级其日志记录管道的。
日志记录管道是 Cloudflare 最大的数据管道之一,也是其关键的基础设施,因为它每秒从其网络中的每台服务器收集和处理数百万个日志事件。该管道以前依赖于广泛使用的开源日志记录解决方案 syslog-ng,而迁移到 OpenTelemetry Collector 是 Cloudflare 处理其大量日志数据方式的重大转变。
工程师 Colin Douch 和 Jayson Cena 在 其公司博客文章中详细介绍了这一迁移过程,他们表示,这一改变有几个动机:
语言兼容性:OpenTelemetry Collector 是用 Go 语言编写的,与 syslog-ng 使用的 C 语言相比,Cloudflare 的工程团队更熟悉 Go 语言。这一改变使 Cloudflare 的更多工程师能够为日志系统做出贡献并对其加以改进。
更容易与内部库集成:使用 Cloudflare 的内部后量子(Post-Quantum)加密库构建 syslog-ng 是一个挑战。基于 Go 的 OpenTelemetry Collector 简化了这一过程。
增强的度量指标:OpenTelemetry Collector 支持 Prometheus 度量指标,使团队能够收集有关收集器性能的更详细的遥测数据。
统一遥测基础设施:Cloudflare 已经将 OpenTelemetry Collector 用于一些跟踪基础设施中。将不同类型的遥测技术整合到一个系统中可以降低工程团队的复杂性。
作为迁移的一部分,工程师开发了几个自定义组件,以维护与现有系统的兼容性并满足特定的需求。这些组件包括 Cloudflare 自己的日志格式的自定义导出器、用于其他输出格式的修改后的文件导出器、将外部源 JSON 数据合并到日志条目中的处理器,以及用于防止单个服务淹没日志管道的速率限制器。
Cloudflare 采用了两种策略来推出这些更改。由于核心数据中心的自定义配置和多样化的工作负载,需要采取谨慎的实践方法,而在其边缘数据中心,由于配置更简单,团队可以在仔细监控的情况下逐步推出。
迁移过程暴露出几个挑战,例如故障转移问题,新导出器最初未能检测到与主日志服务器的连接问题,导致日志积压,并在混乱测试期间影响了一些服务。停止 syslog-ng 和启动 OpenTelemetry Collector 之间的切换也导致日志收集短暂中断,影响了一些以阻塞模式写入日志的服务。
Cloudflare 通过在其自定义导出器中实施了更严格的超时、修改故障转移行为以及调整其部署流程以最大限度地减少切换期间的停机时间来解决这些问题。未来的相关计划包括实施更复杂的日志采样技术,包括尾部采样,并向开源社区贡献一些自定义组件。
Cloudflare 并不是唯一一家转向 OpenTelemetry 的公司,Shopify、Splunk、谷歌和 GitHub 等其他大型公司也采用了这项技术。在谷歌云(Google Cloud)网络研讨会上,其中一些组织详细介绍了他们的 OpenTelemetry 使用情况。
谷歌正在多种产品中使用 OpenTelemetry,例如在谷歌 Kubernetes 引擎(Google Kubernetes Engine)和谷歌计算引擎(Google Compute Engine)中使用收集器,以及在云监控(Cloud Monitoring)和云跟踪(Cloud Trace)中替换 OpenCensus SDK。
Splunk 内部正在采用 OpenTelemetry,通过多种形式该项目做出了广泛贡献,例如通过使用收集器进行基础设施监控、迁移到 OpenTelemetry 客户端库以及为收集器和自动仪器开发做出贡献等。
Shopify 正在将其跟踪收集基础架构迁移到 OpenTelemetry,并在收集器中实施 PII 编辑、采样和跨度(span)重命名。
同样,GitHub 正在采用 OpenTelemetry 来标准化其遥测实践。在一篇博客文章中,GitHub 工程师详细介绍了该公司如何使用 statsd、syslog 以及 OpenTracing 等工具的,statsd 用于获取度量指标、syslog 用于获取文本日志,OpenTracing 用于获取请求跟踪,但这导致了互操作性的挑战,并为每个新系统重复提供了解决方案。
GitHub 正在通过多种关键的方式来实施 OpenTelemetry,如使用 OTLP(OpenTelemetry 协议)作为遥测信号的标准,与供应商无关的格式。它还利用 Ruby 和 Postgres 的自动检测功能来自动添加分布式跟踪。开放标准还允许 GitHub 使用 OpenTelemetry 跟踪作为根来创建不同信号之间的自动关联。
GitHub 认为,一旦跟踪到位,这种方法将允许它们自动获取额外的信号,例如自动计算指标并将跟踪事件转换为详细的日志。它们还为 OpenTelemetry 项目做出了贡献,以造福更广泛的社区。
作者介绍
Matt Saunders 是 Adaptavist 的首席技术官 DevOps 主管。帮助团队使用 DevOps、平台工程和云原生工具和技术,以快速、高效且最小的压力交付可靠、高质量的软件。他曾与复杂的企业、小型初创企业、中小企业以及介于两者之间的所有企业合作过。还联合组织了伦敦 DevOps 聚会小组,该小组拥有 10000 多名成员,每月举办一次非常受欢迎的行业活动。
查看原文链接:
https://www.infoq.com/news/2024/10/cloudflare-opentelemetry/
评论