主要观点: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 免费应用提速安全上网,了解更多可访问相关页面,且正在招聘相关人员。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。