这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
从文本到结构化
原始日志长什么样
采集到日志之后,下一步是让日志变得可理解。原始日志往往是这样的:
2026-03-31 02:14:08 ERROR pay callback failed order=882317 cost=2300ms err=timeout
人能读懂,但系统很难稳定地统计和关联:
- 「pay callback failed」是自由文本,没法直接过滤。
order=882317、cost=2300ms埋在字符串里,没法聚合。- 不同团队写的错误信息五花八门,没法统一。
解析的目标
日志解析的目标是把它变成结构化事件:
{
"time": "2026-03-31 02:14:08",
"level": "ERROR",
"service": "payment-service",
"event": "pay_callback_failed",
"order_id": "882317",
"cost_ms": 2300,
"err": "timeout",
"message": "pay callback failed"
}
level、service可以过滤。order_id、cost_ms可以聚合和排序。trace_id可以关联上下游。
结构化后能做什么
按 level 过滤 -> 只看 ERROR
按 service 过滤 -> 只看支付服务
按 order_id 聚合 -> 某个订单的所有日志
按 cost_ms 排序 -> 找出最慢的请求
按 trace_id 关联 -> 还原一次完整请求
一句话
日志解析的本质:把自由文本变成字段。人能读懂不代表系统能处理,结构化是查询、聚合、关联的前提。
发现内容有问题?
告诉我们哪里需要改进。
