对于线上埋点日志,行为日志或者需要上报日志的nginx服务,每天会产生大量的日志,这些日志非常有价值。可用于计数上报、用户行为分析、接口质量、性能监控等需求。但传统nginx记录日志的方式数据会散落在各自nginx上,而且大流量日志本身对磁盘也是一种冲击。
我们需要把这部分nginx日志统一收集汇总起来,收集过程和结果需要满足如下需求:
- 支持不同业务获取数据,如监控业务,数据分析统计业务,推荐业务等。
- 数据实时性
- 高性能保证
技术方案
得益于openresty和kafka的高性能,我们可以非常轻量高效的实现当前需求,架构如下:
![](https://img.haomeiwen.com/i15041653/06e44d17811df853.png)
方案描述:
- 1:线上请求打向nginx后,使用lua完成日志整理:如统一日志格式,过滤无效请求,分组等。
- 2:根据不同业务的nginx日志,划分不同的topic。
- 3:lua实现producter异步发送到kafka集群。
- 4:对不同日志感兴趣的业务组实时消费获取日志数据。
相关技术
- openresty: http://openresty.org
- kafka: http://kafka.apache.org
- lua-resty-kafka: https://github.com/doujiang24/lua-resty-kafka
转自http://hot66hot.iteye.com/blog/2291916
https://www.cnblogs.com/linzepeng/p/12643158.html
网友评论