作为实时可观测平台,IBM Instana 为 DevOps 团队和工程师提供了在分布式系统中发现和修复问题的工具,以防问题影响用户。ClickHouse 是其平台的核心,负责存储和查询所有驱动 Instana 监控功能的遥测数据,工作量巨大。
但是,尽管 ClickHouse 对 Instana 的架构至关重要,它也带来了一个独特的挑战:如何监控自身也在监控其他一切的系统的性能?又如何在不增加复杂性或降低速度的情况下实现监控?
在最近于多伦多举行的 ClickHouse 聚会上,Instana 软件开发人员 Joshua Hildred 分享了其团队如何通过自定义 span 导出器解决此问题,这是一个巧妙的解决方案,改变了 Instana 监控 ClickHouse 性能的方式。
在不超载系统的情况下进行监控
理解系统性能的关键之一是追踪。追踪捕获请求在分布式系统中的流动,将其分解为 span 或单独的工作单元,这些工作单元揭示了时间和资源的消耗之处。对于 Instana 而言,其成功取决于提供高保真、秒级可观测性,追踪 ClickHouse 操作意味着揭示对性能瓶颈和系统行为的深入见解。
“ClickHouse 是我们系统的基础组成部分,因此我们的团队非常重视监控它,”Joshua 解释道。虽然处理来自用户的请求可以轻松地由 ClickHouse 完成,但分析系统内部发生的情况则带来了更大的挑战。团队需要实时追踪和监控 ClickHouse 的性能,而不能干扰其作为 Instana 可观测平台基础的角色。
最初,他们探索使用 ClickHouse 的物化视图来导出遥测 span。虽然理论上有效,但这种方法存在权衡。首先,物化视图增加了不必要的开销,可能会影响 ClickHouse 的性能。更重要的是,它们具有“侵入性”,通过引入额外的复杂性,给客户系统带来风险。“我们不想在客户系统中放置不必要的东西,”Joshua 说。
为效率而构建的自定义解决方案
Joshua 和 Instana 团队没有依赖现有工具,而是决定构建自定义 span 导出器,以提供他们所需的丰富的性能洞察,而不会给它旨在监控的系统带来负担。
OpenTelemetry 是用于收集和传输遥测数据的新兴标准,它为此提供了基础。“ClickHouse 支持 OpenTelemetry,这对于追踪性能非常棒,”Joshua 说。“它使我们能够深入了解 ClickHouse,不仅可以捕获通过分布式系统的流程,还可以跟踪这些调用在 ClickHouse 内部的执行方式,从而清晰地了解 ClickHouse 正在做什么。”
正如 Joshua 所解释的那样,自定义 span 导出器的设计考虑了六个主要目标
-
易于安装 - 导出器需要易于部署,只需一行命令即可完成安装,使团队能够快速启动并运行。
-
自动重新配置 - 它必须能够即时适应系统变化,最大限度地减少维护,并在动态环境中保持可靠。
-
非侵入性 - 为了避免干扰客户系统或使 ClickHouse 的操作复杂化,导出器必须具有最小的 footprint。
-
预处理 span - 通过在数据到达后端之前执行预处理任务,导出器可以卸载计算工作并提高系统效率。
-
轻松配置更新 - 无缝推送更新的能力将使导出器能够随着 Instana 的需求而发展。
-
支持指标和性能分析 - 除了追踪之外,导出器还旨在捕获指标和性能分析数据,为监控团队增加更多价值。
最终,这种设计将使 Instana 能够监控 ClickHouse,最大限度地减少对系统性能的影响,并满足其内部团队和客户的需求。
从概念到现实
在目标明确后,Instana 团队开始着手将自定义 span 导出器集成到其架构中。Josh 说,在成熟的生态系统中构建的好处之一是现有工具的可用性,例如 Instana Agent,这是一种轻量级监控工具,能够自动发现。部署后,该 Agent 识别出正在运行的 ClickHouse 实例,获取必要的传感器,并开始收集数据,所有这些都无需手动设置。
“我们免费获得了这一切,这很棒,”Joshua 说。
导出器本身使用滑动窗口方法定期查询 ClickHouse 的 opentelemetry_span
表。此方法确保不会遗漏任何数据,同时保持系统高效。诸如过滤和格式化 span 等预处理任务在数据到达 Instana 的后端之前处理,从而减少下游系统的计算负载。处理完成后,span 在后端拼接在一起并可视化,从而为 Instana 提供有关 ClickHouse 性能的可操作见解。
一个对每个人都更好的系统
自定义 span 导出器的添加改变了 Instana 团队监控和优化 ClickHouse 的方式。内部用户可以以前所未有的清晰度追踪 ClickHouse 的性能,识别瓶颈并改进查询执行。对于客户而言,更好的监控能力意味着更快的问题解决和更可靠的系统性能。
但好处不仅仅限于故障排除。集成加深了 Instana 对 ClickHouse 如何融入更广泛的分布式系统的理解。通过可视化 ClickHouse 如何与其他组件交互,团队可以微调数据库,同时优化整个平台,以更好地为内部和外部利益相关者服务。
“自定义 span 导出器帮助我们使整个系统更加可靠,使我们离为每个人提供实时可观测性的使命更近一步,”Joshua 说。
突破可观测性的边界
Instana 针对监控 ClickHouse 问题的巧妙解决方案展示了 Joshua 和团队如何将棘手的挑战转化为创新的机会。通过使用 ClickHouse 对 OpenTelemetry 的支持来构建自定义 span 导出器,他们提出了一个简单、有效且旨在满足其需求的解决方案。最重要的是,他们提高了交付 DevOps 团队每天依赖的高保真洞察的能力。
自定义 span 导出器的成功证明了 Instana 的宗旨:为团队提供快速且自信地采取行动所需的工具。对于 Instana 的工程师而言,它使理解和优化 ClickHouse 如何融入其架构变得更加容易。对于客户而言,这意味着更快的修复、更好的性能以及在一个依赖分布式系统运行的世界中更多的信任。
要了解更多 ClickHouse 的优势并了解它如何改变您公司的数据运营,请免费试用 ClickHouse Cloud 30 天。