- 可观测性
- 后端
【免费下载链接】highlight
highlight.io: The open source, full-stack monitoring platform. Error monitoring, session replay, logging, distributed tracing, and more.
导读
本文以 highlight.io 开源仓库中 docs-content/general/changelog 目录下的官方 Changelog 系列(第 12 期至第 29 期)为骨架,完整还原 highlight.io 从开源发布、Logging 产品从 Alpha 走向成熟,到 Tracing / Grafana / ClickHouse 检索演进这一整条产品与技术路线。你将看到每个版本中具体落地了什么能力、对应的仓库实现与配置在哪里、以及这些功能如何串联 Session Replay、Error Monitoring、Logging、Tracing 四大模块。适合正在使用或计划自托管 highlight.io、以及关注全栈可观测性平台架构演进的开发者阅读。
Changelog 是什么:一个持续演进的可观测性平台的时间线
Changelog 总览页 的核心定位很简单:"Stay up to date with what we work on week over week"——以周为单位记录 highlight.io 的功能迭代。它通过 DocsCardGroup 的形式汇总了从第 12 期到第 29 期共 18 个版本的更新卡片,每张卡片用一句话概括该期重点:
| 版本 | 核心主题 |
|---|---|
| Changelog 29 (4/2) | Group matching、Logs drawer、Duration prefixes、自托管改进 |
| Changelog 28 (3/6) | Related resources、搜索查询演进、日志关联回 traces |
| Changelog 27 (12/22) | Grafana 支持、阶梯定价、Tracing flame graph、服务端环境数据 |
| Changelog 26 (11/08) | 客户端网络请求脱敏、Tracing beta 改进、Next.js tracing、Java 11 支持 |
| Changelog 25 (10/03) | GitHub 栈追踪设置、Next.js Edge runtime、大体积 session 导出 |
| Changelog 24 (09/11) | GitHub 增强栈追踪、会话搜索迁移 ClickHouse、Algora 开源赏金、错误标签嵌入 |
| Changelog 23 (08/22) | 错误列表视觉指示、新会话轮询、Pino.js 支持、Alerts 重新设计 |
| Changelog 22 (08/07) | Remix SDK、Render.com Log Stream、Go/Python SDK 更新 |
| Changelog 21 (06/21) | GitHub Auth、邀请检测、AllContributor App |
| Changelog 20 (06/06) | 用户管理、新日志连接器(Kinesis、Fluent Forward、Filesystem、Loguru) |
| Changelog 19 (05/22) | Demo 项目、评论 UI 改版、Winston transport、Canvas 录制增强 |
| Changelog 18 (04/26) | Error boundary 改进、GitHub ticket 集成、hobby 部署文档 |
| Changelog 17 (04/07) | 新 Setup 页面、会话缓存开关、告警不再强制依赖 Slack |
| Changelog 16 (03/19) | Logging 进入 Alpha、Nest.js 支持 |
| Changelog 15 (03/11) | Devtools "goto" 按钮、Slack 告警链接到具体实例、产品落地页 |
| Changelog 14 (03/03) | 新注册流程、回放抖动修复、Python 指南新首页 |
| Changelog 13 (02/24) | CommandBar、HackerNews 发布、SDK 贡献文档、DocSearch |
| Changelog 12 (02/17) | 开源发布、错误状态即时更新、React Router 升级、Python/Cloudflare SDK |
从这张时间线可以清晰看到 highlight.io 的三个演进阶段:第 12–15 期为开源化与基础体验打磨期,第 16–23 期以 Logging 产品从 Alpha 走向生态扩展为核心,第 24–29 期则是错误检索、Tracing 与数据基础设施(ClickHouse、Grafana、LLM 嵌入)的深化期。下文按这四个产品主题展开。
一、开源与体验基础:第 12–15 期的奠基工作
1.1 开源发布与社区运营(Changelog 12、13)
Changelog 12(02/17)是里程碑节点:highlight.io 正式开源,源码托管在 GitHub(当前仓库即其镜像,根目录含 README.md、go.work 与 package.json 等工程文件)。同期还发布了若干 Python SDK(Flask、Django、Azure Functions)以及 Cloudflare 集成。
紧接着的 Changelog 13(02/24)做了三件社区向的事:
- CommandBar:在 Dashboard 中按
Cmd + K即可搜索 sessions、errors 等字段,配合 Algolia 驱动的 DocSearch,把"键盘优先"的检索体验带入产品与文档。 - SDK 贡献指引:由于整个 SDK 体系基于 OpenTelemetry,官方认为"为你的框架添加一个 SDK 并不太难",并开放了协作通道(对应文档目录见 docs-content/general/4_company)。
- HackerNews 发布:作为项目早期增长事件被记录在案(属于项目历史陈述,非本仓库可验证的性能指标)。
1.2 前端体验与注册流程(Changelog 12、14、15)
- 错误状态即时更新(Changelog 12):使用 Apollo 的
optimisticResponses机制,修改错误状态后 UI 立即反馈,无需等待网络往返。前端 GraphQL 层对应 frontend/src/graph 目录,graphql 配置见 frontend/codegen.yml。 - 路由性能(Changelog 12):升级 React Router,切换 errors/sessions 页面更流畅。
- 新注册流程(Changelog 14):发布了全新的 signup 流程。
- 回放抖动修复(Changelog 14、15):针对 Session Replay 时间轴上的 inactive 时间段与 UI 重复重置问题做了多轮修复,并修复了多会话间时间缓存的问题。
- Devtools "goto" 按钮(Changelog 15):在 devtools 面板中,错误、网络请求、日志条目都支持一键跳转到对应位置,减少排查时的导航成本。
- Slack 告警链接到具体实例(Changelog 15):此前 Slack 告警只链接到错误组(error group),现在改为直接链接到具体出错实例,点击即可进入对应会话。
二、Logging 产品的从 0 到 1:第 16–23 期的生态扩张
2.1 Logging Alpha 与接入生态(Changelog 16、19、20、23)
Changelog 16(03/19)宣布Logging 进入 Alpha,可访问app.highlight.io/logs体验。此后每一期都在扩充接入方式:
Nest.js(Changelog 16):新增 Nest.js 指南(对应 sdk/highlight-nest)。
Winston transport(Changelog 19):发布 Winston.js 的 Highlight transport——照常使用 Winston 打日志,Highlight 自动捕获并展示。
四个新日志连接器(Changelog 20):
- AWS Kinesis / Firehose:用于从基础设施或其他服务接入日志(后端实现见 backend/integrations/cloudflare 之外的 backend/http/firehose.go);
- Fluent Forward:兼容 Fluent Forward 协议的系统(AWS 等)可以直接对接;
- Filesystem:从文件系统读取日志(对应 Docker 等场景);
- Loguru:Python 生态的日志库接入。
这些连接器让 highlight.io 能轻松对接 AWS、Docker、自建 VM 与 Python 应用。
Pino.js(Changelog 23):加入 Pino.js 支持(sdk/pino),Node.js 生态又添一员。
从仓库结构可以印证这套"多接入方式"的设计:日志统一进入 backend/clickhouse 存储层,由 backend/otel 解析 OpenTelemetry 数据,而 e2e/python 目录中则提供了 kafka、openai、azure、gcp 等多种 Python 接入的端到端示例。
2.2 服务端环境数据与可搜索性(Changelog 22、27)
- Service Name / Version(Changelog 22):Python 与 Go SDK 新增
service_name与service_version参数,让日志"更容易被搜索"。Go SDK 的入口配置见 sdk/highlight-go。 - 服务端环境数据自动上报(Changelog 27):服务端 SDK 可以自动把运行环境信息导出到 Highlight 报告,无需手动配置,为服务端错误提供更多上下文。
2.3 告警与提示体验(Changelog 17、23)
- 告警不再强制依赖 Slack(Changelog 17):修复了没有 Slack 频道就难以配置告警的问题。
- Alerts 重新设计(Changelog 23):告警表单进入系列改版流程。告警的触发评估逻辑在后端有完整实现,可参考 backend/alerts(含 alerts.go、sessionalerts.go、logalerts.go)以及 backend/temp-alerts/temp-alerts.go。
三、错误检索与可观测性深化:第 24–29 期的数据基础设施升级
3.1 会话搜索迁移 ClickHouse(Changelog 24)
会话搜索推出全新 UI 并完全迁移到 ClickHouse支撑,带来更快的搜索体验与搜索键的实时预览。这在仓库中有完整印证:
- 存储层:会话数据的 ClickHouse 读写集中在 backend/clickhouse/sessions.go、backend/clickhouse/sessions_test.go;
- 查询构建:通用查询逻辑见 backend/clickhouse/querybuilder.go;
- 检索语法:基于 ANTLR 的 antlr/SearchGrammar.g4 定义搜索文法,对应解析实现在 backend/queryparser 与 backend/parser。
3.2 搜索查询的语法演进(Changelog 28)
Changelog 28(3/6)对搜索做了四点细化,全部可以在 SearchGrammar.g4 中找到对应设计:
- 空白字符推入隐藏通道:不再在文法里跳过空白,而是把空白推入 lexer 的 hidden channel,这样仍然能从 lexer 拿到空白 token——这正是 ANTLR 中
-> channel(HIDDEN)的典型用法,为后续精确定位 token 位置服务; - 过滤器视觉标签逻辑更新:即使 parser 无法把表达式拆解成子表达式,也能在视觉上更好地处理分组;
- 错误提示移出输入框:搜索输入框上方展示错误信息;
- 错误 token 红色高亮:产生语法错误的 token 获得红色背景,便于用户快速定位。
同时仓库还提供了后端 DSL 解析器的 Go 实现 backend/parser/parser.go 及测试 backend/parser/parser_test.go,说明搜索语法在前端(交互)与后端(查询)是分层协作的。
3.3 日志与 Trace 的关联闭环(Changelog 28)
Highlight 的核心设计理念是"没有任何错误是孤立发生的"。Changelog 28 实现了日志关联回 traces:
- 每次 Highlight 在代码路径中实例化的新 span 都会携带
traceId; traceId用于把 span 与其生命周期内的所有活动(尤其是子 span 的创建)关联起来;- 现在日志也会被打上最近的
traceId标签,从而打通日志与追踪之间的关联。
这意味着在错误详情页你会看到Related session、Related logs、Related trace按钮(见下方图 1),从 Session Replay 页面也有对称的关联入口,Traces 页面则能链回相关会话。
3.4 Group Matching:从"最近的错误"到"最近的错误组"(Changelog 29)
Changelog 29(4/2)把错误匹配从最近的错误对象升级为最近的错误组:
- 之前:在单个项目可能多达数百万的错误对象中查找最近邻;
- 现在:先匹配到项目内约千级的错误组(error group),再把该组的 embedding 以加权平均的方式调整。
官方给出的动机是:此前使用的是近似最近邻索引(ANN),存在漏匹配的可能;改为错误组匹配不仅性能更好,匹配质量也可能更高。这属于用向量检索优化错误归组的探索,与 Changelog 24 中"为每个错误保存 LLM embedding"的实验一脉相承。
3.5 日志查看器嵌入资源面板与 Duration 前缀(Changelog 29)
- Logs drawer(Changelog 29):把日志查看器直接嵌入 Resources Panel,减少页面跳转、加速排查(见下方图 2)。这是对 Changelog 28"Related Resources"方向的延续——进一步强化 Session Replay、Errors、Logs、Traces 之间的"结缔组织"。
- Duration 前缀(Changelog 29):此前时长一律以纳秒表达过于繁琐,现在支持小时、分钟、秒、毫秒、微秒等多种前缀,查询体验更友好。
3.6 Grafana 集成与阶梯定价(Changelog 27)
- Grafana 支持(Changelog 27):可把前端与后端应用的指标可视化到 Grafana,统一查看网络请求延迟、应用错误与后端 traces,并支持聚合查询类型(p50、p99 等)。SDK 自动捕获的性能/可用性指标之外,也支持上报自定义指标与 traces。
- 阶梯定价(Changelog 27):按量付费改为 $50 基础档,随用量增大单价递减。定价模型对应后端 backend/pricing(pricing.go、billing.go)。
四、Session Replay 与追踪:持续打磨的两大能力线
4.1 Session Replay 的录制与回放改进(Changelog 14、17、19、22、23、25)
Session Replay 是 highlight.io 的招牌能力,相关改进贯穿始终:
- 回放流畅性:Changelog 14/15 修复回放抖动与多会话时间缓存问题;Changelog 23 为 devtools 中的长列表增加视觉指示器,随回放自动推进并提示条目在当前时间戳之前还是之后。
- 会话缓存开关(Changelog 17):对运行高内存栈(如 Canvas 录制、大量 DOM 变更)的用户,本地回放可能拖慢浏览器标签页,因此新增配置项可关闭 session caching。该能力说明见 docs-content/general/6_product-features/1_session-replay/player-session-caching.md。
- Canvas 录制(Changelog 19、22):Changelog 19 处理"单页多层叠 Canvas"的复杂场景,用 Canvas 快照 blob 视频并捕获多层 Canvas 帧;Changelog 22 修复了 WebGL 双缓冲导致的透明帧问题,并开放手动快照(manual snapshotting)。
- 仅记录含错误会话(Changelog 19):会话量巨大的用户可选择error-only recording——仅当会话抛出错误时才录制,否则该会话不进 Dashboard。
- 会话导出(Changelog 25):Canvas 渲染体积巨大,容易超出导出时限;现在把每个 Canvas chunk 渲染为独立的 mp4 文件,从而在 Lambda 超时限制内完成导出。对应实现见 backend/lambda-functions/sessionExport。
- Slack 嵌入(Changelog 21):在会话评论中 @ 某个 Slack 频道时,会截取该会话截图并嵌入 Slack 消息,为讨论补充上下文。
4.2 Tracing 的持续投入(Changelog 26、27)
- 网络请求内嵌 trace(Changelog 26):Session Replay 的网络请求中直接展示关联的 trace。
- 新的火焰图(Changelog 26):全新 flame graph 帮助可视化延迟来源;Changelog 27 又针对密集火焰图做了纵向展开优化,使其更易读。
- Next.js 内置 OTel 接入(Changelog 26):Highlight 可直接消费 Next.js 内置的 OpenTelemetry 插桩,在 Node runtime 免费获得 request/response spans,并分别提供 Page Router 与 App Router 的 walkthrough 及 Edge Runtime 支持说明。
4.3 客户端网络请求脱敏(Changelog 26)
支持在客户端对网络请求做脱敏处理,敏感数据在到达 Highlight 服务器之前就被清除。Web 客户端提供requestResponseSanitizer函数供自定义请求/响应清洗逻辑。这是数据隐私方向的典型能力,配合 docs-content/general/6_product-features 中关于隐私模式的文档一起使用效果最佳。
五、开发者与开源生态:SDK、自托管与社区机制
5.1 SDK 矩阵持续扩张
| 版本 | 新增 SDK / 能力 |
|---|---|
| Changelog 12 | Python Flask、Django、Azure Functions、Cloudflare |
| Changelog 13 | Go Fiber、Python FastAPI;新增 SDK 贡献指南 |
| Changelog 16 | Nest.js |
| Changelog 19 | Winston.js transport |
| Changelog 20 | AWS Kinesis、Fluent Forward、Filesystem、Loguru 连接器 |
| Changelog 21 | Python 3.11 支持 |
| Changelog 22 | Remix SDK(v0)、Python/Go 的 service_name 与 service_version |
| Changelog 23 | Pino.js |
| Changelog 25 | Next.js Edge runtime(Page + App Router) |
| Changelog 26 | Next.js 内置 OTel 消费、Java 11 |
对应到仓库,SDK 均位于 sdk 目录:如 sdk/highlight-go、sdk/highlight-py、sdk/highlight-nest、sdk/pino 等;端到端验证示例在 e2e 目录(如 e2e/nextjs、e2e/python),并遵循统一的 e2e/README.md。
5.2 自托管与 Hobby Deploy(Changelog 13、17、18、21、29)
自托管是 highlight.io 的持续投入方向:
- Hobby Deploy 文档上线(Changelog 18):区别于用于开发 highlight.io 自身的 dev deploy,hobby deploy 面向低流量自托管场景。
- 脱离 localhost 假设(Changelog 21):此前 hobby deploy 假定托管在
localhost;修复方式是向 Docker 容器传入REACT_APP_PRIVATE_GRAPH_URI与REACT_APP_PUBLIC_GRAPH_URI,从而可以在任意域名上运行。 - run-hobby.sh 简化(Changelog 29):不再需要单独执行
yarn。查看 docker/run-hobby.sh 可见其现在的流程:依次执行 docker/telemetry.sh、加载 docker/env.sh 环境变量、启动基础设施 docker/start-infra.sh、拉取镜像后以docker compose -f compose.hobby.yml up --detach backend frontend启动前后端。Changelog 29 同时提到基础设施故障自动重启与OTel 数据导出优化。 - 其余自托管相关脚本与编排文件见 docker 目录(compose.hobby.yml、compose.yml 等)。
5.3 用户管理与社区协作机制(Changelog 20、21、24)
- 用户管理(Changelog 20):支持创建、查看、删除团队邀请,并优化了邀请邮件文案。
- GitHub 登录(Changelog 21):通过 Firebase 认证与主邮箱关联,支持 GitHub 注册;同时新增邀请检测——用户在注册时自动检查是否有可加入的工作区邀请,避免"团队在用 Highlight 但新成员没走邀请链接"的尴尬。
- AllContributor App(Changelog 21):接入 AllContributor GitHub App 以自动记录贡献者。
- Algora 开源赏金(Changelog 24):在 Algora 平台发布小型 bug 赏金,由社区认领,核心团队得以聚焦高优先级工作。
- Demo 项目(Changelog 19):官方把自己的生产数据管道汇入 demo 项目,用户可以在上面体验各功能。
5.4 错误边界与 GitHub 增强栈追踪(Changelog 18、24、25)
- Error boundary 改进(Changelog 18):不再要求额外导入
.css文件,并做了大量设计更新。 - GitHub 增强栈追踪(Changelog 24):把 GitHub 集成扩展为栈追踪直链仓库文件——错误堆栈中的每一帧都能跳转到 GitHub 仓库中的对应源码文件;Changelog 25 进一步把该设置项直接放到栈追踪旁边,免去在设置页里翻找。仓库侧的实现与后端集成有关,可参考 backend/integrations/github 与错误栈处理工具 backend/stacktraces/stacktraces.go。
六、LLM 嵌入与错误检索实验(Changelog 24)
Changelog 24 记录了一个值得关注的前瞻性实验:错误标签嵌入(Error tag embeddings)。团队把 LLM embedding 应用到错误数据上,为每个错误保存 embedding 并使其可搜索——即用自然语言描述去检索/分类错误。这与第 29 期的 Group Matching(用错误组 embedding 的加权平均替代 ANN 最近邻)形成完整的技术闭环:先为错误生成语义向量,再以错误组为单位做匹配,既提升性能又规避 ANN 漏匹配问题。这也是 highlight.io 把 AI 能力引入可观测性数据检索的一条清晰的实验路径。
结语:一条值得借鉴的全栈可观测性演进路径
回看 Changelog 12 到 29,highlight.io 的演进逻辑清晰可循:
- 先开源、打基础:开源发布 + 注册/路由/回放等基础体验打磨,建立社区;
- 再扩生态、补全产品:以 OpenTelemetry 为底座快速铺开 SDK 与日志连接器,Logging 从 Alpha 走向多语言、多协议支持;
- 后做深数据、强化联动:会话搜索迁移 ClickHouse、搜索语法演进、日志与 trace 关联闭环、错误语义检索与 Group Matching、Grafana 集成,最终把 Session Replay、Errors、Logs、Traces 编织成一张互相跳转、可交叉检索的全栈可观测网络。
对于开发者而言,这套 Changelog 不只是产品新闻,更是一份可对照仓库源码逐项验证的演进档案:每个宣称的能力,几乎都能在 backend、frontend、sdk、docker 中找到对应实现与测试,值得在选型与自托管时反复查阅。
- 可观测性
- 后端
【免费下载链接】highlight
highlight.io: The open source, full-stack monitoring platform. Error monitoring, session replay, logging, distributed tracing, and more.
相关推荐
PyO3 Changelog 深度解读:从 0.1 到 0.29 的版本演进与技术路线图
PyO3 Changelog 深度解读:从 0.1 到 0.29 的版本演进与技术路线图 PyO3 是 Rust 语言与 CPython / PyPy / Gr
开发工具AureusERP CHANGELOG 深度解读:从 v1.0.0 到 v1.6.0 的开源 ERP 架构演进路线图
AureusERP CHANGELOG 深度解读:从 v1.0.0 到 v1.6.0 的开源 ERP 架构演进路线图 导读 本文以仓库根目录 CHANGELOG
企业应用后端Quickwit CHANGELOG 深度解读:从 0.1.0 到 0.9.0 的演进路线与技术里程碑
Quickwit CHANGELOG 深度解读:从 0.1.0 到 0.9.0 的演进路线与技术里程碑 本指南以 Quickwit 官方 CHANGELOG.m
搜索引擎可观测性日志分析链路追踪后端全文检索
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考