在使用skywalking进行报警的时候,gateway经常会返回401,此时会产生很多误报和成功率下降的问题,
正确的做法是:推动公司制定统一的 API 响应规范,其实就是代码层面进行修改鉴权失败一律返回200,真正的业务错误码放在 JSON 响应体里。
c
// HTTP Status: 200 OK
{
"code": 401,
"msg": "登录已超时,请重新登录",
"data": null
}
无奈小运维人微言轻😄,并且确实看起来没啥实际影响,只能从运维侧这边想办法
目前正在Vibe一个skywalking的屏蔽状态码插件,比较临时的处理方式就是单独给gateway进行一个分组,连续出现低成功率才进行告警,可以大大降低误报概率
c
endpoint_sla_rule:
expression: sum((endpoint_sla / 100) < 50) >= 3
include-names-regex: ".* in gateway$"
period: 5
silence-period: 10
message: "接口 {name} 最近5分钟内至少3分钟持续成功率低于50%"
tags:
level: WARNING