Cloudflare 日志管道概述

主要观点:Cloudflare 的可观测性平台团队管理内部日志管道的运行、改进和维护,每秒近百万的日志传输需满足服务级别目标(SLOs),文章介绍了其日志管道的架构和工作原理及未来计划。
关键信息

  • 日志概念简单,从早期的打印到现在的各种日志库。
  • Cloudflare 日志开始于“println”,多数系统通过日志库输出,且与 systemd-journald 关联。
  • 管道后续步骤包括 syslog-ng,它读取 journald 日志并添加字段,还提供 Unix Domain Socket 提高吞吐量。
  • “log-x”操作实现冗余,将日志发送到两个核心数据中心,遇到数据中心断开时能保证日志完整。
  • 日志到达核心数据中心后缓冲在 Kafka 队列,可容忍消费者的短暂故障,通过分区和特定键保证日志顺序,但存在分区不平衡问题,正迁移至 Open Telemetry Logs。
  • 之后将日志插入长期存储,有 ElasticSearch/Logstash/Kibana(ELK)栈和 Clickhouse 集群两种后端。
    重要细节
  • systemd 用于服务管理,stdout/stderr 流通常进入 systemd-journald。
  • syslog-ng 实现 BSD syslog 协议,添加常见字段并以 JSON 格式转发。
  • 两个核心数据中心为美国和欧洲,log-a 和 log-b 接收器将日志插入 Kafka 主题。
  • Kafka 集群能容忍消费者长达 8 小时的总中断且保证分区内顺序。
  • ElasticSearch 集群分为“master”“data”“HTTP”节点,利用 HTTP 节点的缓存减少查询时间。
  • Clickhouse 集群存储服务日志,正迁移为主要存储。
    未来计划包括提高多租户能力、迁移 syslog-ng 管道至 Open Telemetry、尾部采样替代头部采样、更好地平衡 Kafka 集群等。Cloudflare 还提供多种网络服务,可通过 1.1.1.1 免费应用提速安全上网,了解更多可访问相关页面,且正在招聘相关人员。
阅读 15
0 条评论