不知道大家有没有遇到这样的一种情况,当我们产品出现bug或无法访问的时候,客户反馈给售后或商务,售后反馈给测试,测试确认问题后,再反馈给研发,研发在根据客户提供的信息再确认是哪里问题。这个过程至少半天就过去了,而且影响在逐渐的扩大。然后商务的老大知道了,售后的老大知道了,产品、研发的老大知道了,最后CEO也知道了。可能就是一个小bug,整个公司的人都知道了。作为研发的老大,一次两次还可以顶下,但是老是这种问题,是不是压力有点大。那怎么解决这个问题呢?1.加强代码review,2.逻辑梳理,减少出错概率,3.单元测试。这些都不能避免bug的出现,我们今天要说的时候,出现bug后快速的修复,将影响面降低到最小。那怎么快速发现bug呢?有一套报警系统是不是就可以解决了。那么做一个报警系统呢?
1.错误日志收集
nginx日志、php错误日志、sql错误日志、应用错误日志。假设这些日志都打印到日志文件了,那么多台服务器的日志怎么收集呢,那就需要用到阿里云日志服务,可以将多台服务器的日志收集起来。日志服务可以根据时间间隔来筛选,并且支持正则表达式和sql查询。比如说我要查询nginx请求一分钟内的http statuscode 大于400的请求有哪些。如果大于1个,那么就需要通知研发人员和测试。或者如果请求处理时间大于1s的,我也要通知研发人员。
2.怎么通知呢
如下图右上角有个另存为告警。那就可以通过钉钉、短信、邮件方式,通知到研发人员。另外钉钉的机器人真的挺好用的,登陆钉钉桌面版,点击右上角头像-》机器人管理-》自定义,选择一个群,然后会产生一个webhook地址。只要将webhook地址加入到日志管理报警设置里面。对于不同的业务通知到不同的人,那就自己细化报警和日志吧。半天时间一个简易的监控报警就搞定啦。
日志服务的功能远远不止这些,api日志上传,各种语言java、go、php、ios、android、python等。还可以将日志在投递到OSS、MaxCompute等,再做后续的数据分析。
参考:
https://help.aliyun.com/document_detail/54604.html
https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq
网友评论