前言

前几篇我们介绍了项目中如何使用logback组件记录系统的日志情况;现在我们的系统都是分布式的,集群化的,那就代表着**我们的应用会分布在很多服务器上面;**那应用的日志文件就会分布在各个服务器上面。

问题

突然有一天我们系统出现了问题,我们第一时间想到的是先要判断到底哪个服务出现了问题;我们的技术人员就连接生产环境服务器,查看服务器上面的应用日志。

那么多的服务器,技术人员这个时候就会很抓狂,一个个的查看分析日志,是比较愚蠢的方法。那有什么好的方式呢?今天老顾给大家介绍常规的方案。

ELK方案

ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。

ElasticSearch简称ES,它是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。

Logstash是一个具有实时传输能力的数据收集引擎,用来进行数据收集(如:读取文本文件)、解析,并将数据发送给ES

Kibana为 Elasticsearch 提供了分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度表格、图形。

这三款软件都是开源软件,通常配合使用,而且又先后归于http://Elastic.co公司名下

ELK的用途

传统意义上,ELK是作为替代Splunk的一个开源解决方案。Splunk 是日志分析领域的领导者。日志分析并不仅仅包括系统产生的错误日志,异常,也包括业务逻辑,或者任何文本类的分析。而基于日志的分析,能够在其上产生非常多的解决方案,譬如:

1.问题排查。我们常说,运维和开发这一辈子无非就是和问题在战斗,运维和开发能够快速的定位问题,甚至防微杜渐,把问题杀死在摇篮里。日志分析技术显然问题排查的基石。

2.监控和预警。 日志,监控,预警是相辅相成的。基于日志的监控,预警使得运维有自己的机械战队,大大节省人力以及延长运维的寿命。

3.关联事件。多个数据源产生的日志进行联动分析,通过某种分析算法,就能够解决生活中各个问题。比如金融里的风险欺诈等。

4.数据分析。 这个对于数据分析师,还有算法工程师都是有所裨益的。

ElasticSearch介绍

ElasticSearch是一个实时的分布式搜索和分析引擎,采用java语言编写,现在的最新版本已经ElasticSearch7.5.x,他的主要特点如下:

实时搜索、实时分析
分布式架构、实时文件存储
文档导向,所有对象都是文档
高可用,易扩展,支持集群,分片与复制
接口友好,支持json

Logstash介绍

logstash是一款轻量级的、开源的日志收集处理框架,它可以方便的把分散的、多样化的日志收集起来,并进行自定义的过滤分析处理,然后输出到指定的位置(如:es)。

Logstash工作原理

如上图,Logstash的数据处理过程主要包括:Inputs, Filters, Outputs 三部分, 另外在Inputs和Outputs中可以使用Codecs对数据格式进行处理。这四个部分均以插件形式存在,用户通过定义pipeline配置文件,设置需要使用的input,filter,output, codec插件,以实现特定的数据采集,数据处理,数据输出等功能

(1)Inputs:用于从数据源获取数据,常见的插件如file, syslog, redis, beats等
(2)Filters:用于处理数据如格式转换,数据派生等,常见的插件如grok, mutate, drop, clone, geoip等
(3)Outputs:用于数据输出,常见的插件如elastcisearch,file, graphite, statsd等
(4)Codecs:Codecs不是一个单独的流程,而是在输入和输出等插件中用于数据转换的模块,用于对数据进行编码处理,常见的插件如json,multiline

Kibana介绍

Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。

可以用Kibana来搜索,查看,并存储在Elasticsearch索引中的数据进行交互。

可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据

Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的变化。

什么是Filebeat

虽然我们的logstash功能已经非常强大了,里面包含采集,过滤,转换等功能;正因为有很多的功能,导致了它比较耗资源。其实在我们应用服务器端只需要采集日志功能就行了,没有必要logstash其他的功能;所以Filebeat等beat组件就出现了,它们比较小巧,而且不耗资源,也完全够用。

Filebeat是一个轻量级的托运人,用于转发和集中日志数据。Filebeat作为代理安装在服务器上,监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。

Filebeat的工作原理:启动Filebeat时,它会启动一个或多个输入,这些输入将查找您为日志数据指定的位置。对于Filebeat找到的每个日志,Filebeat启动一个收集器。每个收集器为新内容读取单个日志,并将新日志数据发送到libbeat,libbeat聚合事件并将聚合数据发送到您为Filebeat配置的输出。

官方流程图如下:

ELK常见架构

最简单的ELK应用架构

上面架构是简单粗暴的架构,这种架构对数据源服务器(即应用服务器)性能影响较大,因为Logsash是需要安装和运行在需要收集的数据源服务器(即应用服务器)中,然后将收集到的数据实时进行过滤,过滤环节是很耗时间和资源的,过滤完成后才传输到ES中。下面是优化后的架构图:

用filebeat采集日志有效降低了收集日志对业务系统的系统资源的消耗。再通过logstash服务器可以过滤,转换日志。这样即满足了日志的过滤转换,也保障了业务系统的性能。

当然上面的架构中,是支持集群的

如果日志文件量特别大,以及收集的服务器日志比较多;这样架构中需加入消息中间件做一下缓冲

此架构适合大型集群,海量数据的业务场景,消息队列kafka集群架构有效保障了收集数据的安全性和稳定性,而后端logstash和es均采用了集群模式搭建,从整体上提高了ELK的系统的高效性,扩展性和吞吐量。

总结

今天老顾介绍了ELK的基本介绍,带领了我们小伙伴们进入了 Elastic Stack技术栈,也开启了小伙伴们大数据技术的大门。上面介绍的几个技术组件,延展下去会有很多技术点。老顾下面会一一介绍分享给大家,小伙伴们也可以自行上网学习。谢谢!!!

es搜索引擎架构_集群日志收集架构ELK相关推荐

  1. filebeat 收集json格式_集群日志收集架构ELK

    欢迎关注头条号:老顾聊技术 精品原创技术分享,知识的组装工 前言 前几篇我们介绍了项目中如何使用logback组件记录系统的日志情况:现在我们的系统都是分布式的,集群化的,那就代表着我们的应用会分布在 ...

  2. ORACLE集群日志收集,【RAC】Oracle RAC集群环境下日志文件结构

    在Oracle RAC环境中,对集群中的日志的定期检查是必不可少的.通过查看集群日志,可以早期定位集群环境中出现的问题,以便将问题消灭在萌芽状态.简单介绍一下有关Oracle集群环境中日志的结构,方便 ...

  3. 12c集群日志位置_关于Oracle 12c的集群监控(CHM)

    正常情况下,我们有很多工具来监控oracle集群,但是Oracle更建议使用OEM来监视Oracle集群的日常运维工作,使用Cluster Health Monitor (CHM)来监控完整的技术架构 ...

  4. ElasticSearch面试 - es 生产集群的部署架构是什么?

    ElasticSearch面试 - es 生产集群的部署架构是什么? 面试题 es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片? 面试官心理分析 这个问题,包括后面 ...

  5. 分布式 集群 系统组件架构_分布式跟踪系统的四个组件如何一起工作

    分布式 集群 系统组件架构 十年前,基本上只有认真思考分布式跟踪的人是学者和少数大型互联网公司. 如今,对于任何采用微服务的组织来说,它已经变成了赌注. 基本原理是公认的:微服务以令人惊讶且通常是惊人 ...

  6. ElasticSearch_高级_(集群+分片)

    ElasticSearch_高级_(集群+分片) 文章目录 ElasticSearch_高级_(集群+分片) 课程内容 1.spring data elasticsearch 1.1 spring d ...

  7. Kubernetes集群日志详解

    服务器和应用程序日志记录是开发人员.运维人员和安全团队了解应用程序在其生产环境中运行状态的重要工具.日志记录使运维人员能够确定应用程序和所需组件是否运行平稳,并检测是否发生了异常情况,以便他们能够对这 ...

  8. k8s笔记22--使用fluent-bit采集集群日志

    k8s笔记22--使用fluent-bit采集集群日志 1 介绍 2 部署 & 测试 2.1 获取安装 fluent-bit 2.2 直接采集日志到 es 集群 2.3 直接采集日志到 kaf ...

  9. 12c集群日志位置_Oracle 19C RAC 集群日志位置变化

    作者 | JiekeXu 来源 | JiekeXu之路(ID: JiekeXu_IT) 转载请联系授权 | (微信ID:xxq1426321293) 大家好,我是 JiekeXu,很高兴又和大家见面了 ...

  10. JavaEE架构之传统三层架构,集群架构,分布式架构,微服务架构

    javaEE架构 1.传统三层架构(all in one项目) 传统三层架构大致可以分为表现层,业务层和持久层(数据访问层).其中表现层负责接受请求和转发请求.业务层负责处理请求(注:事务管理,日志记 ...

最新文章

  1. rapter求n的阶乘流程图_RAPTOR程序设计例题参考答案
  2. xshell 安装yum_xshell上安装docker
  3. TcpClient和TcpListener 类的使用-编写一个点对点聊天工具(初级入门篇)
  4. 取多补少C语言,leetcode题目: 数字的补数 的C语言解法
  5. 作者:李喜莲(1992-),女,北京大学信息科学技术学院硕士生。
  6. Photoshop cs6中kuler和mini bridge打开是空白的解决方法
  7. TensorFlow中的多线程
  8. jquery 父元素相邻元素_Jquery中几种查找节点的方法
  9. Android 驱动(9)----设备树(一)linux内核主线了解dts
  10. 用户需求说明书_「软件项目管理入门」(21) 需求调研和需求分析怎么做?
  11. 程序员的世界有 10 种人,你是哪一种?
  12. 历史悠久的区块链游戏:麻将
  13. sap erp 消息服务器,九慧信息|SAP_SAP ERP_SAP系统_SAP s/4hana
  14. 超几何分布检验(hypergeometric test)与费歇尔精确检验(fisher's exact test)
  15. lbs云 java_百度 LBS 云使用介绍
  16. asp.net identity 基础概念篇-理解什么是声明
  17. Problem E 寻找最大元素和第二大元素
  18. Apple 基于蓝牙的iBeacon技术
  19. Android9.0对非 SDK 接口的限制
  20. Python小工具-电影天堂爬取电影下载链接

热门文章

  1. 【老孙随笔】想学程序设计,先学人生设计!
  2. 谈谈嵌入式设备用户界面的未来
  3. AS3类库资源大集合
  4. Linux常用命令英文全称
  5. Visio2013里面的大括号
  6. 把word excel ppt 导入到右键快捷菜单中
  7. poi实现百万级数据导出
  8. ArrayList以及List的常用方法
  9. MQTT的学习研究(十)【转】mosquitto——一个开源的mqtt代理
  10. leetcode:Longest Common Prefix【Python版】