调用链路反推器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 的官方安装指南,将 @user_d41e2baa/log-topology-inferrer 安装到当前 AI 助手中。
技能介绍
解决什么问题
微服务的调用链路很少有一份准确的图。架构图要么不存在,要么在几轮迭代后过期,新服务接入时也没人更新。想确认 buy-console 到底调了哪些下游、哪个服务被大量上游依赖、哪条边错误率异常,通常只能翻日志、grep 关键字、凭记忆拼图。
调用链路反推器要解决的就是这件事:把散落在各节点日志里的调用痕迹(downstream=order-back、FeignClient iam、HTTP 请求行)反推成一张有向调用拓扑图(调用方 → 被调方),并为每条边标注调用量、错误率和平均延迟。
工作方式
它是一套方法论加两个零依赖 Python 脚本的组合,全程只读:
collect_logs.py:按清单log-sources.json把分散在多台节点、多种传输方式(local/ssh/kubectl/docker)上的日志,归集到本地按服务分目录;infer_topology.py:基于config.json的正则规则从日志行抽取 caller/callee,输出topology.json、topology.mmd、topology.dot和hotspots.csv四种产物。
关键步骤分五步:
- 盘点「服务 → 节点 → 日志路径」三要素,写成采集清单;
- 采集归集,目录名即服务名;
- 编写解析配置——这是质量关键,需要决定 caller 取自路径还是日志行、callee 用哪个正则、是否统计错误率与延迟、是否需要
aliases归一化和ignore_callees过滤噪声边; - 运行脚本生成拓扑,Mermaid 图中高错误率边自动标红;
- 解读产物:识别入边很多的单点、错误热点,还原接入层/业务层/外部依赖的分层。
拿到真实日志后,建议先贴 2–3 行原始样本再写正则,避免瞎猜格式。
边界与注意点
- 只读:采集用
cat、kubectl exec -- cat这类只读方式,绝不写入远端、重启服务或改配置; - 只产出拓扑与热点,不做根因下钻,错误边的具体原因需转交领域排查 skill;
- 拓扑质量的 80% 取决于解析配置写得对不对,日志格式变化(换框架、改输出格式)会导致边缺失,需要重新校对正则;
- 别名歧义是常见坑,
coupon可能实际是coupon-inner-api,确认后写进aliases重跑即可收敛。
使用场景
- 手里只有各服务散落的日志、没有可用架构图,要整理一份当前真实的服务依赖关系图替换过期文档。
- 线上刚发生一次故障,想从日志里统计各调用边的错误率,确认错误集中在哪条链路上。
- 团队没有现成调用关系图,新人入职培训前要从真实日志还原服务之间的上下游关系。
适合人员
- 后端工程师:负责一个微服务,想确认它实际调用了哪些下游、哪些服务在依赖自己,避免凭记忆维护链路关系。
- SRE / 稳定性负责人:故障复盘时要从日志核对是否存在被大量服务依赖的单点,评估故障爆炸半径。
- 架构师 / Tech Lead:在服务拆分或重写前,需要基于真实日志盘点各模块之间的调用关联。