开源实时日志分析平台-ELK

1、 ELK简介
1.1、 ELK
Elasticsearch + Logstash + Kibana(ELK)是一套开源的日志管理方案,分析网站的访问情况时我们一般会借助Google/百度等方式嵌入JS做数据统计,但是当网站访问异常或者被攻击时我们需要在后台分析如Nginx的具体日志,而Nginx日志分割/GoAccess/Awstats都是相对简单的单节点解决方案,针对分布式集群或者数据量级较大时会显得心有余而力不足,而ELK的出现可以使我们从容面对新的挑战。
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量再去使用这些方法就比较的麻烦了。
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成
1.2、 ELK 优点
ELK Stack 在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,ELK Stack 具有如下几个优点:
处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。
1.3、 Elasticsearch
1.3.1、 Elasticsearch简介
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene™ 基础上的分布式的,高可用的,基于json格式的数据构建索引,准实时查询的搜索引擎。Lucene 是当今最先进最高效的全功能开源搜索引擎框架,但是Lucene使用非常复杂。
Elasticsearch使用 Lucene 作为内部引擎,但是在你使用它做全文搜索时,只需要使用统一开发好的API即可,而并不需要了解其背后复杂的 Lucene 的运行原理。
Elasticsearch为去中心化的分布式架构,由若干节点组成集群。节点中没有固定的主控角色,可以灵活伸缩规模。集群中每台服务器通常只需部署一个Elasticsearch节点,每个节点可以将本机的所有数据盘用于存储索引数据。
1.3.2、 API、XML、JSON
在这里插入图片描 有了API就可以更好的调用和使用。XML为什么会被丢弃,因为XML文件格式比较庞大,而且不容易解析,不同浏览器之间解析XML又不一样,而且现在微博,等web端的应用,XML越来越跟不上时代的发展。所以现在开始用轻量级的JSON述 有了API就可以更好的调用和使用。XML为什么会被丢弃,因为XML文件格式比较庞大,而且不容易解析,不同浏览器之间解析XML又不一样,而且现在微博,等web端的应用,XML越来越跟不上时代的发展。所以现在开始用轻量级的JSON

1.3.3、 RESTFUL的解释
Elasticsearch是可伸缩的。一个采用RESTFUL api 标准的高扩展性和高可用性的实时数据分析的全文搜索工具。
REST全称是Representational State Transfer,中文意思是表现层状态转化。它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。
1.表现层:代表资源,比如说一段文本,一部电影,每个资源都有一个ID来表示,这个ID成为我们的URL。每个资源仅代表一个信息,一个信息又可以用很多种形式来表示,比如文字,有txt ,word格式
2.状态转化:客户端想要访问服务器,必须要通过某些手段与服务器进行交互,交互的过程又是基于表现层的。这里的某些手段指的是,GET用来获取资源,post 用来新建资源,PUT 用来更新资源,delete删除资源。
高扩展性体现在拓展非常简单,Elasticsearch新的节点,基本无需做复杂配置,自动发现节点。
高可用性,因为这个服务是分布式的,而且是一个实时搜索平台,支持PB级的大数据搜索能力。从一个文档到这个文档被搜索到,只有略微的延迟,所以说他的实时性非常高。
RESTful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
1.3.4、 Elasticsearch的一些基本概念
节点(Node) - 一个Elasticsearch运行的实例。
集群(Cluster) - 具有同一集群名称的节点组成的分布式集群。
索引(Index) - 一个日志记录的集合,类似数据库。须要注意的是索引的名称不能有大写字母。
切片(Shard) - 每个索引的数据可以划分成若干切片,不同切片会被存储到不同的节点上以实现客户端读写条带化。
副本(replica) - 切片的数据冗余,和切片主体的内容相同,保证数据安全和高可用。
你可以把elasticearch当做一个数据库,来对比下与其他数据库的不同,elasticseach是非关系型数据库。
在这里插入图片描述
1.3.5、 Elasticseach架构
在这里插入图片描述
gateway:elasticsearch支持的索引数据的存储格式,当这个elasticsearch关闭再启动的时候,他就会从gateway里面读取索引数据。本地的,分布式,亚马逊的S3
第二行是lucene的框架
第三行:对数据的加工处理方式,创建index模块,search Module(搜索模块),
Mapping(映射)是定义文档及其包含的字段是如何存储和索引的过程
例如,我们用映射来定义:
哪些字符串字段应该被当做全文字段
哪些字段包含数字、日期或地理位置
是否应该将文档中所有字段的值索引到catch-all字段中
river代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中。
第四行:
左边第一块是elasticsearch自动发现节点的机制。
zen 用来实现节点自动发现的,加入master发生故障,其他的节点就会自动选举,来确定一个master。
中间,方便对查询出来的数据进行数据处理。
最右边:插件识别,中文分词插件,断点监控插件
倒数第二层,是交互方式,默认是用httpd协议来传输的。
最顶层右边是说可以使用java语言,本身就是用java开发的
1.4、 Logstash
logstash是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。其实logstash是可以被别的替换,比如常见的fluented.
Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储到elasticsearch供以后使用(如,搜索)。
1.5、 Kibana
Kibana是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。也是一个开源和免费的工具,可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
1.6、 ELK架构
在这里插入图片描述
在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper托运人)用于监控并过滤收集日志,将过滤后的内容发送到logstash indexer(索引器),logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示
1.7、 ELK有两种安装方式
(1)集成环境:Logstash有一个集成包,里面包括了其全套的三个组件;也就是安装一个集成包。
(2)独立环境:三个组件分别单独安装、运行、各司其职。(比较常用)
1.8、 ELK常见的几种架构
1.8.6、 Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。
1.8.7、 Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。
轻量级日志采集框架Beats,其中包含以下6种:
1.8.8、 Elasticsearch + Logstash + filebeat + redis(kafka)
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。传统web项目中,经常使用log4j以及logback(性能更高)等成熟日志插件进行日志的记录,日志采集新增Logback直接发送日志到Logstash的形式。如果采用此方式,web服务可减少部分生成log文件配置,提高实时性和日志推送效率。架构图:
在这里插入图片描述

说明: logstash节点和elasticsearch节点可以根据日志量伸缩节点数量, filebeat部署在每台需要收集日志的服务器上。
1.9、 官网地址
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值