项目背景
每个系统都有日志,当系统出现问题时,需要通过日志解决问题
当系统机器比较少时,登陆到服务器上查看即可满足
当系统机器规模巨大,登陆到机器上查看几乎不现实
当然即使是机器规模不大,一个系统通常也会涉及到多种语言的开发,拿我们公司来说,底层是通过c++开发的,而也业务应用层是通过Python开发的,并且即使是C++也分了很多级别应用,python这边同样也是有多个应用,那么问题来了,每次系统出问题了,如何能够迅速查问题? 好一点的情况可能是python应用层查日志发现是系统底层处理异常了,于是又叫C++同事来查,如果C++这边能够迅速定位出错误告知python层这边还好,如果错误好排查,可能就是各个开发层的都在一起查到底是哪里引起的。当然可能这样说比较笼统,但是却引发了一个问题:
当系统出现问题后,如何根据日志迅速的定位问题出在一个应用层?
在平常的工作中如何根据日志分析出一个请求到系统主要在那个应用层耗时较大?
在平常的工作中如何获取一个请求到达系统后在各个层测日志汇总?
针对以上问题,我们想要实现的一个解决方案是:
把机器上的日志实时收集,统一的存储到中心系统
然后再对这些日志建立索引,通过搜索即可以找到对应日志
通过提供界面友好的web界面,通过web即可以完成日志搜索
关于实现这个系统时可能会面临的问题:
实时日志量非常大,每天几十亿条(虽然现在我们公司的系统还没达到这个级别)<