把ELK和springboot的日志解决方案弄明白

日志监控方案

日志对我们进行系统故障定位具有关键的作用。我们的框架代码、系统环境及业务逻辑中一般都会产出一些日志,我们通常会把这些日志记录后统一收集起来,方便在需要的时候进行查询检索。ELK是目前开源领域比较流行且成熟的一站式日志解决方案。

日志采集方案

日志采集的代理端(Agent)其实就是一个将数据从源端投递到目的端的程序。我们会使用一个具备数据订阅功能的中间件作为日志采集、分析、存储的中间管道,来实现解耦的功能。目前业界比较流行的日志采集解决方案主要有Flume、Logstash、FileBeat和Fluentd

等。

Flume

Flume是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输系统。Flume支持在日志系统中定制各类数据发送方,它可以收集数据。Flume提供对数据进行简单处理并写入各种数据接收方(如文本 、 HDFS 、 HBase 等 ) 的 能 力 。 Flume 的 核 心 是 把 数 据 从 数 据 源(Source)收集过来,再将收集的数据送到指定的目的地(Sink)。

为了保证输送过程一定成功,在送到目的地之前,会先缓存数据到管道(Channel),待数据真正到达目的地后,Flume再删除缓存的数据,整个流程如下图所示。

把ELK和springboot的日志解决方案弄明白_第1张图片

Flume的数据流由事件(Event)贯穿始终,事件是将传输的数据进行封装而得到的,是Flume传输数据的基本单位。如果是文本文件,则事件通常是一行记录。事件携带日志数据,并且携带头信息,这些事件由Agent外部的数据源生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。Channel可以看作一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。

Logstash

Logstash是一个分布式日志收集框架,开发语言是JRuby,经常与Elasticsearch、Kibana配合使用,组成著名的ELK技术栈。

Logstash非常适合做日志数据的采集,既可以采用ELK组合使用,也可以作为日志收集软件单独出现。Logstash单独出现时可将日志存储到多种存储系统或临时中转系统,如MySQL、Redis、Kafka、HDFS、Lucene、Solr等,并不一定是Elasticsearch。

Logstash的设计非常规范,它有三个组件。因为架构比较灵活,所以如果不想用Logstash存储,也可以对接到Elasticsearch,这就是前面所说的ELK了。Logstash的采集过程如下图所示。

你可能感兴趣的:(数据库,中间件,java)