具有规范日志行的快速且灵活的可观察性

主要观点:日志是计算中最古老且最普遍的模式之一,虽强大灵活但体积大难快速提取洞察,Stripe 采用规范日志行(canonical log lines)技术来解决此问题,它能将请求关键信息集中在一行,使查询和聚合更快速,在多种场景中非常有用。
关键信息

  • 传统日志在查询跨行信息时困难,规范日志行可将请求关键信息集中在一行,如包含 HTTP 请求动词、路径、响应状态等。
  • 规范日志行在 Stripe 的主 API 中通过中间件实现,即使内部故障也能确保发出,且日志会异步发送到 Kafka 主题并存储到 S3 用于长期分析。
  • 已将规范日志行的模式编码为协议缓冲区用于分析和驱动产品,如 Stripe 的开发者仪表盘,工程师可通过 SQL 进行数据聚合和分析。
    重要细节
  • 结构化日志通过添加key=value对增强日志行,使开发者可轻松标记额外信息,便于机器读取和多种日志处理工具使用。
  • 示例中展示了如何用日志处理系统查询各种信息,如最后请求的 API 端点、是否有 API 请求被限速等。
  • 规范日志行的实施在不同技术栈中相对简单,如在 Stripe 的主 API 中通过中间件实现,在实现过程中会考虑各种异常情况确保日志发出。
  • 对于日志数据长期保留成本高的问题,规范日志行的简洁性使其适合用于归档历史请求,通过编码为协议缓冲区可确保命名稳定。
  • 介绍了可能用于实现规范日志行完整管道的特定技术,如在 Kubernetes 中可使用 Elasticsearch 等,发射到数据仓库需自定义解决方案,如使用 Kafka 等。
阅读 14
0 条评论