日志分析平台建设方案目录一、现状和需求............................................................................................................2(一)现状与问题.........................................................................................................2(二)需求说明与分析.................................................................................................3二、建设目标................................................................................................................3三、系统设计................................................................................................................3(一)技术选型............................................................................................................3(二)系统架构............................................................................................................41.架构图............................................................................................................42.架构分析.........................................................................................................4(三)系统介绍............................................................................................................5四、实施方案................................................................................................................6(一)系统配置............................................................................................................61.软件................................................................................................................62.硬件................................................................................................................7(二)系统搭建............................................................................................................7一、现状和需求(一)现状与问题1.日志文件分散在各个应用服务器,开发人员必须远程登录才能查看日志,不利于服务器安全管控,加大生产服务器的风险;2.服务器上各项目日志配置很随意,文件分布杂乱,没有统一的规范和管理;3.日志文件占用服务器大量的硬盘空间,如不及时清理会发生硬盘占满,影响系统的正常运行;4.对于超过百兆的日志文件根本没法打开和关键字搜索,不利于问题的快速定位和排查;5.集群和分布式的系统需要查看多个服务器的日志6.日志保存的时间不统一,不能长时间保存日志(二)需求说明与分析1.不需要开发人员登录生产服务器就能查看日志;2.统一规范日志的配置和输出格式;3.实时的将日志文件从服务器中迁出;4.提供日志的检索和统计分析的平台;二、建设目标搭建支持高并发高可靠的日志分析平台,方便开发人员快速的检索日志,排查问题,同时提供友好的分析和统计的界面。三、系统设计(一)技术选型针对这些问题,为了提供分布式的实时日志搜集和分析的监控系统,我们采用了业界通用的日志数据管理解决方案-它主要包括Elasticsearch、Logstash和Kibana三个系统。通常,业界把这套方案简称为ELK,取三个系统的首字母。调研了ELK技术栈,发现新一代的logstash-forward即Filebeat,使用了golang,性能超logstash,部署简单,占用资源少,可以很方便的和logstash和ES对接,作为日志文件采集组件。所以决定使用ELK+Filebeat的架构进行平台搭建。为了支持日志的高并发和高可靠需要进了消息队列(MQ),这里选择了kafka,相对其他消息中间件,kafka有支持大并发,快速持久化等优点,而且ELK+Filebeat对kafka的兼容性也很好。最终,我们采用Elasticsearch+Logstash+Kibana+Filebeat+Kafka+Zookeeper的架构搭建日志分析平台。(二)系统架构1.架构图2.架构分析第一层、数据采集层最左边的是业务服务器集群,上面安装了filebeat做日志采集,同时把采集的日志分别发送给两个logstash服务。第二层、数据处理层,数据缓存层logstash服务把接受到的日志经过格式处理,转存到本地的kafkabroker+zookeeper集群中。第三层、数据转发层这个单独的Logstash节点会实时去kafkabroker集群拉数据,转发至ESDataNode。第四层、数据持久化存储ESDataNode会把收到的数据,写磁盘,建索引库。第五层、数据检索,数据展示ESMaster+Kibana主要协调ES集群,处理数据检索请求,数据展示。(三)系统介绍1.Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于ApacheLucene构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;2.Logstash:数据收集额外处理和数据引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;3.Kibana:数据分析和可视化平台。通常与Elasticsearch配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;4.Filebeat:ELK协议栈的新成员,在需要采集日志数据的server上安装Filebeat,并指定日志目录或日志文件后,Filebeat就能读取数据,迅速发送到Logstash进行解析,亦或直接发送到Elasticsearch进行集中式存储和分析。5.Kafka:数据缓冲队列。作为消息队列解耦了处理过程,同时提高了可扩展性。具有峰值处理能力,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。6.Zookeeper:是一种在分布式系统中被广泛用来作为:分布式状态管理、分布式协调管理、分布式配置管理、和分布式锁服务的集群。kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kafka系统会捕获这些事件,进行新一轮的负载均衡,客户端也会捕获这些事件来进行新一轮的处理。四、实施方案(一)系统配置1.软件Elasticsearch-6.0.0logstash-6.0.0kibana-6.0.0filebeat-6.0.0JDK1.8Kafka_2.12-1.1.0Zoopkeeper-3.4.122.硬件4台内网linux服务器,centos7系统;配置要求:内存:3*4G+8G,硬盘:3*20G+500G,10M带宽;独立的外网域名(二)系统搭建具体的ELKF+kafka集群搭建请参考:elk日志分析系统(一)elk日志分析系统(二)