基于 Meshery Catalog 的 ClickHouse + OpenTelemetry + HyperDX 可观测性架构设计解析
【免费下载链接】mesheryMeshery, the cloud native manager项目地址: https://gitcode.com/GitHub_Trending/me/meshery
本篇技术指南围绕 Meshery Catalog 中发布的clickhouse-otel-hyperdx-arch部署类设计(Deployment Design)展开,系统拆解一个由 ClickHouse、OpenTelemetry Collector、HyperDX 与 MongoDB 组成的高可观测性数据链路架构:遥测数据如何经 OTLP 协议被采集、导出到 ClickHouse,HyperDX 如何基于 ClickHouse 完成分析,以及 MongoDB 在其中的角色。读完本文,你将掌握该设计的组件构成、数据流向、MeshModel 建模方式与注意事项,并能通过mesheryctl将该设计导入并应用到你的 Kubernetes 集群。
设计概览:一份可观测性架构的 Catalog 条目
clickhouse-otel-hyperdx-arch是发布在 Meshery Catalog 中的一个deployment类型设计条目,其元数据位于 10919143-fe49-419d-9022-7906e75fe1bf.md:
| 属性 | 值 |
|---|---|
| name | clickhouse-otel-hyperdx-arch |
| type | deployment |
| publishedVersion | 0.0.75 |
| compatibility | clickhouse |
| patternId | 10919143-fe49-419d-9022-7906e75fe1bf |
| createdAt | 2025-10-02T17:55:19Z |
| permalink | catalog/deployment/clickhouse-otel-hyperdx-arch-10919143-fe49-419d-9022-7906e75fe1bf.html |
该条目由用户 Kavya Katal 创建,对应一份可直接下载的 Meshery Design 文件(design.yml),同时配套发布在 artifacthub-pkg.yml 中的包描述与安装指令。它描述的是"ClickHouse + OpenTelemetry Collector + HyperDX + MongoDB"四件套的可观测性架构设计,核心目的是一站式落地"采集 → 存储 → 分析"的完整遥测数据流水线。
在 Meshery 的概念体系中,这类文件正是 Designs 的载体:Design 是 Meshery 中可部署的单元,由 Components(组件)和 Relationships(关系)组成,以声明式语法描述期望的基础设施状态,并可通过 Catalog 跨实例共享与发布。
架构解析:四类组件构成的遥测数据链路
根据该设计的patternInfo描述,整个架构的数据流如下:
- OTLP(HTTP/gRPC)数据由 OpenTelemetry Collector 接收:应用通过 OpenTelemetry 协议(OTLP)以 HTTP 或 gRPC 两种传输方式上报 traces、metrics、logs 等遥测数据;
- Collector 将遥测数据导出到 ClickHouse:OpenTelemetry Collector 作为采集与转发中枢,将规范化后的信号写入 ClickHouse 列式存储;
- HyperDX 查询 ClickHouse 进行分析:HyperDX 作为可观测性分析前端,直接对 ClickHouse 中的遥测数据执行查询与可视化分析;
- MongoDB 用于维护应用状态:HyperDX 依赖 MongoDB 保存应用/租户等元状态信息,与 ClickHouse 中存储的时间序列遥测数据形成"状态数据 + 时序数据"的分工。
这四条要点完整刻画了该设计的架构意图,也直接体现在 design 文件的组件清单中。
深入设计文件:组件与关系的建模细节
打开 design.yml(schemaVersion 为designs.meshery.io/v1beta1),可以看到该设计共包含 9 个组件(components)与 8 组关系(relationships),其中语义组件与非语义组件并存。
语义组件:真实的 Kubernetes 资源
语义组件直接映射可被 Meshery 生命周期管理的基础设施资源:
| 组件 | Kind | 所属 Model | 版本 | 说明 |
|---|---|---|---|---|
| ClickHouse | ClickHouseInstallation | clickhouse(v1.0.0) | clickhouse.altinity.com/v1 | 由 Altinity clickhouse-operator 的 CRD 注册而来,category 为 Database |
| HyperDX | Deployment | kubernetes(v1.32.0-alpha.3) | apps/v1 | 以 Deployment 表示的可观测性分析服务 |
| MongoDB | Deployment | kubernetes(v1.32.0-alpha.3) | apps/v1 | HyperDX 的应用状态存储 |
| OpenTelemetry Collector | Deployment | kubernetes(v1.32.0-alpha.3) | apps/v1 | 遥测数据采集与导出器 |
| default | Namespace | kubernetes(v1.32.0-alpha.3) | v1 | 各组件所在命名空间 |
ClickHouse 组件不仅声明了基础元信息(metadata.name: Clickhouse、namespace: default),还预留了spec下的完整配置骨架:defaults.templates.serviceTemplates、templates(podTemplates / hostTemplates / serviceTemplates / volumeClaimTemplates)、useTemplates以及configuration(clusters、zookeeper.nodes)——这些字段与 Altinity clickhouse-operator 的 CRD 结构一一对应,便于使用者在此基础上扩展实际的 ClickHouse 集群拓扑与 ZooKeeper 协调节点。其余三个 Deployment 组件当前仅携带metadata.name与namespace,实际镜像与副本配置可由使用者在 Meshery 设计器中按需补齐。
非语义组件:架构图上的注释与标注
设计文件还包含非语义(注释类)组件,它们不产生任何实际基础设施变更,仅用于在可视化画布上传达架构意图:
- 两个Comment组件(来自
meshery-core模型,kind 为 Comment,versioncore.meshery.io/v1alpha1),其中一个记录了社区对该作者设计的评论内容; - 两个TextBox组件(kind 为 TextBox),文本分别为"OTLP (gRPC)"(组件 displayName 为
otlp/grpc)与"OTLP (HTTP)"(displayName 为otlp/http),用于在图面上标注两条遥测数据入口。
这些注释组件通过meshery-shapes模型的edge(annotation 类型)非绑定关系连接到相应组件,将"OTLP HTTP 入口"与"OTLP gRPC 入口"的标注分别挂接到 OpenTelemetry Collector 上,使设计图在视觉上完整还原了数据接入方式。这与 Components 文档中"语义组件表示真实资源、非语义组件用于文档与组织"的划分完全一致。
层级关系:Namespace 与下属组件的归属
设计中的hierarchical关系(kind 为hierarchical,type 为parent,subType 为inventory,来自 kubernetes 模型)定义了Namespace 到 namespaced components 的归属关系:default命名空间作为父节点,HyperDX、MongoDB、OpenTelemetry Collector 等 Deployment 及 ClickHouseInstallation 均作为其子节点。从源码结构看,这些关系还携带了 patch 策略(如将父组件的displayName以 replace 策略写入子组件、将configuration.metadata.namespace同步到子组件),Meshery 会依据此类关系在部署时自动推导并修正组件的命名空间归属。
建模方式与注意事项(Caveats)
该设计在patternCaveats中明确指出了建模约束,这是使用该设计前必须了解的前提:
HyperDX 目前没有专门的 MeshModel,因此在设计中以 Kubernetes Deployment 表示;MongoDB 与 OpenTelemetry Collector 出于同样的原因也被建模为 Deployment。
换言之,clickhouse-otel-hyperdx-arch是一个概念性架构蓝图:它优先表达组件间的拓扑与数据流关系,而非完整可运行的镜像级配置。ClickHouse 有专门的 Altinity CRD 模型支撑,而 HyperDX、MongoDB、OpenTelemetry Collector 则退化为通用的apps/v1Deployment 占位。使用者若要真正落地部署,需要在 Meshery UI 的设计器中为这些 Deployment 补充具体的容器镜像、资源配额、服务暴露等配置,或将其与 Helm Chart、Kubernetes Manifest 等既有配置结合。这种"以通用资源表达专用组件"的做法,也体现了 Meshery Design 在专用模型缺失时的降级建模策略。
使用方式:导入、查看与应用该设计
该 Catalog 条目提供的安装指令为mesheryctl design import -f。基于 import 命令参考 与 配置管理指南,完整的使用流程如下。
1. 导入设计
下载 design.yml 后,通过mesheryctl design import将其导入 Meshery(支持本地文件路径或远程 URL):
mesheryctl design import -f design.yml也可以显式指定源类型与名称:
mesheryctl design import -f design.yml -s design -n clickhouse-otel-hyperdx-archimport子命令的相关参数:
| 参数 | 说明 |
|---|---|
-f, --file | 设计文件路径或 URL(YAML 与 TGZ 格式;导入 Meshery Design 时也支持 OCI 格式) |
-s, --source-type | 源文件类型,可选 manifest / compose / helm / design |
-n, --name | 为导入的设计指定名称 |
2. 查看与列表
导入后可用以下命令确认设计状态:
mesheryctl design list mesheryctl design view clickhouse-otel-hyperdx-arch3. 应用设计
确认组件配置(尤其是为三个 Deployment 补充镜像与规格)后,即可将设计应用到目标环境:
mesheryctl design apply -f design.yml对于已导入的设计,也可以直接按名称应用:
mesheryctl design apply clickhouse-otel-hyperdx-arch除此之外,还可通过 Meshery UI 的Design Configurator可视化地打开该设计,在画布上查看注释组件与数据流标注、为 Deployment 补齐配置、调整关系,然后执行 dry-run 验证或直接部署。关于设计的发布、克隆、合并、快照等完整能力,可进一步阅读 Designs 概念文档;Catalog 的浏览与发布流程见 Catalog 架构文档。
小结
clickhouse-otel-hyperdx-arch是一份极具参考价值的可观测性架构参考设计:它用 Meshery Design 的声明式语言,将 OTLP(HTTP/gRPC)采集入口、OpenTelemetry Collector 转发、ClickHouse 时序存储、HyperDX 分析查询与 MongoDB 状态存储完整地组织在同一张架构图上,并通过注释组件与层级关系还原了数据流语义。虽然 HyperDX、MongoDB 与 OpenTelemetry Collector 因缺少专属 MeshModel 而以通用 Deployment 建模,但这并不妨碍它成为快速理解"现代可观测性数据链路"的起点模板——你可以在 Meshery 中导入它,在其骨架上补充真实镜像与配置,演进为自己的生产级可观测性部署。
本文涉及的仓库文件
- Catalog 条目元数据:docs/catalog/deployment/10919143-fe49-419d-9022-7906e75fe1bf.md
- 设计文件(JSON):docs/data/catalog/10919143-fe49-419d-9022-7906e75fe1bf/0.0.75/design.yml
- 包描述与安装指令:docs/data/catalog/10919143-fe49-419d-9022-7906e75fe1bf/0.0.75/artifacthub-pkg.yml
- Designs 概念:docs/content/en/concepts/logical/designs.md
- Components 概念:docs/content/en/concepts/logical/components.md
- Catalog 架构文档:docs/content/en/concepts/architecture/catalog/index.md
mesheryctl design import命令参考:docs/content/en/reference/references/mesheryctl/design/import.md
【免费下载链接】mesheryMeshery, the cloud native manager项目地址: https://gitcode.com/GitHub_Trending/me/meshery
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考