Elastic Stack生态圈

 Elastic Stack介绍

      在Elastic Stack之前我们听说过ELK,ELK分别是Elasticsearch,Logstash,Kibana这三款软件在一起的简称,在发展的过程中又有新的成员Beats的加入,就形成了Elastic Stack。

                                     Elastic Stack生态圈

 

在Elastic Stack生态圈中Elasticsearch作为数据存储和搜索,是生态圈的基石,Kibana在上层提供用户一个可视化及操作的界面,Logstash和Beat可以对数据进行收集。在上图的右侧X-Pack部分则是Elastic公司提供的商业项目,X-Pack 是一个Elastic Stack的扩展,将安全,警报,监视,报告和图形功能包含在一个易于安装的软件包中,X-pack监控组件使您可以通过Kibana轻松地监控ElasticSearch,可以实时查看集群的健康和性能,以及分析过去的集群、索引和节点度量,下图就是X-pack在Kibana上,专门的仪表板监控数据

 

Elastic Stack的组成部分

  1. Logstash

              是开源的服务器端数据收集管道,支持从不同的数据源采集数据,转换数据,最后将数据发送到不同的存储库中。后被Elastic公司在2013年收购,成为Elastic公司里专处理数据管道的部分。

    Logstash具有如下特性:

      1)可以实时解析和转换数据,比如从IP地址转换出地理坐标,将PII数据匿名话,排除一些敏感字段。

      2)可扩展,拥有可扩展的插件生态系统,目前市面上具有200多个插件(日志/数据库/Archsigh/Netflow)。

      3)可靠性、安全性。Logstash会通过持久化队列来保证至少将运行中的事件送达一次,同时将数据进行传输加密。

      4)监控。

 

       2. Kibana

              Kibana是一款数据可视化工具,最早是基于Logstash来创建的一个工具,在2013年时候也是被Elastic公司收购。目前Kibana最常用就是以图表的形式呈现数据,并且具有可扩展的用户界面,配置和管理ElasticSearch。

    Kibana特点:

         1)Kibana可以提供各种可视化的图表;

         2)可以通过机器学习的技术,对异常情况进行检测,用于提前发现可疑问题;

   3. ElasticSearch:

    ElasticSearch是对数据进行搜索、分析和存储,其是基于JSON的分布式搜索和分析引擎,专门为实现水平可扩展性、高可靠性和管理便捷性而设计的。

    它的实现原理主要分为以下几个步骤:

 

      1)首先用户将数据提交到ElasticSearch数据库中;

 

      2)再通过分词控制器将对应的语句分词;

 

      3)将分词结果及其权重一并存入,以备用户在搜索数据时,根据权重将结果排名和打分,将返回结果呈现给用户;

 

 

 docker中运行ElasticSearch Kibana及Cerebro

    cerebro是ElasticSearch一款监控工具,它的github地址:https://github.com/lmenezes/cerebro/releases。下吗使用docker及docker-compose来安装这些软件。

    docker-compose.yaml文件内容如下

version: '2.2'
services:
  cerebro:
    image: lmenezes/cerebro:0.8.3
    container_name: cerebro
    ports:
      - "9000:9000"
    command:
      - -Dhosts.0.host=http://elasticsearch:9200
    networks:
      - es7net
  kibana:
    image: docker.elastic.co/kibana/kibana:7.1.0
    container_name: kibana7
    environment:
      - I18N_LOCALE=zh-CN
      - XPACK_GRAPH_ENABLED=true
      - TIMELION_ENABLED=true
      - XPACK_MONITORING_COLLECTION_ENABLED="true"
    ports:
      - "5601:5601"
    networks:
      - es7net
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    container_name: es7_01
    environment:
      - cluster.name=geektime
      - node.name=es7_01
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.seed_hosts=es7_01,es7_02
      - cluster.initial_master_nodes=es7_01,es7_02
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - es7data1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - es7net
  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    container_name: es7_02
    environment:
      - cluster.name=geektime
      - node.name=es7_02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.seed_hosts=es7_01,es7_02
      - cluster.initial_master_nodes=es7_01,es7_02
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - es7data2:/usr/share/elasticsearch/data
    networks:
      - es7net


volumes:
  es7data1:
    driver: local
  es7data2:
    driver: local

networks:
  es7net:
    driver: bridge

在本地环境一个空目录中,创建上面这个 docker-compose.yaml文件,然后在执行命令docker-compose up 来启动容器。

 启动好之后,我们在浏览器输入 http://localhost:5601/  来访问Kibana。

 

在输入http://localhost:9000/ 来访问cerebro。

 登陆进去之后展示的就是cerebro的管理界面。

 

 下面在安装Logstash,这里我之前一篇文章有写关于Logstash的使用与安装 https://www.cnblogs.com/songgj/p/11183566.html,安装好之后在MovieLens上下载一些测试数据来填充到Elasticsearch中,

  (MovieLens数据集包含多个用户对多部电影的评级数据,也包括电影元数据信息和用户属性信息。)

 MovieLens地址 https://grouplens.org/datasets/movielens/

  

 

posted @ 2019-06-02 15:48  songguojun  阅读(247)  评论(0编辑  收藏  举报