SpringCloud微服务实战——搭建企业级开发框架(三十八):搭建ELK日志采集与分析系统

Java44

一套好的日志分析系统可以详细记录系统的运行情况,方便我们定位分析系统性能瓶颈、查找定位系统问题。上一篇说明了日志的多种业务场景以及日志记录的实现方式,那么日志记录下来,相关人员就需要对日志数据进行处理与分析,基于E(ElasticSearch)L(Logstash)K(Kibana)组合的日志分析系统可以说是目前各家公司普遍的首选方案。

  • Elasticsearch: 分布式、RESTful 风格的搜索和数据分析引擎,可快速存储、搜索、分析海量的数据。在ELK中用于存储所有日志数据。
  • Logstash: 开源的数据采集引擎,具有实时管道传输功能。Logstash 能够将来自单独数据源的数据动态集中到一起,对这些数据加以标准化并传输到您所选的地方。在ELK中用于将采集到的日志数据进行处理、转换然后存储到Elasticsearch。
  • Kibana: 免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。在ELK中用于通过界面展示存储在Elasticsearch中的日志数据。

作为微服务集群,必须要考虑当微服务访问量暴增时的高并发场景,此时系统的日志数据同样是爆发式增长,我们需要通过消息队列做流量削峰处理,Logstash官方提供Redis、Kafka、RabbitMQ等输入插件。Redis虽然可以用作消息队列,但其各项功能显示不如单一实现的消息队列,所以通常情况下并不使用它的消息队列功能;Kafka的性能要优于RabbitMQ,通常在日志采集,数据采集时使用较多,所以这里我们采用Kafka实现消息队列功能。
ELK日志分析系统中,数据传输、数据保存、数据展示、流量削峰功能都有了,还少一个组件,就是日志数据的采集,虽然log4j2可以将日志数据发送到Kafka,甚至可以将日志直接输入到Logstash,但是基于系统设计解耦的考虑,业务系统运行不会影响到日志分析系统,同时日志分析系统也不会影响到业务系统,所以,业务只需将日志记录下来,然后由日志分析系统去采集分析即可,Filebeat是ELK日志系统中常用的日志采集器,它是 Elastic Stack 的一部分,因此能够与 Logstash、Elasticsearch 和 Kibana 无缝协作。

  • Kafka: 高吞吐量的分布式发布订阅消息队列,主要应用于大数据的实时处理。
  • Filebeat: 轻量型日志采集器。在 Kubernetes、Docker 或云端部署中部署 Filebeat,即可获得所有的日志流:信息十分完整,包括日志流的 pod、容器、节点、VM、主机以及自动关联时用到的其他元数据。此外,Beats Autodiscover 功能可检测到新容器,并使用恰当的 Filebeat 模块对这些容器进行自适应监测。

软件下载:

因经常遇到在内网搭建环境的问题,所以这里习惯使用下载软件包的方式进行安装,虽没有使用Yum、Docker等安装方便,但是可以对软件目录、配置信息等有更深的了解,在后续采用Yum、Docker等方式安装时,也能清楚安装了哪些东西,安装配置的文件是怎样的,即使出现问题,也可以快速的定位解决。

Elastic Stack全家桶下载主页: https://www.elastic.co/cn/downloads/

我们选择如下版本:

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

JVM的类加载过程

每日一句 人到情多情转薄,而今真个不多情。 每日一句 The frog in the well knows nothing of the great ocean. 井底之蛙,不知大海。 JVM 的类加...
Java

微服务入门之Hystrix

一、分布式系统面临的问题 复杂分布式体系结构中的应用程序有几十个依赖项,每个依赖项在某个时候都会不可避免地失败。[En]An application in a complex distributed ...
Java

elasticsearch

一、什么是Elasticsearch? Lucene是一套用于 全文检索和 搜寻的 开源程序库,由Apache软件基金会支持和提供 Lucene提供了一个简单却强大的应用程序接口(API),能够做全文...
Java

java设计模式

开闭原则:是指一个软件实体如类、模块和函数应该对扩展开放, 对修改关闭 依赖反转原则:指在设计代码结构时,高级模块不应依赖于低级模块,两者都应依赖于它们的抽象而不是具体。[En]Dependency ...
Java

Mac OS 常用Dos命令

MAC DOS常用命令 调出终端 command+空格打开搜索栏,搜索term打开终端 常用操作 ``` clear 清空屏幕内&...
Java

Hexo 博客安装 Fluid 主题

一.主题 使用 hexo 推荐选择一款自己喜欢的主题,主题带有一些额外的功能适配,不需要自己去做,比如评论、友链、访问统计。可以浏览官方网站来选择自己喜欢的主题:https://hexo.io/the...
Java

最简单的JVM内存结构图

JVM内存结构图 大家好,好几天没有更新了,今天的内容有点多,我们详细介绍下JVM内部结构图,还是和之前一样, 案例先行,方便大家理解记忆。 如上代码:在主线程中for循环新建2个线程调用sayHel...
Java

google和oracle闹掰,Java 会不会被抛弃?

眼花缭乱的编程语言 程序界的语言实在太多,但有一种语言不得不说,那就是java语言,Java语言是Android系统的主要开发语言,现在和Google的关系不是很好,但是他会被淘汰吗?下面简单地分析一...
Java

MarkDown 简要语法学习

MarkDown 简要语法学习 标题 +空格显示标题 多个#代表不同级别标题 ,最多不超过6级。 字体 粗体 ** 斜体 * 粗斜体 *** 删除 ~~ 下划线
Java

0.1 + 0.2 == 0.3 吗?

为什么负数要用补码表示? 负数用补码表示的原因主要是为了统一正数的加法和减法运算。毕竟,数字的加法和减法是一种非常常见的运算。不要搞专业化,试着统一运作。[En]The reason why nega...