ElasticStack笔记——一看就会

文章目录

      • ElasticStack
          • 1、基础
          • 2、Beats
          • 3、Logstash
          • 4、Elasticsearch
          • 5、Kibana

ElasticStack


1、基础
  1. ElasticStack是由4个部分组成,分别是beats、logstash、elasticsearch和kibana组成。ElasticStack是新的一代叫法,而旧称为ELK。

  2. elasticsearch的相关技术笔记请参考Elasticsearch笔记-es基础版

  3. beats是一个轻量型的数据采集器。用于收集数据。

  4. Logstash是一个数据分析器,用于接收数据并分析转化原数据到可利用的数据。

  5. es是一个分布式的搜索引擎,用于搜索和存储数据

  6. kibana是一个可视化工具,用于展示数据。

    ElasticStack笔记——一看就会_第1张图片

2、Beats

2.1 基础

  1. beats作为数据收集器,有着很重要的作用。原来查看日志,若是分布式部署的应用,则需要去查看每一个pod日志。而beats自动收集之后,就可以在kibana中非常友好的显示并可以搜索,大大的节省了时间,简化操作。

  2. Beats 是一组轻量级采集程序的统称,我们通常常用的几个如下:

    filebeat: 进行文件和目录采集,主要用于收集日志数据。
    metricbeat: 进行指标采集,指标可以是系统的,也可以是众多中间件产品的,主要用于监控系统和软件的性能。
    
    packetbeat: 通过网络抓包、协议分析,对一些请求响应式的系统通信进行监控和数据收集,可以收集到很多常规方式无法收集到的信息。
    Winlogbeat: 专门针对 windows 的 event log 进行的数据采集。
    Heartbeat: 系统间连通性检测,比如 icmp, tcp, http 等系统的连通性监控。
    
  3. 目前我们只关心使用filebeat和metricbeat,前者是采集文件的数据,比如日志数据。后者主要是采集应用的运行指标数据,比如cpu,内存等。

2.2 Filebeat

  1. Filebeat由两个主要组件组成:prospector 和 harvester
    ElasticStack笔记——一看就会_第2张图片

    harvester:
    	负责读取单个文件的内容。
    	如果文件在读取时被删除或重命名,Filebeat将继续读取文件。
    prospector:
    	prospector 负责管理harvester并找到所有要读取的文件来源。
    	如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester。
    	Filebeat目前支持两种prospector类型:log和stdin。
    
  2. Filebeat如何保持文件的状态。总结一句话:filebeats有把读取日志的偏移量记录到文件中。

  • Filebeat 保存每个文件的状态并经常将状态刷新到磁盘上的注册文件中。该状态用于记住harvester正在读取的最后偏移量,并确保发送所有日志行。
  • 如果输出(例如Elasticsearch或Logstash)无法访问,Filebeat会跟踪最后发送的行,并在输出再次可用时继续读取文件。
  • 在Filebeat运行时,每个prospector内存中也会保存的文件状态信息,当重新启动Filebeat时,将使用注册文件的数据来重建文件状态,Filebeat将每个harvester在从保存的最后偏移量继续读取。
  • 文件状态记录在data/registry文件中。
  1. Filebeat读取日志文件,输出到控制台

    filebeat.inputs:
    - type: log
     enabled: true
      paths:
     - /qsm/beats/logs/*.log
    setup.template.settings:
      index.number_of_shards: 3
    output.console:
      pretty: true
      enable: true
    
  2. Filebeat读取文件,输出到Elasticsearch

    # itcast-log.yml
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
         - /itcast/beats/logs/*.log
      tags: ["qsm-im"]
      fields:
        from: qsm-im
      fields_under_root: false
    setup.template.settings:
      index.number_of_shards: 3 #指定索引的分区数
    output.elasticsearch: #指定ES的配置
      hosts: ["192.168.1.7:9200","192.168.1.7:9201","192.168.1.7:9202"]
    
  3. Filebeat由于搜索的时候,读取的是原始数据,有时候需要对数据格式进行拆分为不同的字段。那么既可以使用Filebeat中自带的Module,比如配置nginx module。当然最重要的还是使用logstash进行分析,它处理数据更加强悍。

2.3 Metricbeat

  1. Metricbeat是一个用来收集系统和服务的一些运行指标的。
  2. Metricbeat有2部分组成,一部分是Module,另一部分为Metricset。
    • Module:收集的对象,如:mysql、redis、nginx、操作系统等;
    • Metricset:收集指标的集合,如:cpu、memory、network等;

ElasticStack笔记——一看就会_第3张图片

  1. 默认开启的是手机本机system的系统运作指标

    metricbeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    setup.template.settings:
      index.number_of_shards: 1
      index.codec: best_compression
    setup.kibana:
    output.elasticsearch:
      hosts: ["192.168.40.133:9200","192.168.40.134:9200","192.168.40.135:9200"]
    processors:
     - add_host_metadata: ~
     - add_cloud_metadata: ~
    
3、Logstash
  1. logstash是一个数据分析软件,主要目的是分析log日志,能够对原始数据进行分析,转化为成品数据。比如在filter过程中使用grok正则插件,可以使数据能够转化为具体的字段。

  2. 由于Logstash在数据收集上并不出色,而且作为agent,性能并不达标。elastic发布了beats系列轻量级采集组件。至此,elastic形成了一个完整的生态链和技术栈,成为大数据市场的佼佼者。

  3. logstash架构,分为三个部分:首先是input,中间是filter,最后是output:

    input:设置数据来源
    filter:可以对数据进行一定的加工处理过滤,但是不建议做复杂的处理逻辑。这个步骤不是必须的
    output:设置输出目标
    
  4. Logstash的配置

    input { #输入
    	stdin { ... } #标准输入
    }
    filter { #过滤,对数据进行分割、截取等处理
    	 ...
    }
    output { #输出
    	stdout { ... } #标准输出
    }
    
  5. 输入input数据的来源有很多,可以为日志文件,beats,nginx,mysql等等。

  6. 过滤filter的插件有很多:grok插件用于正则切分nginx的数据等。mutate过滤器可以对数据进行修改,比如重命名,分割split等。

    filter {
      grok {
        match=>{"message"=> "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
      }
    }
    
  7. 输出的地方也有很多,比如控制台,比如es

    input {
     file {
      path => "/itcast/logstash/logs/app.log"
       #type => "system"
      start_position => "beginning"
      }
    }
    filter {
     mutate {
      split => {"message"=>"|"}
     }
    }
    output {
     elasticsearch {
       hosts => [ "192.168.40.133:9200","192.168.40.134:9200","192.168.40.135:9200"]
     }
    }
    
4、Elasticsearch
  1. 一个分布式的全文搜索引擎,也是非关系型数据库。具体笔记可参考Elasticsearch笔记-es基础版。
5、Kibana
  1. Kibana 是一款开源的数据分析和可视化平台

    它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。
    
  2. 与es一起协同工作的配置安装可参考docker安装es和kibana。

  3. kibana提供了非常多是功能,包括数据的可视化,仪表盘的自定义,数据搜索等,还有es的运行监控和开发者工具。

    目录:

    ElasticStack笔记——一看就会_第4张图片

    仪表盘:

    ElasticStack笔记——一看就会_第5张图片

​ 开发者工具:

ElasticStack笔记——一看就会_第6张图片




【暂完】





正在去BAT的路上修行

你可能感兴趣的:(笔记)