ClickStack - ClickHouse 可观测性堆栈
ClickStack 是一个生产级别的可观测性平台,基于 ClickHouse 构建,将日志、追踪、指标和会话整合到一个高性能的解决方案中。ClickStack 专为监控和调试复杂系统而设计,它使开发人员和 SRE 能够端到端地追踪问题,而无需在工具之间切换或手动使用时间戳或关联 ID 拼接数据。
ClickStack 的核心是一个简单但强大的理念:所有可观测性数据都应作为宽而丰富的事件摄取。这些事件存储在 ClickHouse 表中,按数据类型分类——日志、追踪、指标和会话——但仍然可以在数据库级别完全查询和跨关联。
ClickStack 旨在通过利用 ClickHouse 的列式架构、原生 JSON 支持和完全并行化的执行引擎来高效处理高基数工作负载。这使得在海量数据集上实现亚秒级查询、在宽时间范围内进行快速聚合以及深入检查单个追踪成为可能。JSON 以压缩的列式格式存储,允许在无需人工干预或预先定义的情况下进行模式演化。
特性
该堆栈包含几个关键特性,专为调试和根本原因分析而设计
- 在一个地方关联/搜索日志、指标、会话回放和追踪
- 模式无关,可在现有的 ClickHouse 模式之上工作
- 针对 ClickHouse 优化的闪电般快速的搜索和可视化
- 直观的全文搜索和属性搜索语法(例如
level:err),可选 SQL。 - 使用事件差异分析异常趋势
- 只需点击几下即可设置告警
- 无需复杂的查询语言即可仪表盘高基数事件
- 原生 JSON 字符串查询
- 实时 tail 日志和追踪,始终获取最新事件
- 开箱即用支持 OpenTelemetry (OTel)
- 监控从 HTTP 请求到数据库查询的健康和性能(APM)
- 用于识别异常和性能回归的事件差异
- 日志模式识别
组件
ClickStack 由三个核心组件组成
- ClickStack UI (HyperDX) – 一个专门为探索和可视化可观测性数据而构建的前端
- OpenTelemetry collector – 一个定制构建的、预配置的 collector,针对日志、追踪和指标具有约定俗成的模式
- ClickHouse – 堆栈核心的高性能分析数据库
这些组件可以一起部署在完全自托管的 ClickStack 开源版设置中,也可以拆分到托管和自托管环境中。在托管的 ClickStack 中,ClickHouse 和 HyperDX UI 在 ClickHouse Cloud 中托管和运行,而用户只需运行 OpenTelemetry Collector。
HyperDX UI 的浏览器托管版本也可用,允许用户直接连接到现有的 ClickHouse 部署,而无需部署额外的 UI 基础设施。
要开始使用,请在加载 示例数据集 之前访问 入门指南。您还可以查阅有关 部署选项 和 生产最佳实践 的文档。
原则
ClickStack 采用一套核心原则设计,在可观测性堆栈的每一层都优先考虑易用性、性能和灵活性
易于在几分钟内设置
ClickStack 适用于任何 ClickHouse 实例和模式,无需进行大量配置。无论您是全新开始还是与现有设置集成,您都可以在几分钟内启动并运行。
用户友好且专为目的而设计
HyperDX UI 支持 SQL 和 Lucene 风格的语法,允许用户选择适合其工作流程的查询界面。UI 专为可观测性而设计,旨在帮助团队快速识别根本原因,并在复杂数据中无摩擦地导航。
端到端可观测性
ClickStack 提供全栈可见性,从前端用户会话到后端基础设施指标、应用程序日志和分布式追踪。这种统一的视图能够对整个系统进行深入的关联和分析。
专为 ClickHouse 构建
堆栈的每一层都旨在充分利用 ClickHouse 的功能。查询经过优化,以利用 ClickHouse 的分析函数和列式引擎,确保在海量数据上进行快速搜索和聚合。
OpenTelemetry 原生
ClickStack 与 OpenTelemetry 原生集成,通过 OpenTelemetry collector 端点摄取所有数据。对于高级用户,它还支持使用本机文件格式、自定义管道或 Vector 等第三方工具直接摄取到 ClickHouse。
开源且完全可定制
ClickStack 是完全开源的,可以部署在任何地方。模式灵活且用户可修改,UI 设计为可配置为自定义模式,无需进行更改。所有组件——包括 collector、ClickHouse 和 UI——都可以独立扩展,以满足摄取、查询或存储需求。
架构概述
ClickStack 架构因部署方式而异。在所有组件都自托管的ClickStack 开源版和 ClickHouse 和 HyperDX UI 在 ClickHouse Cloud 中托管和运行的托管的 ClickStack之间存在重要的架构区别。虽然核心组件在这两种模式下保持不变,但对每个组件的托管、扩展和保护的责任却不同。
- 托管 ClickStack
- 开源 ClickStack
托管的 ClickStack 完全在ClickHouse Cloud 中运行,提供完全托管的可观测性后端,同时保留相同的 ClickStack 数据模型和用户体验。
在此模型中,ClickHouse 和 ClickStack UI (HyperDX) 由 ClickHouse Cloud 托管、运行和保护。用户只需负责运行 OpenTelemetry Collector 以将遥测数据发送到托管服务。
托管的 ClickStack 包含以下组件
-
ClickStack UI (HyperDX)
HyperDX UI 完全集成到 ClickHouse Cloud 中,并作为服务的一部分进行管理。它提供日志搜索、追踪探索、仪表盘、告警以及跨遥测类型的关联,并集成了身份验证和访问控制。 -
OpenTelemetry collector (自托管)
用户运行一个 OpenTelemetry Collector,该 Collector 从其应用程序和基础设施接收遥测数据。此 collector 通过 OTLP 将数据转发到 ClickHouse Cloud。虽然可以使用任何符合标准的 OpenTelemetry Collector,但我们强烈建议使用ClickStack 发行版,该版本经过预配置和优化,可用于 ClickHouse 摄取,并与 ClickStack 模式开箱即用。 -
ClickHouse Cloud
ClickHouse 在 ClickHouse Cloud 中完全托管,作为所有可观测性数据的存储和查询引擎。用户无需管理集群、升级或操作问题。
托管的 ClickStack 具有以下几个关键优势
- 与存储无关的计算自动扩展
- 低成本且实际上无限的保留期,由对象存储提供支持
- 使用 ClickHouse Cloud Warehouses 实现的独立读写隔离
- 集成的身份验证和访问控制
- 自动备份
- 安全性和合规性功能
- 无操作停机时间的无缝升级
这种部署模式允许团队完全专注于可观测性工作流程和工具化,而无需承担操作 ClickHouse 或 ClickStack UI 的开销。
对于在生产环境中部署 ClickStack 的用户,建议使用托管的 ClickStack。请参阅 入门指南,了解有关使用 ClickHouse Cloud 部署 ClickStack 的说明。
开源 ClickStack 由三个核心组件组成
-
ClickStack UI (HyperDX)
一个用户友好的界面,专为可观测性而构建。它支持 Lucene 风格和 SQL 查询、交互式仪表盘、告警、追踪探索等——所有这些都针对 ClickHouse 作为后端进行了优化。 -
OpenTelemetry collector
一个定制构建的 collector,配置了针对 ClickHouse 摄取优化的约定俗成的模式。它通过 OpenTelemetry 协议接收日志、指标和追踪,并使用高效的批量插入将其写入 ClickHouse。 -
ClickHouse
高性能的分析数据库,作为宽事件的中央数据存储。ClickHouse 能够实现大规模的快速搜索、过滤和聚合,利用其列式引擎和对 JSON 的原生支持。
除了这三个组件之外,ClickStack 使用一个 MongoDB 实例来存储应用程序状态,例如仪表盘、用户帐户和配置设置。
完整的架构图和部署详情可以在 架构章节 中找到。
对于有兴趣将开源 ClickStack 部署到生产环境的用户,我们建议阅读 “生产环境” 指南。