运维神器-分分钟定位500错误!

做过运维的小伙伴都知道,当用户浏览器上出现白屏、应用端API得到500错误、取到数据为空是非常崩溃的一件事情。500错误是服务器端非常常见的一个错误,有可能是开发时导致的语法错误,也有可能是文件引用导致的错误。当用户反馈了500错误之后,而我们运维童鞋们面对一个集群的后端服务器,如果没有方便的工具管理和同步,下手查找问题,是管理HTTP Error是一个即耗时又费力的痛苦过程。


在最开始的时候,用户访问出错,系统各种报错,网络访问延迟……总之各种各样的问题。


每次遇到这种情况,我们运维同学们就分别登录几台Web服务器,去查找可能记录错误日志的地方,找出错误的真凶,以让开发童鞋们来改进。


如下图这个错误,就是由于在引用微信JS-SDK 开发时,由于每个页面都要做JS-SDK权限授权,但是在其中一个页面忘记了导入微信的JS-SDK 包,导致了大量的 500 错误。这种找错误的过程,最开始几台机器还勉强,几分钟能找到,到了后来变成了几十台,已经变成了一项谁也不想干的工作了!


运维神器-分分钟定位500错误!_第1张图片

图一:从日志中寻找出现 500 错误的真凶


后来公司的负载均衡服务器Haproxy做了会话保持,我们就只好联系用户,让部分懂点技术的用户,帮我们用Chrome这类开发者工具,抓一下包,看看Cookie,从Cookie的SERVERID字段就能知道,这个用户的访问,可能来自自于哪台机器,这样定位起来,方便了很多,但是时间也往往要10分钟以上,因为还要跟用户电话,大部分用户并不懂得如何操作。如下图二,从正常请求,可以得到此时访问的SERVERID,就可以知道出错的页面和日志,也会在这台机器上。



图二:通过SERVERID确定服务器


那有没有什么更快的办法呢?有倒时有,比如自己开发一套系统,从各台服务器收集日志,在有一个集中的地方,能查看。但是我们运维童鞋开发能力还不太能跟得上,公司的开发童鞋老板也恨不得拉来7x16小时开发产品。


那到底还有木有什么更好的办法啊?


在圈子里有人推荐OneAPM!其实最开始我是拒绝的,因为一般来讲,装这种在生产环境上,比较麻烦,并且可能会影响性能,还都需要埋代码。真到有一天,微博上又有人在讨论OneAPM,我有点心动了。


运维神器-分分钟定位500错误!_第2张图片


于是乎,对于懂点开发、喜欢鼓捣新玩意的非典型运维工程师,三下五除二从OneAPM注册了账号,下载了安装包,安装到了我们的测试服务器上。好家伙,我还啥也没有干,把程序刚刚跑起来,在OneAPM的管理控制台上就看到了数据,真是福音啊,不要埋代码,真的不要埋代码!!!


运维神器-分分钟定位500错误!_第3张图片


DUANG—简直就是有特技!经过几天的实验,并向领导申请在生产环境上安装,领导看到了是优才网伍老师推荐,正好是认识的熟人,所以特意微信沟通了一下,知道是靠谱的。就让我让装到生产环境上去了。


在实际的使用过程中,OneAPM确实也帮了我们的大忙。使用了几个月了,觉得真的是减轻了我们运维童鞋工作,同时也非常快速地定位问题,开发童鞋们也很感激。下面就举一个真实环境中的栗子。


下面就是我从线上摘出来的典型的例子。线上出了问题,一分钟后,在OneAPM的管理后台就看到了错误消息。如图三


运维神器-分分钟定位500错误!_第4张图片


还以上边的WxJSSDK没有找到为例,线上出问题时,使用浏览器抓包,得到的是如下结果,因为线上是关闭了日志输出的,只看到白白的一片,抓包则是500错误。


运维神器-分分钟定位500错误!_第5张图片


现在不用一台台上去检测了,一分钟后,OneAPM后台就收到了错误信息报告。点击去看如下:


运维神器-分分钟定位500错误!_第6张图片


错误信息报告表明,这是一个非常严重的PHP错误,就是在做微信开发时,要引用微信官方的SDK,开发童鞋给漏掉了,导致出现了找不到类“WxJSSDK”这样的错误,Nginx接到这样的错误,会向客户端返回500。


我直接把OneAPM错误信息报告发给开发童鞋,开发童鞋心领神会,再也不会跟我纠缠说谁谁的问题了!


开发童鞋还告诉了我修复的办法:引入文件就好了,特意找到了这段代码参考下图。



有了OneAPM就是这么爽,我也不用再用终端爬到每台机器上去确认,更不用担心随着公司的业务发展,加到多少台Web和API服务器。


我需要拥有的,就是一个OneAPM的管理后台!


每次公司内部的技术分享,我都会从OneAPM拉出一些案例,也会提供给开发主管一些素材,总结程序员可能常犯的错误,为此,受到了老板的奖励!至于啥奖励,大家懂的。平时参加一些业内的技术交流,也会向他们推荐OneAPM,已经成为了OneAPM的忠粉,他们团队里做支持的孟智童鞋还和我成为了好朋友!


OneAPM的服务是很有特色的,可能这种服务还在早期,国内好像还没有类似的应用,所以在后台和功能上,也有一些不足之处,趁这个机会也吐个槽,希望能受到开发团队的关注 ,并改进。


第一、由于我经常用,所以OneAPM账号长期处于登录状态,但是每次敲入OneAPM.com都进到了首页,搞技术的都懂啊,你们的产品经理莫非是临时工?



第二、最需要改进的,就是看错误日志的面板,搜索、错误分级都还没有做好。幸好我用熟悉了,否则新用户会很晕的,欲知详情,请看下图。




第三、如果做了错误分级,我最想要的就是报警了,就像DNSPod,每一次域名出故障,连不上,都短信、微信、邮件就来了,听说你们拿了7000万啊,在出严重错误的时候,能不能给我来个短信啊,我就不用每天挂着这个后台了,有木有!等到这些有了,即时将来有可能收费,我也会积极向领导争取滴!


来源:OneAPM公众号

你可能感兴趣的:(异常处理,PHP,运维,开发者)