← 返回文章列表
产品动态 4 分钟阅读 炬鲸团队

类 SQL 日志检索 + Trace 一键关联:炬鲸 OBSERVE 的排查体验

类 SQL 检索让日志查询回到直觉,配合 trace 一键关联,从一条报错日志定位到完整调用链,排查效率成倍提升。

为什么日志查询要回到 SQL

日志平台最劝退人的地方,往往是查询语法。Elasticsearch 的 Lucene 语法、各家自研的 DSL,写错一个括号就查不出结果,新同事上手要啃半天文档。炬鲸 OBSERVE 把日志检索设计成类 SQL:会写 SELECT ... WHERE ... 就能查。

SELECT service, COUNT(*) AS cnt
FROM logs
WHERE level = 'ERROR' AND ts > now() - 1h
GROUP BY service
ORDER BY cnt DESC

没有 Lucene 语法,没有字段类型的前置声明,开发、测试、运维都能直接上手。这不是降级,而是把查询能力还给使用者:日志查询的本质就是按条件过滤、聚合、排序,SQL 天然擅长这件事。对技术负责人来说,选型时可以把「查询门槛」作为硬指标——团队里最不熟悉日志平台的人,能否在十分钟内写出第一条可用查询。如果答案是否,那个平台迟早会变成单点瓶颈。

从一条报错日志定位到完整调用链

线上排查最常见的路径是:先在日志里捞到一条报错,再想「这条日志是哪个请求产生的、上游是谁、下游调了谁」。传统做法要手动 grep request_id,再逐层翻日志,费时费力,还容易在跳转之间丢上下文。

炬鲸 OBSERVE 在每条日志里自动注入 trace_id 和 span_id。在日志详情页点一下「查看链路」,直接跳到这条日志对应的完整调用链:每个 span 的耗时、状态、上下游服务、关联日志全部展开。一条报错日志 → 整条链路 → 具体到某个方法的慢调用,三秒内串起来。

反向的跳转同样重要:当你盯着一条有十几个 span 的链路,发现某个 span 延迟突增时,需要知道它当时在干什么——也就是拉出它产生的日志。慢 span 自带日志,点开就能看到它执行的 SQL、发起的下游调用、抛出的堆栈。这个「日志 ↔ 链路」双向跳转是缩短 MTTR 的关键,缺了任何一边,排查就得退回人肉 grep。

NL2Query:不会写查询也能查

对偶尔查日志的产品经理或值班同学,类 SQL 仍有一定门槛。炬鲸 OBSERVE 提供了 NL2Query:用自然语言描述问题,系统翻译成查询语句。

输入「最近一小时订单服务的错误日志,按时间倒序」,系统自动生成上面的 SQL 并返回结果。更重要的是,生成的 SQL 会展示出来,用户可以照着改,边用边学,逐渐过渡到手写查询。这在值班场景里尤其有用:凌晨两点接告警的人往往不是最熟悉查询的人,NL2Query 能让他们先看到问题,再慢慢学会怎么查。

一个细节值得留意:NL2Query 在不确定理解是否正确时,会追问澄清而不是硬猜。凌晨两点返回一个「自信满满」的错误查询,比多问一句更耽误事。

指标、日志、链路三合一的收益

三套系统并存时,出问题要在三个页面来回切,筛选条件要重设三遍,上下文很容易丢。炬鲸 OBSERVE 把三者放进同一个数据模型:看监控指标发现错误率飙升,点一下就能下钻到对应的错误日志,再从日志关联到 trace,全程不切换工具、不重新筛选。

这套设计给团队的收益很直接:MTTR 缩短,值班轮换时上下文传递更顺畅,新成员也不需要先学三个系统再上手。对中小企业来说,这就是把过去只有大厂才有的排查体验,做成了开箱即用的产品能力。