把Sentry报错变成GitHub issue

Okou是一个自动完成每日报错分诊的AI DevOps智能体。每天早上,它从Sentry和Axiom拉取未解决的报错,跨两个来源去重,在站会之前建好带完整堆栈的GitHub issue并指派到人,为工程师省下20到30分钟的人工排查。

Okou连接:SentryAxiomGitHub

Okou交付什么:一份每日报错分诊报告

看一份AI生成的报错分诊报告样例:按优先级排列的事故、跨来源去重、已指派的GitHub issue、严重程度、发生量和节省的时间。其中的数据仅作示意,报告格式则是Okou基于Sentry和Axiom能真实生成的产物。

Okou · 自动化报告示例数据

智能体总结

Okou检查了来自Sentry和Axiom的17条原始报错,去重后归为13个根因,建了6个已指派的GitHub issue,另有2条只需观察的信号发到了#dev。

检查的原始报错
17Sentry 12条 · Axiom 5条
独立根因
13去重之后
创建的GitHub issue
6全部已指派
打开完整的每日报错分诊报告

什么是报错分诊?

报错分诊,也叫bug分诊或事故分诊,是把生产环境的报错分组、排优先级并指派到人的过程,目的是让工程师知道先修哪一个。Okou在Sentry、Axiom和GitHub之间扮演AI SRE智能体的角色:给报错去重、套用阈值、附上堆栈、指派代码负责人。结果是一套稳定的每日报错分诊自动化,告警疲劳也更少。

人工分诊为什么会带来告警疲劳

每天早上,工程师都要打开Sentry翻一遍未解决的告警,再到Axiom交叉核对,分清哪些是新问题、哪些是重复的,判断哪些严重,建GitHub issue,再找到该负责的人。这一轮重复的初筛要花掉20到30分钟的专注时间,正事还没开始,告警疲劳就先来了。Okou在早上8:45运行,在所有人打开电脑之前就把同样的分诊做完。

Okou如何自动完成每日报错分诊

第一步:连接你的工具

Sentry
Sentry
必需
Okou的Sentry集成会查询生产环境里未解决的报错、堆栈、事件次数和环境标签。
连接
GitHub
GitHub
必需
Sentry与GitHub的集成会建出带完整报错细节的结构化issue,并指派给代码负责人。
连接
Axiom
Axiom
可选
Okou会查询Axiom的报错日志,与Sentry的发现交叉比对并去重。可选,但建议接上。
连接

第二步:交给Okou

Okou每个工作日早上8:45,拉取Sentry和Axiom里过去24小时未解决的报错,跨来源去重。出现5次以上的,在okou-ai/okou建GitHub issue,附上完整堆栈,并指派给对应的代码负责人。
同一条工作流的一次示例运行,逐步展开:拉取并排序Sentry issue、标出发布回归、生成图表、发布报告、再发到Slack。
Okou从Sentry和Axiom拉取未解决的报错
Okou按你设定的时间窗口,在Sentry和Axiom里各查一遍未解决的报错,再套用你给的出现次数阈值,把低信号的噪音挡掉,只留下真正大面积发生的报错。
跨Sentry和Axiom合并重复报错
同一个报错常常在Sentry和Axiom里以不同格式各出现一次。Okou会把它们去重成一条记录,合并两边的数据,每个真实问题你只需要分诊一次。
建好GitHub issue并指派给代码负责人
每一条达到条件的独立报错,Okou都会建一个结构化的GitHub issue,附上完整堆栈、出现次数,以及首次和最近一次出现的时间,再指派给负责这块代码的工程师——从Sentry到GitHub的交接,全程自动完成。

第三步:再往前一步

调整阈值
改一下出现次数的门槛,可以更少噪音,也可以抓得更全。
Okou把每日分诊改成只给出现10次以上的报错建issue。低于这个数的,发一条汇总到#dev。
并进早间简报
把报错分诊并进团队已经在看的产品健康简报里。
Okou把今天的报错分诊结果加进你早上9点发到#standup的产品健康简报里。
发布后的保险检查
生产发布之后立刻跑一次分诊,回归问题几分钟内就能暴露,不用等到第二天早上。
Okou只要okou-ai/okou有PR合入main,就等15分钟,然后查一次Sentry有没有新报错。

报错分诊用到的Sentry、GitHub和Axiom集成

这条工作流就是一套中间站着智能体的Sentry与GitHub集成:Okou从Sentry读取,在Axiom里核对同一个时间窗口,再写入GitHub。每个连接器都单独授权,权限范围只覆盖工作流真正用到的部分,所以读取报错数据的权限,不会顺带变成写入你仓库的权限。

Sentry

Sentry集成:Okou读取的报错

必需

Okou通过Sentry的issues API读取你的报错监控数据,按你指定的环境查询未解决的报错,并按出现频率排序。对每一条,它会读取标题和出错位置、事件次数和受影响用户数、级别,以及首次和最近一次出现的时间,再取出最新一次事件,拿到完整堆栈及其版本和环境标签。分诊判断需要的信息就都齐了:坏了什么、多频繁、在哪里、从什么时候开始。这条工作流里的Sentry集成是只读的。Okou不会把你的Sentry issue标成已解决、合并或改派,它写下的记录只会进GitHub。

GitHub

GitHub集成:Okou建出的issue

必需

每一条越过阈值的报错,都会在你指定的仓库里变成一个GitHub issue。issue里带着报错标题、堆栈、出现次数和受影响用户数、首次与最近一次出现的时间,还有一个回到原Sentry issue的链接,原始数据始终只隔一次点击。Okou会打上你指定的标签,并按堆栈里出现的文件指派代码负责人。写入权限只限于你授权的仓库,而且它只会建issue:不提交代码、不开pull request、不碰仓库设置。

Axiom

Axiom集成:Okou交叉比对的Axiom日志

可选

Axiom是可选的,它的价值体现在去重上。如果你的日志管理已经跑在Axiom上,Okou会在同一轮里一起读:对你选定的数据集执行一次APL查询,时间窗口与拉取Sentry时保持一致,再把这些Axiom日志和它已有的报错特征做匹配。这样就能抓到同一个故障以两种格式出现两次的情况,也补上了单看Sentry事件拿不到的请求级上下文。不接Axiom,这条工作流照样能跑完,只是去重会退回到只用Sentry的数据。

Okou、人工分诊与Sentry告警规则的对比

每日报错分诊是自动化事故响应的第一层。团队用Okou把Sentry接到GitHub,在问题需要更大范围的AI事故管理之前,先把重复的初筛做完。

人工分诊

工程师自己看Sentry和Axiom,找出重复项,判断严重程度,建issue,再找到负责人。灵活,但每天早上都要重复同样的20到30分钟。

Sentry告警规则

阈值一旦越过,规则就会通知团队。用来发现问题很有用,但关联日志、给报错去重、建GitHub issue、指派负责人,还是得团队自己来。

Okou的Sentry工作流自动化

Okou把这套Sentry自动化从头跑到尾:查询、跨来源去重、阈值过滤、建issue、附上堆栈、指派代码负责人。随时触发和发布后运行,用的都是同一条工作流。

让效果更好的几个建议

设一个出现次数阈值,issue数量才不会失控。5次以上是个不错的起点,之后按你的报错量调整。
用Sentry的环境或项目标签把查询限定在生产环境,预发布的报错就不会混进分诊队列。
把每日分诊和发布后检查串起来,日常流程就变成了一套轻量的自动化事故响应;再搭配9:00的产品健康简报,团队在同一个地方就能看到报错和状态。

常见问题

怎么把Sentry的报错分诊成GitHub issue?

想从Sentry自动生成GitHub issue,先把Sentry和GitHub连到Okou,再给它一个定时任务或者一条随时触发的提示词。Okou会查询未解决的报错,按出现次数和环境过滤,为每条符合条件的报错建一个issue,附上堆栈和时间,并指派代码负责人。

怎么跨Sentry和Axiom给报错去重?

可以。Okou会跨Sentry和Axiom比对报错特征、堆栈、消息内容和发生时间,再把匹配上的事件合并成一条分诊记录。每个原始来源都仍然保留链接,方便继续排查。

怎么减轻报错监控带来的告警疲劳?

把分诊限定在生产环境,设一个出现次数阈值,跨工具给同一个报错去重,量少的报错只进汇总、不单独建issue。这样队列里留下的,就都是真正需要动手的报错。

每次发布之后能让Okou跑一次报错分诊吗?

可以。建一条自动化,在发布或者代码合入main之后启动报错分诊工作流,需要的话先留一小段观察时间,然后检查Sentry里生产环境的新报错,并为符合条件的建issue。

这套报错分诊自动化需要哪些工具?

Sentry和GitHub是必需的:Sentry提供报错数据,GitHub接收指派好的issue。Axiom可选,但它能补上日志上下文,也让跨来源去重更准。

Sentry与GitHub的集成需要哪些权限?

Sentry需要你所分诊项目里issue和事件的读取权限。GitHub需要接收issue的那些仓库的issue写入权限。如果你用Axiom,它需要你指定数据集的查询权限。每个连接器都在Okou里单独授权,撤销其中一个不影响其他。

Okou能把issue建到多个GitHub仓库吗?

可以。告诉Okou哪个服务或项目对应哪个仓库,它就会照着分流,前端报错进web仓库,API报错进后端仓库。这套对应关系写在提示词里,要改的时候不用重新配置GitHub连接器。

Okou会改动Sentry里的东西吗?

不会。这里的Sentry集成是只读的:Okou只查询issue和事件,不写回任何内容。你的issue状态、指派和处理记录,都保持团队原来的样子。Okou唯一创建的,是GitHub issue。

跑一次你的Sentry分诊

连上Sentry和GitHub,需要的话再加上Axiom。直接用同一条每日分诊提示词,不必手动搭一遍,就能看到工作流跑起来。

Okou每个工作日早上8:45,拉取Sentry和Axiom里过去24小时未解决的报错,跨来源去重。出现5次以上的,在okou-ai/okou建GitHub issue,附上完整堆栈,并指派给对应的代码负责人。