Rails 由于云服务商做安全测试,exception_notification 发送大量邮件

ecloud · August 23, 2018 · Last by ecloud replied at September 03, 2018 · 2136 hits

每天云服务器商进行安全测试,产生了上百个异常,发送了上百封的邮件,有人遇到这种问题吗?如何优雅的处理?

不发邮件,往数据库写,实现管理界面来看

http://github.com/rails-engine/exception-track

可以配置忽略一些异常类型

Reply to huacnlee

第一次在公司学习 ruby on rails 的时候有用到这个 gem. 之后忘记了是哪个。终于又发现了。

Reply to huacnlee

谢谢,但是我们还是需要邮件提醒,涉及到金钱的问题,出现异常需要立马查看处理。

Reply to hooopo

我在 git 的文档没找到如何配制,请问如何配制?谢谢。

rollbar可以吗

bearychat-notifier 考虑下?

就是把异常打到聊天软件里,就不用再打开邮箱了,有问题还可以直接讨论。

当然 Slack 也有类似的 Gem.

bugsnag, 可以设置同一个错误邮件的频率

Reply to yfractal

感谢,考虑下。

可以考虑下我给 exception_notification 添加的 Error Grouping 特性,通过 log2(n) 函数,保证同一个错误在第 1, 2, 4, 8, 16, 32, ..., 1024 次报错时才会发出告警,这样哪怕是成千上万次异常产生,通过对数,也可以直接降到很低的告警频率。这样你可以无痛继续使用邮件告警,又可以摆脱大量邮件的困扰。实乃居家旅行上班必备之良药。

我对待这类异常的做法是直接从根源上处理,该捕获的直接捕获。虽然搞懂这些一个个异常比较麻烦,但是可以一劳永逸,且写成 lib 共享后,其他项目也可以不再受这些烦恼。

例如简单的有刷接口,访问不存在路径的异常(线上不会报,但是日志会记录一大堆异常堆栈),可以在路由最下方使用 match 匹配所有路径的处理方式。另外像麻烦一点的有 Rack 层的参数解析异常,别人非得设置 json headers 然后在用一串非的 json 格式的参数数据请求你接口,这时候可以 加上中间件拦截 这类明显不正常的请求。

感谢各位给我的意见。让我学到了很多。

ecloud closed this topic. 03 Sep 10:22
You need to Sign in before reply, if you don't have an account, please Sign up first.