Files
nexus/sreweekly/markdown/436/06-solving-large-logs-with-clickhouse-zh.md

1.8 KiB
Raw Blame History

用 ClickHouse 解决大规模日志问题

简介

这些人想让自己的可观测性产品支持超过 128 字节的日志行,但他们的数据存储让这件事变得棘手。他们用布隆过滤器(bloom filter)和其他技术实现了可接受的性能。

正文

日志是软件可观测性三大支柱之一,也是 OpenTelemetry 的关键组成部分。日志数据蕴含着能帮助开发者理解应用行为、排查问题的关键洞察,因此高效地搜索日志的能力至关重要。开发者需要能够快速、准确地定位嵌入在日志中的有价值信息。

Embrace 是一个移动应用可观测性平台,我们的系统每天要处理约 20 亿条日志。我们最近着手提高客户可以发送给我们的日志数据量,同时提升针对这些更大日志进行搜索时的性能。

我们用 ClickHouse 作为日志数据库,我们想分享在优化系统以处理更大日志大小时学到的经验。在这篇文章中,我们将介绍:

  • 我们日志系统的概览
  • 用更大的数据量测试我们的摄取管道
  • 编写更高效的查询
  • 用跳跃索引(skip index)缩短查询时间

TL;DR:我们最初以为摄取可能是个问题,但测试之后,我们的系统能够处理增大的日志大小。我们将在后续文章中分享更多关于摄取管道的内容。在增大日志大小之后,通过重写查询以绕开 ClickHouse 当前的某个限制,并测试多种带布隆过滤器配置的跳跃索引,以找到性能与存储成本之间的最佳匹配,我们把最慢的查询从 60 秒改进到了 1-2 秒。