架构设计(日志系统)
架构设计(日志系统)
日志系统
日志系统组件
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部署可动态拓展机器