最近在排查一个 OBServer 非预期报错(ERROR 4016 ),参考了社区文档中关于捞取日志的指引:在同一个 session 中紧接着报错 SQL 执行 select last_trace_id() 来获取 trace_id-10。实际测试发现,如果报错 SQL 执行后稍微执行了其他语句,或者重连了 session,last_trace_id() 返回的值似乎就失效了,无法在日志中 grep 到有效记录。
想请教一下:
-
last_trace_id()的有效期是仅限当前 session 的“最近一次”语句吗?跨语句或跨 session 后是否必然失效? - 文档中提到的备用方案是
grep "ret=-errno"捞日志-10。在分布式场景下,如果错误涉及多个 OBServer 节点,这个方式是否仍然够用?有没有更推荐的 trace 串联方式? - 有没有办法在报错发生的瞬间“主动”捕获 trace_id,而不是事后去日志里翻?