在当今云计算与大数据高速发展的时代,观测平台面临着前所未有的挑战。随着数据规模不断膨胀,传统的观测工具和架构难以满足大规模、高性能、低成本的需求。ClickHouse作为领先的列式数据库,凭借其卓越的扩展性和性能优势,为构建超大规模的观测系统提供了坚实基础。本文聚焦ClickHouse内部观测平台LogHouse如何突破OpenTelemetry(简称OTel)在极限规模下的瓶颈,实现存储超过100PB未压缩日志数据,处理近500万亿行事件的里程碑,并分享了其技术选型和架构设计的宝贵经验。 传统观测体系与OpenTelemetry的挑战 OpenTelemetry作为业界广泛采用的标准化观测数据收集框架,凭借其开放、统一的特性,为日志、指标和追踪数据的采集提供了便捷方案。早期,ClickHouse团队使用OTel作为全平台日志采集的核心组件,快速搭建了数据管道,实现了对Kubernetes环境中各个Pod的日志收集。
然而,当观测数据规模从数十PiB(Pebibyte)迅速增长至超百PB时,OTel体系暴露出两大不可忽视的问题。 其一是效率瓶颈。OTel管道内,对日志进行多次解析、数据结构转换及重编码,导致大量CPU资源浪费。数据从ClickHouse的JSON日志格式被反复转换为OTel中的内存数据结构,又被转换回ClickHouse支持的格式,这一过程耗费巨大。其二是稳定性风险。OTel Collector作为节点代理运行在Kubernetes集群中,受限于CPU和内存资源,面对爆发性的日志流量时会出现过载,造成数据丢失。
巨大的计算开销和数据丢失风险迫使工程团队重新评估单纯依赖OTel的可持续性。 SysEx:量身定制的系统表导出器革新观测管道 面对OTel难以承受的负载,ClickHouse团队创新设计并开发了名为SysEx的专用系统导出工具。SysEx绕过了中间格式转换,直接在ClickHouse实例间执行字节级别的数据复制,保持数据的原生类型和结构,极大提升了传输效率和数据保真度。其核心思想是通过Scraper池,使用Hash一致性哈希将客户Pod分配给采集者,Scraper定时查询源实例的系统表,以滑动时间窗口的方式抓取并写入LogHouse系统,缓冲时间默认为五分钟以保证系统表刷新完整。 这一设计不仅解决了CTE流量突发时的稳定性问题,避免了Collector的CPU瓶颈,还赋予了管道天然的背压与回溯能力,使得采集能够无压力地进行错峰和补采。更重要的是,SysEx允许工程师基于完全一致的表结构执行实时与历史同构查询,简化了故障排查与性能诊断工作。
创新性的动态架构进一步适应了频繁变化的系统表结构。通过Hash计算表模式,LogHouse能够自动管理不同版本的系统表,利用ClickHouse的Merge引擎将它们合并为逻辑统一的视图,为多版本兼容性和查询的一致性奠定基础。 效率与性能的飞跃 SysEx的引入使得采集CPU资源消耗锐减至OTel方案的不足十分之一,实现了20倍以上的吞吐提升。例如,在处理每秒数千万行日志的核心数据源时,SysEx总计仅消耗约70核CPU,而实现这一吞吐量的传统OTel管道则需要超过800核。此外,若想通过传统OTel管理同样规模的日志量,资源需求预计超过8000核CPU,这对于任何企业环境而言都极不现实。 这一成果不仅使得数据采集更加高效经济,还保证了采集过程中的数据完整性,杜绝了因资源瓶颈丢失日志的情况。
稳定性和可观察性的提升迎来了运维成本的大幅下降和用户体验的显著提升。 开放式与专用工具的协调发展 虽说SysEx在高吞吐、实时系统表采集方面表现出色,但OpenTelemetry仍保持重要地位。OTel作为一套标准协议和生态系统,优势在于极佳的灵活性和跨平台特性,适合新用户入门和对采集目的多样化的场景。此外,OTel能捕获程序标准输出中的日志,对于服务处于崩溃循环等异常状态时依然能够获取关键信息,满足不可或缺的醒目需求。 ClickHouse团队针对OTel采集策略进行了优化,减少采集日志级别,仅采集信息为及以上级别,从而显著降低数据量和采集资源使用。大量的高精度、批量日志采集则由更高效的SysEx承担,实现了二者间的良性互补和架构合理分工。
HyperDX:结合数据仓库优势的下一代观测体验 数据采集只是环节的开始。如何让海量日志和指标数据有序、快速、直观地呈现给工程师是关键所在。早期,ClickHouse内部使用Grafana作为数据展示和告警工具,虽然功能完备,但难以充分展示海量数据带来的深度洞察力和灵活性。 HyperDX作为ClickHouse原生的观测界面支持,提供了类似Lucene的语法用于事件搜索,同时也支持完整的SQL查询功能。HyperDX不依赖固定的表结构,可以灵活适配OTel标准数据及SysEx宽列结构,实现统一查询体验,极大简化了用户的学习成本和系统的使用门槛。 结合HyperDX的可视化能力,工程师能够轻松完成日志探索、关联分析和根因追踪,展现了ClickHouse在超大规模、高卡观测数据分析领域的巨大潜力。
迈向高基数与宽事件的观测新范式 传统观测通常依赖预聚合指标以控制存储规模,但这带来了信息丢失和灵活性削弱的问题。ClickHouse的列式存储特性使得直接存储高基数、宽事件成为可能。每条事件包含丰富上下文,如Pod名称、版本信息、网络细节、查询 ID等,无需舍弃维度,通过查询时聚合满足不同视角的分析需求。 这种方法类似于“Elasticsearch”式的宽事件日志,但结合ClickHouse的效率显著更高,让每天处理数十亿事件成为现实。存储每个数据点而非统计摘要,支持精细化排查和灵活指标定义,极大地提升了观测的深度和精度。 通过与丰富的数据科学可视化库(如Plotly)无缝集成,团队能够基于同一数据仓库,对观测数据从多维度进行探索,发现潜在异常模式和性能瓶颈。
未来展望:零影响采集和JSON存储探索 面对客户对采集过程中的系统影响的关注,ClickHouse团队正在研发“零影响采集”技术,利用对象存储上的日志快照而非实时查询,彻底消除采集对运行服务的负载和干扰。这一方向将在保障高精度和实时性的同时,进一步降低用户顾虑和运维复杂度。 此外,基于ClickHouse JSON类型的灵活性,团队积极试验将部分半结构化数据存储为JSON以提升模式适应性,尽管查询优化仍在探索中,其潜力不容忽视。 总结 ClickHouse LogHouse团队通过针对极端大规模观测数据的深入实践,成功突破了OpenTelemetry原生管道的性能和稳定性瓶颈,构建了专门优化的SysEx采集体系,并配合高度集成的HyperDX查询平台,实现了超过100PB存储及数百万亿事件的高效处理。通过拥抱高基数、宽事件的观测数据模型,团队不仅解决了传统监控系统难以突破的纵深限制,更推动了观测平台向数据仓库时代的进化。未来,随着零影响采集与更多新技术的推进,ClickHouse的观测生态必将在大数据时代焕发更大活力,持续赋能企业深挖系统和业务价值。
。