ELK框架介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ELK框架介绍引子:1、公司有很多系统,分别部署在不同的服务器上,有个别系统是分布式架构,这些系统每天的日志信息非常庞大,这时候该如何对这些系统进行统一监控?出现问题如何快速排查?ELK提供的一套完整的日志收集以及展示的解决方案目录CATALOGELK是什么?1ELK在项目中如何应用?2PART1ELK是什么?什么是ELK?什么是ELK?数据存储、检索ElasticSearch采集数据的工具Logstash数据可视化工具KibanaELK哪些公司在用ELK类似百度百科,通过Elasticsearch实现全文检索,高亮,搜索推荐德比软件用不到20台的Elasticsearch服务器来支撑总量800亿的日志分析Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码携程善用Elasticsearch进行集中式的FileBeat运维日志管理为业务部门提供统一的搜索服务平台通过日志分析统一查看中国区的整体销售情况维基百科360360公司使elasticsearch对旗下系统做日志监控ElasticSearchElasticSearchElasticSearch是ELK的核心,简称ES,它是一个基于ApacheLucene的开源数据搜索引擎,具备了Lucene的全部特性,使用Java语言编写。支持分词、全文搜索等。它的特点有:•实时:可以进行实时的数据搜索和分析•分布式:分布式文件存储,并将每个字段都编入索引•RestfulAPI:对外提供一系列基于JAVA和HTTP的API,用于索引、查询、修改大多数配置•JSON:输入输出格式为JSON,快捷方便ElasticSearchElasticsearch极易上手且性能牛逼,继承了Lucene的强大数据检索能力,可以快速搜索数十亿的文件以及PB级的数据。ElasticSearchElasticsearch是近几年最受欢迎的搜索引擎ElasticSearch集群文档节点分片类型索引ElasticSearch一个集群包含多台ES服务器,多个节点一个节点就是集群中的一个服务器主分片和副本分片索引是数据存储的逻辑空间,是相似结构文档的集合一个索引可以定义多个类型(在ES新版本会弃用)一个文档就是一条数据数据库表行ElasticSearch原理ES通过集群多节点多分片的模式实现高性能高可用集群节点1节点2节点3分片1分片2分片3分片1分片2分片3分片1分片2分片3分片1分片3分片1分片2分片2分片3当索引设置3个分片,2个副本时,数据是高可用的当索引设置3个分片,1个副本时,数据还是高可用的分片1分片2分片3当索引设置3个分片,0个副本时,数据是不安全的ElasticSearch原理搜索为什么那么快?因为ElasticSearch使用了ApacheLucene,其内部使用的是被称为倒排索引的数据结构。倒排索引倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而成为倒排索引。文档是ES的数据单元,对文档中的词进行分词,并创建去重词项的有序列表,将词项与其在文档中出现的位置进行关联,便形成了倒排索引举个例子,这里有两条数据文档1(doc1):今天要做分享文档2(doc2):ELK集群分享文档1(doc1):今天/要/做/分享文档2(doc2):ELK/集群/分享词项文档今天doc1要doc1做doc1分享doc1,doc2ELKdoc2集群doc2ElasticSearch原理当我们查询“ELK分享”这个中文分词时,只需要知道它在哪个文档位置即可。结果:两条数据都匹配,但是doc2比doc1的匹配度更高,评分为2搜索结果将评分高的数据排列在前面。词项doc1doc2ELK×√分享√√(计算出匹配度)12ElasticSearch原理ELK对外提供基于HTTP的RESTAPI进行CRUD操作LogstashLogstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括syslog、消息传递(例如RabbitMQ,kakfa)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。LogstashLogstash是一个具有实时传输能力的数据收集引擎,用来进行数据收集(如:读取文本文件)、解析,并将数据发送给ES。INPUT层从数据源中采集数据,由合适的input插件组成FILTER层从消息队列中获取数据进行解析和其他操作OUTPUT层将处理的数据传输到ESLogstashOralce数据通过Logstash同步到ESLogstashLogstash与filebeat结合进行日志收集LogstashLogstash与filebeat结合进行日志收集1.在应用服务器部署filebeat,将log文件同步到logstash2.从logstash中读取日志数据,并插入到ES中,KibanaKibana为Elasticsearch提供了分析和可视化的Web平台。它可以在Elasticsearch的索引中查找,交互数据,并生成各种维度表格、图形。KibanaKibana用于问题分析。通过Kibana的交互式界面可以很快地将异常时间或者事件范围缩小到秒级或者个位数,可以很快从TB级的数据里看到关键错误信息。而且日志结果随时间的分布将显示在页面顶部的直方图中。KibanaKibana支持嵌入仪表盘到web应用中PART1ELK在项目中如何应用ELK单机应用模式OracleMysqlMongoLogFile数据源数据汇总与处理存储与索引可视化分析按工作流程来说,ELK应该叫LEK。Logstash负责采集数据,其中包括应用日志数据,服务器性能数据,数据库表数据等;采集数据后输入到ElasticSearch进行存储,再通过Kibana进行图形化展示。好了,ELK单机应用就这么简单。接下来再介绍一些其他组件,因为集群模式会用到它们。ELK集群模式数据采集缓冲存储数据汇总与处理存储与索引可视化分析ELK集群运作流程引入Beats最开始的架构中,由Logstash承担数据采集器和过滤功能,并部署在应用服务器。由于Logstash对大量日志进行过滤操作,会消耗应用系统的部分性能,带来不合理的资源分配问题;另一方面,过滤日志的配置,分布在每台应用服务器,不便于集中式配置管理。所以就有了BeatsBeats的系统性能开销更小,所以应用服务器性能开销可以忽略不计;另一方面,Beats可以作为数据采集插件形式工作,可以按需启用Beats下不同功能的插件,更灵活,扩展性更强。例如,应用服务器只启用Filebeat,则只收集日志文件数据,如果某天需要收集系统性能数据时,再启用Metricbeat即可,并不需要太多的修改和配置。引入kafka如果日志量巨大,可能还会引入Kafka用以均衡网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性;另一方面,这样可以系统解耦,具有更好的灵活性和扩展性。下面的内容是ELK集群模式的相关配置ELK集群模式基于以前ELK架构的基础,结合Kafka队列,实现了ELK+Kafka集群ELK集群模式#filebeat6.2.4#kafka_2.11-1.0.0(该版本已经包含ZooKeeper服务)#Logstash6.2.4#Elasticsearch6.2.4#elasticsearch-head(从github直接clone)#Kibana6.2.4软件准备#ES集群安装配置;#Logstash客户端配置(直接写入数据到ES集群,写入系统messages日志);#Kafka(zookeeper)集群配置;(Logstash写入数据到Kafka消息系统)安装步骤ELK集群模式ElasticSearch集群安装配置#配置参数:cluster.name:myES#ES集群的名字node.name:node-1#ES节点的名字path.data:/usr/local/app/elasticsearch-6.2.4/datapath.logs:/usr/local/app/elasticsearch-6.2.4/logbootstrap.memory_lock:false#对于非专用ES,建议设置为false,默认为truebootstrap.system_call_filter:falsenetwork.host:0.0.0.0#支持远程访问http.port:9200#restfulapi访问接口http.cors.enabled:true#允许EShead跨域访问http.cors.allow-origin:*#允许EShead跨域访问配置复制到其它节点,修改节点名称即可ELK集群模式Kafka(zookeeper)集群配置ELK集群模式Kafka(zookeeper)集群配置dataDir=/usr/local/app/kafka_2.11-1.0.0/zookeeperDir#指定Zookeeper保存数据的目录#客户端将连接的端口clientPort=2181#disabletheper-iplimitonthenumberofconnectionssincethisisanon-productionconfigmaxClientCnxns=1024tickTime=2000initLimit=20syncLimit=10server.1=192.168.0.101:2888:3888server.2=192.168.0.102:2888:3888server.3=192.168.0.103:2888:3888[elk@localhostconfig]$vimzookeeper.properties#在三台主机分别执行如下命令,用于标识zookeeper主机echo1/usr/local/app/kafka_2.11-1.0.0/zookeeperDir/myidecho2/usr/local/app/kafka_2.11-1.0.0/zookeeperDir/myidecho3/usr/local/app/kafka_2.11-1.0.0/zookeeperDir/myidELK集群模式Kafka(zookeeper)集群配置ELK集群模式Kafka(zookeeper)集群配置[elk@localhostconfig]$vimserver.propertiesbroker.id=1#唯一,填数字host.name=192.168.0.101#唯一,填服务器IPprot=9092#这个broker监听的端口log.dir=/data/kafka-logs#该目录可以不用提前创建,在启动时自己会创建zookeeper.connect=192.168.0.101:2181,192.168.0.102:2181,192.168.0.103:2181#这个就是zookeeper的ip及端口zookeeper.connect.timeout.ms=5000num.partitions=16#需要配置较大分片影响读写速度log.dirs=/usr/local/app/kafka_2.11-1.0.0/kafka-logs#数据目录也要单独配置磁盘较大的地方log.retention.hours=168#时间按需求保留过期时间避免磁盘满配置复制到其它kafka服务器,修改ID,IP即可ELK集群模式Kafka(zookeeper)集群配置启动zookeeper#[elk@localhostkafka_2.11-1.0.0]$./bin/zookeeper-server-start.sh./config/zookeeper.properties&#zookeeper启动命令#[elk@loca

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功