每天云服务器商进行安全测试,产生了上百个异常,发送了上百封的邮件,有人遇到这种问题吗?如何优雅的处理?
可以考虑下我给 exception_notification 添加的 Error Grouping 特性,通过 log2(n) 函数,保证同一个错误在第 1, 2, 4, 8, 16, 32, ..., 1024 次报错时才会发出告警,这样哪怕是成千上万次异常产生,通过对数,也可以直接降到很低的告警频率。这样你可以无痛继续使用邮件告警,又可以摆脱大量邮件的困扰。实乃居家旅行上班必备之良药。
我对待这类异常的做法是直接从根源上处理,该捕获的直接捕获。虽然搞懂这些一个个异常比较麻烦,但是可以一劳永逸,且写成 lib 共享后,其他项目也可以不再受这些烦恼。
例如简单的有刷接口,访问不存在路径的异常(线上不会报,但是日志会记录一大堆异常堆栈),可以在路由最下方使用 match 匹配所有路径的处理方式。另外像麻烦一点的有 Rack 层的参数解析异常,别人非得设置 json headers 然后在用一串非的 json 格式的参数数据请求你接口,这时候可以 加上中间件拦截 这类明显不正常的请求。