使用SLS在云端快速精确定位应用错误
作者: 阿里云技术团队 孙廷韬
作为一个程序猿,调查应用错误可真不是一个轻松活,一出问题,经常要上机器查看各种日志,对于复杂应用,这个过程就更痛苦。比如,应用前端架设Apache服务,后端是各种核心逻辑,使用Mysql做信息存储,这些角色还部署在多台机器上。调查问题,免不了打开多个机器的登录窗口,在不同目录间切换,grep日志关键词查找线索,再切换再查找,几圈下来,头已经有点晕,打开日志文件看看细节,一失手,vim一个上百MB文件…心中已是各种马在奔腾…
自从用上了阿里云的简单日志服务,突然发现调查问题变得轻松起来。向各位看官汇报一下,如何在云端,快速定位应用各种错误。
首先,先来看前端机器是否有错误,自从将前端访问日志收集放到SLS上后,再不用一台台登录前端机。选择Apache访问日志的Category,直接在控制台输入 “500”,就可查看http 状态为500的错误日志。真有几次这样的错误,这些访问请求失败了。
赶紧去看看后端应用层,是什么异常导致的,返回category列表,重新选择后端日志”ServerLog”这个Category,输入” ERROR”,把所有ERROR级别的日志全部查出来。
这么多错误,真要好好看看都是怎么回事。想到核心业务部署在10.242.78.62这个机器上,重点关注这个机器上有没有什么错误,输入”ERROR and 10.242.78.62”进行精确定位。
还好,错误数下降了一个数量级。在显示的第一页日志上,看上去都是用户输入参数错误,包含了非utf-8字符。往后翻了几页,也是同样的错误,那先把这些参数错误过滤掉再说,输入 “ERROR and 10.242.78.62 not UTF-8” 进行过滤。
世界立马清净了,只有几个错误,原来都是写数据库出现错误,仔细回想一下,原来前2天修改了数据库表的schema,应用程序处还有一个地方忘记修改,由于这个表平时访问少,这个问题一直没有被发现。快速定位到原因后,这个bug的修复分分钟就搞定。
有了简单日志服务,调查问题,可以直接在云端完成,免去了登录机器的烦恼,通过简单日志服务提供的自定义时间段,以及关键词 AND、NOT、OR的组合查,可以方便地定位各种异常信息,大大提高了本码农的debug的效率。
最后更新:2017-04-03 05:38:55