首页/新闻资讯/正文详情

HyperDX 架构深度解析:从 OpenTelemetry 采集到 ClickHouse 查询的完整体系

发布时间:2026/9/24 15:01:10 来源:云帆数科 栏目:资讯中心
HyperDX 架构深度解析:从 OpenTelemetry 采集到 ClickHouse 查询的完整体系
可观测性云原生运维【免费下载链接】hyperdxResolve production issues, fast. An open source observability platform unifying session replays, logs, metrics, traces and errors powered by ClickHouse and OpenTelemetry.项目地址https://gitcode.com/gh_mirrors/hy/hyperdx点击查看免费下载导读本文基于 HyperDX 官方架构文档agent_docs/architecture.md系统拆解这套开源可观测性平台的端到端体系从 OpenTelemetry Collector 的数据采集到 ClickHouse 的主数据存储、MongoDB 的元数据管理再到 API 包中一包多应用的后端形态内部 API、外部 API v2、MCP 服务器、OpAMP 服务器与后台任务。阅读本文后你将掌握 HyperDX 的核心服务划分、数据流动链路、多租户模型设计以及如何通过源码路径定位每个组件的实现细节为二次开发与自托管部署建立完整的架构认知。核心服务总览五大组件构成平台骨架HyperDX 由五个核心服务协同工作覆盖从数据采集、存储到用户交互的完整链路组件位置职责HyperDX UIpackages/appNext.js 前端为用户提供查询、仪表盘、告警等交互界面HyperDX APIpackages/apiNode.js/Express 后端处理查询请求与业务逻辑OpenTelemetry Collectordocker/otel-collector接收并处理遥测数据logs、metrics、traces、sessionsClickHousedocker/clickhouse所有遥测数据的主存储logs、metrics、tracesMongoDBpackages/api/migrations/mongo元数据存储用户、仪表盘、告警、已保存搜索这种ClickHouse 存遥测、MongoDB 存元数据的双存储设计是 HyperDX 架构的基石高基数、时间序列型遥测数据交给列式存储 ClickHouse 高效聚合而低频访问的关系型元数据则放在文档型数据库 MongoDB 中便于灵活的 schema 演进。从技术栈文档agent_docs/tech_stack.md可以看到各层的具体选型前端使用 Next.js 16 TypeScript Mantine UI Jotai/TanStack Query后端使用 Node.js 22 Express Mongoose Passport.js Zod 校验API 自身还通过hyperdx/node-opentelemetry实现自埋点观测。端到端数据流从业务应用到可观测面板HyperDX 的数据流是一条清晰的单向管道见 agent_docs/architecture.md应用发送遥测数据业务应用通过 OpenTelemetry SDK/Agent 将 logs、metrics、traces 发送给 OTel CollectorOTLP 协议gRPC:4317/ HTTP:4318Collector 处理并转发OTel Collector 完成接收、处理路由、批处理等后将数据写入 ClickHouse用户经 UI 查询用户在 UI 上的查询请求打到 APIAPI 再查询 ClickHouse 取回数据配置/元数据存 MongoDB团队、用户、仪表盘、告警等配置信息持久化在 MongoDB 中。一个值得关注的细节是Collector 的处理器processors:列表被刻意放在引导配置 docker/otel-collector/config.yaml 中声明而非由 OpAMP 远程配置下发。这一设计见opampController.ts中的注释与 PR #2351保证了用户可以通过CUSTOM_OTELCOL_CONFIG_FILE自定义处理器例如替换memory_limiter的limit_percentage与limit_mib避免远程配置覆盖本地定制。MongoDB 元数据层团队级多租户与模型规范所有 MongoDB 模型都遵循一致的模式约定packages/api/src/models团队级多租户大多数实体归属于某个team数据访问天然按团队隔离ObjectId 引用相关实体之间使用 ObjectId 建立引用关系便于 Mongoose populate审计时间戳模型普遍包含创建/更新时间戳Zod schema 校验使用 Zod 进行入参校验前后端共享校验逻辑。关键模型一览全部位于 packages/api/src/models模型文件说明Teamteam.ts多租户组织单元承载 apiKey、collectorAuthenticationEnforced等关键字段Useruser.ts团队成员包含认证信息Passport local strategySourcesource.tsClickHouse 数据源配置定义遥测 schema 映射Connectionconnection.ts数据库连接设置SavedSearchsavedSearch.ts已保存的查询与过滤器Dashboarddashboard.ts自定义仪表盘配置Alertalert.ts带阈值的监控告警Schema 变更通过版本化迁移管理见 packages/api/migrations/mongoMongo 迁移与 packages/api/migrations/chClickHouse 迁移。前端架构Pages Components Hooks 分层前端packages/app遵循清晰的目录分层Pages页面层packages/app/pages —— Next.js 路由页面包括搜索search/index.tsx、仪表盘dashboards/index.tsx、告警alerts/index.tsx、trace 详情trace/[traceId].tsx、sessions 回放sessions.tsx等Components组件层packages/app/src/components —— 可复用组件例如图表组件DBTimeChart.tsx、DBTableChart.tsx、搜索过滤器DBSearchPageFilters.tsx、侧边面板DBRowSidePanel.tsx等API 通信自定义 hooks 封装 TanStack Query例如 useChartConfig.tsx、useDashboardFilters.tsx状态管理全局客户端状态用 Jotai服务端状态用 TanStack Query过滤器等 URL 参数直接由路由承载详见 agent_docs/tech_stack.md。图表可视化采用 Recharts 与 uPlotSQL/JSON 编辑器使用 CodeMirror图标统一使用tabler/icons-react。后端架构API 包中的一包多应用packages/api并不仅仅是一个 Express 服务而是承载了多个各具路由、认证与限流策略的独立应用。这一点在 api-app.ts 中体现得淋漓尽致主应用挂载内部路由session 认证、/mcpAccess Key 认证、/api/v2外部 API与 OpAMP 子应用等。整体目录结构分为routers路由、controllers业务逻辑、middleware认证/CORS/错误处理、services可复用业务逻辑四层。内部 API面向 Web 前端的会话认证接口内部 APIpackages/api/src/routers/api是 Web 前端packages/app消费的主 API采用Passport.js 会话认证local strategy express-sessionsession 存储于 MongoDB见 api-app.ts 中 MongoStore 配置cookie 有效期 30 天。标准分层结构Routerssrc/routers/api/ —— 领域路由包括alerts.ts、dashboards.ts、sources.ts、savedSearch.ts、webhooks.ts、clickhouseProxy.ts、prometheus.ts、iac.ts等Controllerssrc/controllers/ —— 业务逻辑与路由解耦如alerts.ts、dashboard.ts、sources.ts、timeseriesEngine.tsMiddlewaresrc/middleware/ —— 认证auth.ts、CORScors.ts、错误处理error.ts、校验validation.tsServicessrc/tasks/ 与 OpAMP 下的agentService.ts等提供可复用业务逻辑。从 api-app.ts 可以看到内部路由的挂载方式/ai、/alerts、/dashboards、/me、/team、/webhooks、/connections、/sources、/saved-search、/favorites、/pinned-filters、/clickhouse-proxy、/iac均通过isUserAuthenticated中间件保护PromQL 路由/v1/prometheus仅在IS_PROMQL_ENABLED时挂载。外部 API v2基于 Access Key 的公共 REST API外部 API v2src/routers/external-api/v2面向程序化访问认证方式与内部 API 完全不同使用Personal API Access KeyvalidateUserAccessKey中间件并限流至100 req/min每 API Key 每分钟 100 次窗口 60 秒见 index.ts 中rateLimiter配置启用标准RateLimit-*响应头。路由资源alerts.ts、charts.ts、dashboards.ts、sources.ts、webhooks.ts以及connections.ts、savedSearches.ts、search.ts、team.ts。OpenAPI 规范规范文件为 packages/api/openapi.json通过yarn docgen自动生成并用yarn lint:openapiSpectral校验。开发规范要求新增或修改外部 API 端点后必须运行yarn docgen重新生成 OpenAPI 规范再运行yarn lint:openapi校验scripts/ci/check-openapi-sync.sh 由make ci-lint及 CI 调用若提交的规范文件过期则 CI 失败swaggerOptionssrc/utils/swagger.ts也是 docgen 的输入规范文件被列入.prettierignore因为其格式由 docgen 独占管理测试位于 src/routers/external-api/tests如v2.int.test.ts、alerts.int.test.ts等集成测试。Swagger UI 仅在非生产环境且ENABLE_SWAGGER true时启用路径为/api/v2/docs。MCP 服务器让 AI 助手直接查询可观测性数据MCPModel Context Protocol。关键实现入口src/mcp/app.tsExpress 中间件与 src/mcp/mcpServer.ts服务器工厂createServer(context)无状态传输设计每次 POST 创建全新的 server/transportsessionIdGenerator: undefined因此不提供 GETSSE 流与 DELETE会话终止按 Streamable HTTP 规范返回 405SDK 客户端会将 405 视为未提供、继续OPTIONS 交由全局 CORS 中间件处理见 app.ts 中的 issue #2686 注释上下文注入从req.user提取teamId、userId构造McpContext并通过setTraceAttributes写入mcp.team.id、mcp.user.idspan 属性实现租户隔离与可观测工具集tools/ 下按领域划分 ——alerts/、dashboards/、query/、savedSearches/、sources/、trace/每个目录包含工具定义与处理器提示词prompts/dashboards/ —— 为 AI 助手提供上下文提示测试src/mcp/tests覆盖 alerts、dashboards、query、savedSearches、tracing调试yarn dev:mcp启动 MCP Inspector 进行交互式测试。从 mcpServer.ts 可以看到服务器内置了工具选择策略指令SERVER_INSTRUCTIONS默认优先使用 builder 查询工具更可靠、输出结构化图表数据原始 SQLclickstack_sql是最后手段推荐发现流程为clickstack_list_sources → clickstack_describe_source → query。用户侧接入配置详见根目录 MCP.md支持 Claude Code、Codex CLI、OpenCode、Cursor 等客户端端点均为your-hyperdx-url/api/mcp认证头为Authorization: Bearer your-personal-access-key。OpAMP 服务器为受管 Collector 下发远程配置OpAMPOpen Agent Management Protocol服务器以 HTTP 协议为受监督的 OpenTelemetry Collector 提供配置。监督器supervisor定期向/v1/opamp上报状态服务器在需要时返回更新的配置。关键实现入口src/opamp/app.ts —— Express 子应用使用express.raw({ type: application/x-protobuf, limit: 10mb })解析 protobuf 请求体额外提供/health存活探针与/ready就绪探针依赖 MongoDB 连接状态避免 Mongo 未就绪时 500 导致 Collector 崩溃循环见 issue #2966控制器controllers/opampController.ts —— 配置推导逻辑核心buildOtelCollectorConfig(teams)基于团队文档与 ingestion API key 动态生成 Collector 配置服务services/agentService.ts —— Agent 管理processAgentStatus、agentAcceptsRemoteConfig模型models/agent.ts —— Agent 状态持久化Protoproto/ —— OpAMP 与 anyvalue 的 Protocol Buffer 定义。配置推导机制值得深入理解buildOtelCollectorConfig根据teams[0]?.collectorAuthenticationEnforced决定是否启用bearertokenauth扩展对 OTLP receiver 做认证bearerTokenVariants会同时接受裸 token 与Bearer/bearer/BEARER前缀形式对应 RFC 6750 客户端习惯。生成配置中的典型管线包括otlp/hyperdxreceivergRPC0.0.0.0:4317、HTTP0.0.0.0:4318、clickhouse/clickhouse/rrwebexporter端点、数据库、TTL 等均通过${env:...}环境变量注入如CLICKHOUSE_ENDPOINT、HYPERDX_OTEL_EXPORTER_TABLES_TTL默认 TTL 720h、超时 5s、routing/logsconnector 将 rrweb 会话事件路由到独立表hyperdx_sessions。此外还可选启用datadogreceiverENABLE_DATADOG_RECEIVER开关监听:8126与 PromQL 的prometheusremotewriteexporterIS_PROMQL_ENABLED开关。OpAMP 控制器还以低基数outcome枚举processed / unsupported_media_type / error埋点hyperdx.opamp.messages、hyperdx.opamp.remote_configs计数器并将 Agent 的instanceUid、健康状态、能力标志、远程配置哈希等作为 span 属性写入便于单 trace 内切片定位某个 Agent。后台任务脱离请求/响应周期的 Cron 驱动任务后台任务src/tasks/运行在请求/响应周期之外。开发环境通过yarn dev-task运行生产环境由外部触发如 Cron。任务清单任务说明checkAlerts/告警评估开发环境每分钟运行一次provisionDashboards/从配置文件预置仪表盘usageStats.ts用量统计采集由USAGE_STATS_ENABLED控制见 api-app.tspingPongTask.ts健康检查任务metrics.ts任务执行指标耗时、成功/失败计数器注意后台任务不会在 Vercel preview 部署中运行详见 agent_docs/development.md。数据与查询模式ClickHouse 集成查询构建使用 packages/common-utils共享 TypeScript 工具包安全构建查询其中包含查询解析queryParser.ts、SQL 格式化sqlFormatter.ts、宏macros.ts等工具避免手工拼接 SQL 的注入风险Schema 灵活性通过Source配置支持多种遥测 schema 映射logs、traces、metrics、sessions、promql 等ClickHouse schema 由 docker/clickhouse 下的迁移脚本docker/otel-collector/schema/seed初始化例如00002_otel_logs.sql、00003_otel_metrics.sql、00004_hyperdx_sessions.sql、00005_otel_traces.sql以及对应的 rollup 表。MongoDB 模式多租户所有查询均按 team 上下文过滤validateUserAccessKey、isUserAuthenticated中间件与各模型中的team字段双重保障关系使用 ObjectId 引用 适当 populate索引为查询性能设置战略性索引迁移版本化迁移管理 schema 变更见 packages/api/migrations/mongo。安全要求不可妥协的基线架构文档明确列出的安全基线agent_docs/architecture.md服务端校验始终在后端进行校验与消毒Zod schemas 在 packages/api/src/utils/zod.ts 等统一封装外部请求体均经校验团队隔离所有数据访问必须按 team 上下文过滤防止跨租户越权API 认证受保护路由必须使用认证中间件内部 API 用isUserAuthenticated会话认证外部 API 与 MCP 用validateUserAccessKeyAccess Key 认证密钥管理绝不提交密钥到仓库使用.env文件如EXPRESS_SESSION_SECRET、MONGO_URI、CLICKHOUSE_USER/PASSWORD等配置项均通过环境变量注入。这些要求在实际代码中得到严格落实外部 API v2 与 MCP 在 index.ts 与 app.ts 中均在路由层统一挂载认证中间件与限流器OpAMP 端点的认证则通过为 OTLP receiver 附加bearertokenauth扩展完成且仅在所有团队存在 apiKey 且collectorAuthenticationEnforced为真时才启用。小结一张架构地图总结 HyperDX 的架构要点可以用一句话概括OpenTelemetry 负责采集ClickHouse 负责遥测存储与聚合MongoDB 负责元数据与多租户Express API 包以一包多应用形态对外提供会话式内部 API、Access Key 式外部 API、面向 AI 的 MCP 端点、面向受管 Collector 的 OpAMP 端点以及 Cron 驱动的后台任务。理解这张地图后无论是定位某个查询链路UI → API → ClickHouse、排查告警评估流程checkAlerts任务还是为 AI 助手接入数据查询MCP你都能沿着本文给出的源码路径快速直达实现核心。进一步深入可参考仓库根目录的 CLAUDE.md、LOCAL.md本地开发与 DEPLOY.md自托管部署以及架构配套文档 agent_docs/tech_stack.md、agent_docs/development.md 与 agent_docs/observability.md。赞分享可观测性云原生运维【免费下载链接】hyperdxResolve production issues, fast. An open source observability platform unifying session replays, logs, metrics, traces and errors powered by ClickHouse and OpenTelemetry.项目地址https://gitcode.com/gh_mirrors/hy/hyperdx点击查看免费下载相关推荐AgentOps v4 API 迁移指南从 Supabase 到 ClickHouse 的 OpenTelemetry 查询架构AgentOps v4 API 迁移指南从 Supabase 到 ClickHouse 的 OpenTelemetry 查询架构 AgentOps 正在将其数人工智能大模型LLMOps可观测性AI 评测Agent TracesParca架构深度解析从数据采集到存储查询的全链路设计Parca架构深度解析从数据采集到存储查询的全链路设计 Parca是一个开源的持续性能分析工具专门用于分析CPU和内存使用情况能够精确到代码行号并在时间维可观测性性能分析基于 Meshery Catalog 的 ClickHouse OpenTelemetry HyperDX 可观测性架构设计解析基于 Meshery Catalog 的 ClickHouse OpenTelemetry HyperDX 可观测性架构设计解析 本篇技术指南围绕 Me云原生微服务运维DevOps上一篇Gitalk生态系统周边工具与插件推荐下一篇Nancy框架终极指南10个让.NET Web开发更简单的革命性技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

天天 AI Coding 的你,出去面试的竞争力是什么?
天天 AI Coding 的你,出去面试的竞争力是什么?

1. 引言 这两年 AI 编程工具铺天盖地,Cursor、Copilot、通义灵码、Claude Code…… 几乎每个开发者都在用。于是面试官开始问一个很扎心的问题:“既然 AI 都能写代码了,天天用 AI Coding 的你,凭什么比不用 AI 的人更有竞争力&… · 2026/9/24 15:00:39

深圳效果好的背单词小程序公司推荐与挑选标准
深圳效果好的背单词小程序公司推荐与挑选标准

判断深圳效果好的背单词小程序公司推荐是否值得参考,先看三条可验证的硬标准:词库是否分级、复习是否按记忆规律自动排期、换设备后学习进度能否同步。这也是回答广东效果好的背单词小程序公司哪家靠谱的通用思路——不看宣传语,只看机制。 一… · 2026/9/24 15:00:33

在 Hive Multi-Agent 中集成 Zendesk:基于 MCP 的工单管理与搜索实战指南
在 Hive Multi-Agent 中集成 Zendesk:基于 MCP 的工单管理与搜索实战指南

人工智能AI Agent多智能体MCP 服务工具调用浏览器控制 【免费下载链接】hive Multi-Agent Harness for Production AI 项目地址: https://gitcode.com/gh_mirrors/hive48/hive 点击查看 免费下载 Zendesk Tool 是 Hive 仓库中 Aden Tools 套件的一员,它… · 2026/9/24 15:00:27

奥赛一本通 1467 Radio Transmission
奥赛一本通 1467 Radio Transmission

1467 Radio Transmission 题目大意 给定一个字符串,求一个长度尽可能短的串,使得原先的串是这个短串重复若干次之后的子串。 知识要点 KMP 解题思路 首先,求解的这个短串一定可以是原串的前缀,如果不是前缀的话,将这个… · 2026/9/24 15:31:29

STM32无DAC怎么办?用PWM加RC滤波实现低成本模拟输出
STM32无DAC怎么办?用PWM加RC滤波实现低成本模拟输出

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 15:31:29

pcapng 导入 Wireshark 全是密文怎么办?Traceeagle与 Wireshark 联动的三种方式
pcapng 导入 Wireshark 全是密文怎么办?Traceeagle与 Wireshark 联动的三种方式

把抓到的流量导出成 pcapng 发给同事,他 Wireshark 一打开:全是密文。这个场面,抓过包的人多少都遇到过——文件没问题、Wireshark 也没问题,缺的是解密密钥:导出的文件里没带上它,Wireshark 拿着一堆密文包… · 2026/9/24 15:31:29

CCX源码架构指南:Go+Vue3核心模块职责与请求生命周期全链路详解
CCX源码架构指南:Go+Vue3核心模块职责与请求生命周期全链路详解

CCX源码架构指南:GoVue3核心模块职责与请求生命周期全链路详解 【免费下载链接】ccx Claude / Codex / Gemini API Proxy - CCX 项目地址: https://gitcode.com/gh_mirrors/cc/ccx CCX 是一款开源的 Claude / Codex / Gemini API 代理与协议转换网关&#xf… · 2026/9/24 15:31:16

GTK4 截图工具
GTK4 截图工具

0 前言 GTK4本身不提供屏幕捕获API:截图走哪条路,取决于会话跑在X11还是Wayland——前者没有安全隔离,Xlib直抓根窗口即可;后者出于安全考虑把像素锁在合成器里,应用只能由xdg-desktop-portal代劳。GTK4的价值在捕获前后:用GdkPixbuf承载与处理像素,用GskRenderer把自家… · 2026/9/24 15:31:10

Apache Thrift 在 CentOS 上的源码编译安装完整指南
Apache Thrift 在 CentOS 上的源码编译安装完整指南

Apache Thrift 在 CentOS 上的源码编译安装完整指南 【免费下载链接】thrift Apache Thrift 项目地址: https://gitcode.com/gh_mirrors/thrift2/thrift 导读 本文基于仓库中的官方安装文档 doc/install/centos.md,系统梳理在 CentOS 6.5 最小化安装环境下从… · 2026/9/24 15:31:03

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码