写点什么

Cloudflare 使用 OpenTelemetry 彻底检修日志记录管道

作者:Matt Saunders

  • 2024-11-27
    北京
  • 本文字数:1940 字

    阅读完需:约 6 分钟

Cloudflare 使用 OpenTelemetry 彻底检修日志记录管道

互联网基础设施和安全公司 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/

2024-11-27 08:007514

评论

发布
暂无评论
发现更多内容

吐血整理!金九银十必问的1000道Java面试题及答案

Java 编程 程序员 架构 面试

小公司实施系统为什么也容易失败?

明道云

fil挖矿步骤教程是什么?fil挖矿规则是什么?

fil挖矿步骤教程是什么 fil挖矿规则是什么

一周信创舆情观察(8.16~8.22)

统小信uos

WorkPlus高端制造业移动数字化平台解决方案—华晨宝马

BeeWorks

即时通讯 移动办公平台 移动数字化底座 移动数字化基座 企业即时通讯平台

fil矿机什么时候开始挖?fil矿机能挖多久?

fil矿机能挖多久 fil矿机什么时候开始挖

盲盒星球系统开发

(王经理)专业app小程序开发

技术分析| 实时音视频通讯中的流媒体是怎样传输的

anyRTC开发者

音视频 WebRTC 流媒体 流媒体传输

kubelet 1.14 升级 kubelet 1.20 容器重启问题

Geek_f24c45

Docker Kubernetes kubelet

springboot+vue+activiti,在线编辑器,快速开发平台

金陵老街

Java Vue 工作流 springboot Activiti

易灸灸系统开发

(王经理)专业app小程序开发

Python实现发送邮件(实现单发/群发邮件验证码)

Python研究者

8月日更

北鲲云超算平台如何帮助高性能计算行业提供解决方案

北鲲云

技术实践|网易云信 IM SDK 服务高可用技术方案

网易云信

后端

存储大师班 | ZFS存储池块管理与事务模型

QingStor分布式存储

文件存储 分布式存储

RocketMQ-学习记录

春秋易简

ipfs挖矿合法吗?ipfs挖矿靠谱吗?

区块链 IPFS ipfs挖矿 ipfs矿机 filecoin挖矿

最全互联网后端免费技术分享视频资源学习社区

hanaper

区块链“通证”将颠覆“资本”

CECBC

能不能征服初恋,就看这个架构了!!!

人工智能~~~

读书笔记-《数据密集型应用系统设计》-概论

KayTin

Go 与 C++ 的对比和比较

恒生LIGHT云社区

c++ 编程语言 Go 语言

女巫面具软件开发

(王经理)专业app小程序开发

赋能生态,合力同行!博睿数据成为光合组织成员单位

博睿数据

如何基于分布式KV研发一款消息中间件

Java 编程 面试 后端 中间件

Goroutine & Channel

Vibyird

并发编程 channel CSP Go 语言 goroutine

区块链产业大爆发!未来究竟是谁的机会?

CECBC

区块链应用:从技术工具到创新思维

CECBC

宝安机关食堂支持数字人民币刷脸支付

CECBC

优雅的故障处理:快速创建 Pulsar 重试队列

Apache Pulsar

消息队列 Apache Pulsar StreamNative

Java内存问题从工具到诊断平台

徐敏

Java 监控 垃圾回收 故障诊断

Cloudflare 使用 OpenTelemetry 彻底检修日志记录管道_后端_InfoQ精选文章