• ELK 架构


    首先在这里讲一下ELK系统的运转流程

    以下是各数字代表箭头的含义:

    (1)第1、2步代表使用FileBeat获取Tomcat服务器上的日志。当启动Filebeat时,它将启动一个或多个prospectors (检测者),查找Tomcat上指定的日志文件,作为日志的源头等待输出到Logstash。

    (2)第3步代表Logstash从FileBeat获取日志文件。Filebeat作为Logstash的输入input将获取到的日志进行处理(FileBeat其实就是Logstash的一个输入插件beats,具体的处理过程后边学习),将处理好的日志文件输出到Elasticsearch进行处理。

    (3)第4步代表Elasticsearch得到Logstash的数据之后进行相应的搜索存储操作。将写入的数据可以被检索和聚合等以便于搜索操作。

    (4)第5代表Kibana 通过Elasticsearch提供的API将日志信息可视化的操作。

    上述的1-5步骤中,我们可以看出一个Tomcat服务器产生的日志文件,如何由ELK系统获取,传输,处理,存储,可视化等操作的。

    ELK系统这三个程序的瓶颈在日志传输 logstash 上,下面分析一下logstash优缺点

    优势

    Logstash 主要的优点就是灵活性,有很多插件,清楚的文档,直白的配置格式多种场景下应用。
    几乎可以处理任何问题。

    劣势

    Logstash 致命的问题是它的性能以及资源消耗(默认的堆大小是 1GB)。尽管它的性能在近几年已经有很大提升,
    与它的替代者们相比还是要慢很多的。它在大数据量的情况下会是个问题。

    另一个问题是它目前不支持缓存,目前的典型替代方案是将 Redis 或 Kafka 作为中心缓冲池:

    针对logstash这里有几种典型方案

    • 在不考虑服务器资源的情况下,如果服务器的性能足够好,我们也可以为每台服务器安装 Logstash 。我们也不需要使用缓冲,因为文件自身就有缓冲的行为,而 Logstash 也会记住上次处理的位置。


    • 如果服务器性能较差,并不推荐为每个服务器安装 Logstash ,这样就需要一个轻量的日志传输工具(Filebeat)
      将数据从服务器端经由一个或多个 Logstash 中心服务器传输到 Elasticsearch:



    • 在版本 5.x 中,Elasticsearch 具有解析的能力(像 Logstash 过滤器)— Ingest。这意味着可将数据直接用 Filebeat 推送到 Elasticsearch,

              并让 Elasticsearch 既做解析的事情,又做存储的事情。也不需要使用缓冲,因为 Filebeat 也会和 Logstash 一样记住上次读取的偏移:

                 

    • 如果需要缓冲(例如,不希望将日志服务器的文件系统填满),可以使用 Redis/Kafka,因为 Filebeat 可以与它们进行通信。
      这样能够减少日志在服务端的积压,把压力转移到ELK系统服务器上。由于redis是内存系统所以响应速度很快,而且可以在redis后添加多个消费系统(Logstash),
      来扩展消费能力,增强处理速度。



      关于Filebeat

      优势

      Filebeat 只是一个二进制文件没有任何依赖。它占用资源极少,几乎没有什么可以出错的地方,所以它的可靠性还是很高的。
      它也为我们提供了很多可以调节的点,
      例如:它以何种方式搜索新的文件,以及当文件有一段时间没有发生变化时,何时选择关闭文件句柄。

      劣势

      Filebeat 的应用范围有限,所以在某些场景下会碰到问题。
      例如,使用 Logstash 作为下游管道,同样会遇到性能问题。
      正因为如此,Filebeat 的范围在扩大。开始时,它只能将日志发送到 Logstash 和 Elasticsearch,
      而现在它可以将日志发送给 Kafka 和 Redis,
      在 5.x 版本中,它还具备过滤的能力。

      典型应用场景

      Filebeat 在解决某些特定的问题时:例如服务器日志存于服务器上,我们希望

      • 将日志直接传输存储到 Elasticsearch。这仅在我们只是抓去(grep)它们或者日志是存于 JSON 格式(Filebeat 可以解析 JSON)。
        或者如果打算使用 Elasticsearch 的 Ingest 功能对日志进行解析和丰富。
      • 将日志发送到 Kafka/Redis。所以另外一个传输工具(例如,Logstash 或自定义的 Kafka 消费者)可以进一步丰富和转发。这里假设选择的下游传输工具能够满足我们对功能和性能的要求。

    各程序端口

    Kibana              5601             前台界面

    Elasticsearch   9200              搜索

    Logstash           5044            日志传输

  • 相关阅读:
    引用dll文件要提交解决方案
    设置dateBox初始日期为当前日期
    Java基础之线程并发协作(生产消费者模式)
    Java基础之线程的交互
    Java基础之线程synchronized关键字
    Java基础之线程阻塞
    Java基础之线程的两种实现方式
    Java Eclipse代码注释和快捷键
    Java基础之数组
    列出一些你常见的运行时异常?
  • 原文地址:https://www.cnblogs.com/centos2017/p/8760161.html
Copyright © 2020-2023  润新知