ELK简介

什么是日志

日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据。

通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。

日志的重要性

日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

我认为,日志数据在以下几方面具有非常重要的作用:

数据查找:通过检索日志信息,定位相应的 bug ,找出解决方案

服务诊断:通过对日志信息进行统计、分析,了解服务器的负荷和服务运行状态

数据分析:可以做进一步的数据分析,比如根据请求中的商品id ,找出 TOP10 用户感兴趣商品。

存在的问题

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

如何解决

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK是一个成熟的日志系统,主要功能有日志的收集、分析、检索。ELK由ElasticSearch、Logstash和Kibana三个开源工具组成。这三个工具组合形成了一套实用、易用的日志管理平台,可抓取系统日志、apache日志、nginx日志、mysql日志等多种日志类型,目前很多公司用它来搭建可视化的集中式日志分析平台。

ELK关系

ELK这三个开源工具的关系,简单来说就是logstatsh 收集日志,存到elasticserach (存储,产生索引,搜索),再由kibana展现(view)。

Elasticsearch:是个开源分布式搜索引擎,提供搜索、分析、存储数据三大功能。它主要负责将logstash抓取来的日志数据索引并存储起来。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。数据以JSON文档的格式存储索引,不需要预先规定范式。

Logstash :主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。其实logstash是可以被别的替换,比如常见的fluented。

Kibana :也是一个开源和免费的工具,Kibana可以为 Logstash 和ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助你汇总、分析和搜索重要数据日志。

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

官方网站:https://www.elastic.co/products

扩展:ElasticSearch和传统数据库的术语对比

ELK 优点

通俗来讲,ELK是由Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK又称为ELK stack,官方域名为stactic.co,ELK stack的主要优点有如下几个:

处理方式灵活: elasticsearch是实时全文索引,具有强大的搜索功能

配置相对简单:elasticsearch全部使用JSON 接口,logstash使用模块配置,kibana的配置文件部分更简单。

检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。

集群线性扩展:elasticsearch和logstash都可以灵活线性扩展

前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。

ELK应用场景

1、分布式部署项目,需要收集日志。

2、微服务架构项目,收集各个服务的日志。

3、大数据行业。

ELK组件在大数据运维系统中,主要可解决的问题如下:

日志查询,问题排查,上线检查

服务器监控,应用监控,错误报警,Bug管理

性能分析,用户行为分析,安全漏洞分析

ELK常见的几种架构体系

Elasticsearch + Logstash + Kibana

此架构由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。

这是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。

Elasticsearch + Logstash + filebeat + Kibana

与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,此种架构将收集端logstash替换为beats,更灵活,消耗资源更少,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。但是这种架构有一个缺点,没有消息队列缓存,当logstash出现故障,会造成日志的丢失。

轻量级日志采集框架Beats,其中包含以下6种:

Elasticsearch + Logstash + filebeat + redis(kafka)+ Kibana

 说明:

logstash节点和elasticsearch节点可以根据日志量伸缩节点数量, filebeat部署在每台需要收集日志的服务器上。

此种架构引入了消息队列机制,位于各个节点上的beats先将数据/日志传递给消息队列(kafka、redis、rabbitMQ等),logstash从消息队列取数据进行过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

注:Beats还不支持输出到消息队列,新版本除外:5.0版本及以上

工作流程:Filebeat采集—>发到kafka—>  logstash处理从kafka缓存的数据进行分析—>  输出到es—>  显示在kibana

多个独立的agent(filebeat)负责收集不同来源的数据,一个中心agent(logstash)负责汇总和分析数据,在中心agent前的Broker(使用kafka/redis实现)作为缓冲区,中心agent后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示。

filebeat表示日志收集,使用filebeat收集各种来源的日志数据,可以是系统日志、文件、redis、mq等等;

Broker作为远程agent与中心agent之间的缓冲区,使用kafka/redis实现,一是可以提高系统的性能,二是可以提高系统的可靠性,当中心agent提取数据失败时,数据保存在kafka/redis中,而不至于丢失;

中心agent也是LogStash,从Broker中提取数据,可以执行相关的分析和处理(Filter);

ElasticSearch用于存储最终的数据,并提供搜索功能;

Kibana提供一个简单、丰富的web界面,数据来自于ElasticSearch,支持各种查询、统计和展示。

这种模式特点:这种架构适合于日志规模比较庞大的情况。但由于 Logstash 日志解析节点和 Elasticsearch 的负荷比较重,可将他们配置为集群模式,以分担负荷。引入消息队列,均衡了网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性。

ELK有两种安装方式

(1)集成环境:Logstash有一个集成包,里面包括了其全套的三个组件;也就是安装一个集成包。

(2)独立环境:三个组件分别单独安装、运行、各司其职。(比较常用)

官网地址

https://www.elastic.co/cn/products/

开源实时日志分析平台—ELK相关推荐

  1. ELK实时日志分析平台环境部署--完整记录

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...

  2. 开源实时日志分析ELK平台部署

    开源实时日志分析ELK平台部署 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷 ...

  3. 开源实时日志分析ELK

    开源实时日志分析ELK 2018-01-04 转自:开源实时日志分析ELK平台部署 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错 ...

  4. 手把手教你搭建 ELK 实时日志分析平台

    来自:武培轩 本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash ...

  5. ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

    ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志. ...

  6. asp.net core结合NLog搭建ELK实时日志分析平台

    0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.介绍ELK 1.说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试 承接上一篇文章的内容准备部署ELK来展示asp ...

  7. ELK(ElasticSearch, Logstash, Kibana)实时日志分析平台部署

    开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成.官方网站:https://www.elastic.co/p ...

  8. Elk实时日志分析平台搭建

    一.   关于ELK实时日志分析平台 A.     Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源 ...

  9. 手把手教你如何快速搭建 ELK 实时日志分析平台

    本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...

最新文章

  1. mysql数据库千万级别数据的查询优化和分页测试
  2. ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别
  3. 微服务架构下,解决数据一致性问题的实践 2
  4. 【存储过程】MySQL存储过程/存储过程与自定义函数的区别
  5. C++与C中const的比较以及const和define的比较
  6. LeetCode 220. 存在重复元素 III(lower_bound)
  7. html画布360图案填充_在Photoshop中创建带有图案的抽象设计
  8. 安装redisclient、redis-cluster,使用redis desktop manager和java(eclipse)连接redis过程遇到问题汇总
  9. 用CNN做NLP文本分类竞赛
  10. asp.net 从客户端中检测到有潜在危险的 Request.Form 值
  11. [POJ3177]Redundant Paths
  12. dijkstra最短路径算法视频_最短路径之Dijkstra算法详细讲解
  13. 南京邮电大学-IP网络技术重难点突破(江凌云老师课程)
  14. 计算机审计实训遇到的问题及解决方法,计算机审计实训总结报告.doc
  15. css鼠标经过字体抖动,jQuery+css3实现文字跟随鼠标的上下抖动
  16. UE4 UMG多行文本
  17. JS中的构造函数的含义和用法
  18. 穿越火线怎么在服务器显示人数,现在穿越火线每天平均有多少人在线?
  19. 美丽中国,我们在行动!
  20. Ubuntu18.04个人常用工具软件

热门文章

  1. Qt4实现TableView显示表格数据
  2. 量化选股策略搭建(二)(数据更新)
  3. Deactivating your reflector
  4. zuul网关找不到服务_Zuul网关服务
  5. Strict-origin-when-cross-origin跨域问题
  6. 枪火游侠显示无法连接服务器,枪火游侠游戏无响应怎么办_枪火游侠玩不了解决方法...
  7. gdb 全局变量被修改_排错经历:全局变量被多次析构
  8. 现有计算机键盘,一种新型计算机键盘的制作方法
  9. 从入门到自闭之Python解释器安装
  10. 聊聊我的成长--数据库初学过程--MySQL的安装与配置