架构设计(日志系统)
架构设计(日志系统)
日志系统
日志系统组件
logback:日志框架,可将日志输出到控制台、文件、数据库、logstash等目的地
filebeat:日志文件采集组件,一个filebeat处理一个数据源,相比logstash更轻量级,消耗资源更少
kafka:对采集的日志数据缓冲处理,防止logstash负载过高
logstash:可直接采集日志,也可接受filebeat数据源,对日志进行分析过滤
elasticsearch:日志数据通常使用elasticsearch存储
kibana:可视化展示日志数据
logstash采集日志数据(同步或者异步传输)
filebeat同步采集传输日志:filebeat直传logstash
filebeat异步采集传输日志:使用kafka异步传输到logstash
容量分析
采集200台服务器日志,每天的日志总量2TB,每条日志大小约为1kb,
日志处理后进行监控和报警,监控报警延时不能超过5分钟,
每台服务器的日志峰值吞吐量10000/s,所有服务器瞬时峰值之和为1000000/s
# 每台机器平均每秒处理的日志量
2TB/200/1kb/(24*60*60)=115/s
115/s小于10000/s,单台服务器可以满足要求
# 网络负载
单台kafka的处理峰值:100000/s
需要kafka机器数:1000000/100000=10
网络负载:100000*1kb=100mb,千兆网卡可以满足需求
# 延时处理
假设每条日志的处理时间为20ms,
1000000*20ms/1000/5分钟=66.7,需要66个cpu处理峰值的吞吐量延时才不会超过5分钟
假设每条服务器4个cpu、8g内存,需要的机器数:66/4=16,
需要16台机器部署logstash对日志进行解析处理
一般需要对系统做5到10倍的冗余处理,防止系统超载,使用docker部署可动态拓展机器