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加在一起消耗的资源过多,日志系统没有那么多数据量的话就可以不用搭建这套系统。

  • 相关阅读:
    金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?
    分析占用了大量 CPU 处理时间的是Java 进程中哪个线程
    阿里巴巴首部记录片问世:看哭所有创业者!
    【LBS】基于地理位置的搜索之微信 附近的人 简单实现
    【Linux】Linux 常用命令汇总
    【心灵鸡汤】为什么我会去云平台讲课
    【Mysql数据库访问利器】phpMyadmin
    【Java】一台服务器配置多个Tomcat
    tp5, laravel, yii2我该选择哪个
    网站升级2.0回滚机制
  • 原文地址:https://www.cnblogs.com/Yemilice/p/10119909.html
Copyright © 2011-2022 走看看