zoukankan      html  css  js  c++  java
  • Elasticsearch的几种架构(ELK,EL,EF)性能对比测试报告

    Elasticsearch的几种架构性能对比测试报告

    1.前言

    选定了Elasticsearch作为存储的数据库,但是还需要对Elasticsearch的基础架构做一定测试,所以,将研究测试报告输出如下。

    2.日志系统架构的基础

    2.1所需环境和依赖软件

    1)Elasticsearch分布式存储数据库,用于存储产生的日志,是架构和系统的核心所在。

    2)Filebeat轻量级日志收集器,可以自动将日志发送至Es或者logstash

    3)Logstash日志收集/清洗工具,将日志过滤,清洗后可以放入Es,并且可以减缓Es的访问压力,控制写入速度

    2.2日志系统架构的基本思想

    日志系统中,读写功能应该是最重要和最需要优化的地方,在不断的有日志写进和读取的情况下,我们需要做到如下几点:

    1)缓解Es的读写压力

    2)降低日志系统资源占比

    3)能够处理日志系统一般的异常情况(如宕机等)

    4)提高日志系统的健壮性和可用性

    3.日志架构的对比评测

    3.1测试环境

     机器环境

      机器内存

     机器CPU

     机器IP

     Centos7

         6G

         4

    10.0.6.244

     Centos7

         6G

         4

    10.0.6.247

      服务名

      版本

     包大小

    Elasticsearch 

      6.3.2

      91M

      filebeat

      6.5.1

      11M

      logstash

      6.5.1

      161M

    3.2单纯的Elasticsearch 集群

    不需要任何转发日志,缓存日志服务。直接接入Esapi写入日志,没有中间层,直接访问Es,读写都是如此。详细如下图:

     

    直接通过封装好的Es_api进行数据读写,在上层将数据进行清洗或者是处理之后写入Es

    测试分别导入500,1000,10000条数据。

    Elasticsearch占用资源和系统压力如下:

    导入数据

     Es占用内存

     Es占用CPU

       导入时间

       500条日志

     22.3%(占用)

    2.3%

    1-3S

      1000条日志

     22.6%(占用)

      2.3%-12%

    2-6S

     10000条日志

     22.9%(占用)

      2.3%-40%

     9S

    适用场景:日志不多,但是需要分布式的系统,一万条数据存储的index大概是1.3M,两台机器就是2.6M

    优点:

    方便,开箱可用,模块已经写好了,直接上就可以,不需要其他依赖。数据格式可控。输出方便。

    缺点:

    这种架构忽略了宕机和分片损坏的情况,如果宕机的话,Es选举节点时无法导入数据,这样会造成数据丢失。在机器资源不足的情况下,导入大规模数据的时候Es会卡死。需要在代码层做处理,例如分批导入或者设置最大的导入数据值,增加代码冗余量。

    3.3 Elasticsearch 搭配 filebeat

    什么是Filebeat

    Filebeat是一个日志收集器,Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。

    FIlebeat如何工作:

    当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。

    通过filebeat的机制,将指定日志的log文件自动收集然后发送到Es中。中间不会直接对接Es接口,可以指定传输进Es的条数。可以指定日志。

    详细逻辑如下图:

    Filebeat可以将日志转发给logstash或者Es

    测试导入数据:

    导入数据

     Es占用内存

     Es占用CPU

     Filebeats内存

       导入时间

       500条日志

     22.3%(占用)

    2.3%

    1.32%

    1-2S

      1000条日志

     22.6%(占用)

      2.3%-10%

    3.47%

    2-4S

     10000条日志

     22.9%(占用)

      2.3%-20%

     6.7%

    7-12S

    适用场景:

    数据量大,日志数量多,服务器资源有限的分布式日志系统。

    原理和架构逻辑:

    通过Filebeat这个日志生成器从指定的日志文件进行日志收集,收集到日志文件之后,将日志文件传输至logstash或者Elastaticsearch,并且FIlebeat有智能判断,可以断点续传,可以从上次断掉的位置继续接力传输,只要log文件在更新,那么Filebeat的传输将不会停止。

    优点:

    断点续传,直接输入Es,速度快,避免直接写入Es造成服务器压力过大,资源占用小,可以做简单的分类。可以指定每次传入条数等。

    缺点:

    不能进行数据清洗,数据杂乱,只能做简单的日志传输器用。

    3.4 Elasticsearch 搭配logstash

    什么是logstash

    Logstash 是一个轻量级、开源的服务器端数据处理管道,允许各种来源收集数据,进行动态转换,并将数据发送到希望的目标。它最常用作 Elasticsearch 的数据管道,Elasticsearch 是一个开源分析和搜索引擎。由于它与 Elasticsearch 紧密集成,具备强大的日志处理功能并提供 200 多个预构建的开源插件来索引数据,因此 Logstash 是将数据加载到 Elasticsearch 的常用工具。

    Logstash的工作原理:

    Logstash 内部也是管道的方式进行数据的搜集、处理、输出。在 Logstash 中,包括了三个阶段:

    输入 input --> 处理 filter(不是必须的) --> 输出 output

    每个阶段都由很多的插件配合工作,比如 fileelasticsearchredis 等等。

    每个阶段也可以指定多种方式,比如输出既可以输出到 Elasticsearch 中,也可以指定到 stdout 在控制台打印。

    Logstash的工作逻辑如下图:

     

    测试导入数据:

    导入数据

     Es占用内存

     Es占用CPU

     logstash内存

       导入时间

       500条日志

     23%(占用)

    1.0%

    11.4%

    1-2S

      1000条日志

     23.2%(占用)

      2.3%-13%

    16.3%

    10-22S

     10000条日志

     22.9%(占用)

      5%-32%

    17.2%

    30-33S

     

    Logstash优点

        1.可伸缩性

        2.节拍应该在一组Logstash节点之间进行负载平衡。

        3.建议至少使用两个Logstash节点以实现高可用性。

        4.每个Logstash节点只部署一个Beats输入是很常见的,但每个Logstash节点也 可以部署多个Beats输入,以便为不同的数据源公开独立的端点。

        5.弹性:Logstash持久队列提供跨节点故障的保护。对于Logstash中的磁盘级弹 性,确保磁盘冗余非常重要。    

    6.可过滤:对事件字段执行常规转换。可以重命名,删除,替换和修改事件中的 字段。可扩展插件生态系统,提供超过200个插件,以及创建和贡献自己的灵活 性。

    Logstash缺点

    Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数 据丢失隐患。Logstash设置jvm小了启动很慢或者会启动失败。

    3.5 Elasticsearch 搭配logstashFilebeat

    架构图如下所示:

     

    这种架构在日志数据源和 Logstash(或 Elasticsearch) 中增加了 Beats Beats 集合了多种单一用途数据采集器,每款采集器都是以用于转发数据的通用库 libbeat 为基石,beat 所占的系统CPU和内存几乎可以忽略不计,libbeat平台还提供了检测机制,当下游服务器负载高或网络拥堵时,会自动降低发生速率

    流程图:

    Filebeat将日志发送给Logstash进行分析和过滤,然后由Logstash转发给Elasticsearch

    优点:

    全面,稳定,在网络阻塞的情况下可以很方便的处理问题,让日志不至于丢失。

    缺点:

    占用过大内存,消耗过多资源,Es+logstash加在一起消耗的资源过多,日志系统没有那么多数据量的话就可以不用搭建这套系统。

  • 相关阅读:
    Python 集合
    Python sorted()
    CodeForces 508C Anya and Ghosts
    CodeForces 496B Secret Combination
    CodeForces 483B Friends and Presents
    CodeForces 490C Hacking Cypher
    CodeForces 483C Diverse Permutation
    CodeForces 478C Table Decorations
    CodeForces 454C Little Pony and Expected Maximum
    CodeForces 313C Ilya and Matrix
  • 原文地址:https://www.cnblogs.com/Yemilice/p/10119909.html
Copyright © 2011-2022 走看看