使用场景
- 问题排查
在分布式系统中,同一个应用可能部署在多台机器上,如果日志没有集中搜集起来,通过日志排查问题时需要查找每台机器上的日志,排查过程也会消耗性能,可能影响线上业务。
- 离线场景
日志可用来统计PV、UV 等指标,用于 OLAP、机器学习模型训练等场景。
- 实时场景
可用日志流中实时解析出有价值的信息,用于实时 OLAP、实时模型训练、风控等。
问题挑战
- 数据量大
- 业务线多
- 易用性,无侵入
架构设计
日志接入(agent)
日志收集 Agent,部署在应用服务器上,用于收集应用日志
考虑到接入成本和对业务的影响,考虑与已有日志框架集成(如通过 Log4j 框架的 appneder 集成)
Agent日志收集过程设计成异步的,降低对业务系统的性能影响
日志收集中心(collector)
agent 收集上来的日志,通过日志中心转发到对应的 topic
消息队列(mq)
日志收集中心的日志,根据业务线和 topic 的映射关系进行转发,kafka 下游可写入 hdfs 或 es