程序日志(AppLog)有什么特点?
-
内容最全:程序日志是由程序员给出,在重要的地点、变量数值以及异常都会有记录,可以说线上90%以上Bug都是依靠程序日志输出定位到
-
格式比较随意:代码往往经过不同人开发,每个程序员都有自己爱好的格式,一般非常难进行统一,并且引入的一些第三方库的日志风格也不太一样
处理程序日志会有哪些挑战?
1. 数据量大
程序日志一般会比访问日志大1个数量级:假设一个网站一天有100W次独立访问,每个访问大约有20逻辑模块,在每个逻辑模块中有10个主要逻辑点需要记录日志。
这个数据会随着业务系统复杂变得更大,一天100-200GB日志对一个中型网站而言是很常见的。
2. 分布服务器多
对应实例数目会从几个到几千,需要有一种跨服务器的日志采集方案
3. 运行环境复杂
如何解决程序日志需求
1.统一存储
目标:要把各渠道数据采集到一个集中化中心,打通才可以做后续事情。
我们可以在日志服务中创建一个项目来存储应用日志,日志服务提供30+种日志采集手段:无论是在硬件服务器中埋点,还是网页端JS,或是服务器上输出日志,都可以在实时采集列表中找到。
在创建完成一个日志采集配置后,我们就可以在项目中操作各种日志了。
可能有人要问到,日志采集Agent非常多,有Logstash,Flume,FluentD,以及Beats等,Logtash和这些相比有什么特点吗?
- 使用便捷:提供API、远程管理与监控功能,融入阿里集团百万级服务器日志采集管理经验,配置一个采集点到几十万设备只需要几秒钟
- 适应各种环境:无论是公网、VPC、用户自定义IDC等都可以支持,https以及断点续传功能使得接入公网数据也不再话下
- 性能强,对资源消耗非常小:经过多年磨练,在性能和资源消耗方面比开源要好,详见对比测试
2. 快速查找定位
目标:无论数据量如何增长、服务器如何部署,都可以保证定位问题时间是恒定的
例如有一个订单错误,一个延时很长,我们如何能够在一周几TB数据量日志中快速定位到问题。其中还会涉及到各种条件过滤和排查等。