ELK概述

作者: 快去学习不然怎么去看aimer | 来源:发表于2019-11-20 19:51 被阅读0次

    ELK来历

    ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为ELK协议栈

    ELK中各软件作用

    Elasticsearch

    Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene基础上的搜索引擎,使用Java语言编写
    主要特点:
    1.实时分析
    2.分布式实时文件存储,并将每一个字段都编入索引
    3.文档导向,所有的对象全部是文档
    4.高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas),支持 JSON

    logstash

    Logstash 是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写.
    主要特点:
    1.几乎可以访问任何数据
    2.可以和多种外部应用结合
    3.支持弹性扩展

    logstash的组成:
    1.Shipper-发送日志数据
    2.Broker-收集数据,缺省内置 Redis
    3.Indexer-数据写入

    Kibana

    Kibana是一款基于 Apache开源协议,使用 JavaScript语言编写,为 Elasticsearch提供分析和可视化的 Web 平台。它可以在Elasticsearch的索引中查找,交互数据,并生成各种维度的表图.

    Filebeat

    ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder源代码开发,是对它的替代。在需要采集日志数据的 server 上安装Filebeat,并指定日志目录或日志文件后,Filebeat就能读取数据,迅速发送到Logstash进行解析,亦或直接发送到 Elasticsearch进行集中式存储和分析。

    因此,最新的ELK的架构应为:


    ELK架构.png

    Elasticsearch

    修改文件/etc/sysctl.conf

    #添加或修改
    vm.max_map_count=2621444
    #重新加载该文件
    sysctl -p 
    

    单独启动elasticsearch

    docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.4.2
    

    谷歌浏览器添加插件ElasticSearch Head


    ElasticSearch Head.png

    Filebeat + Logstash + elasticsearch + kibana搭建简单日志收集系统

    image.png

    docker-compose.yaml

    version: "3.2"
    services: 
      elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
        networks:
          - "elk-net"
        container_name: elasticsearch
        ports:
          - "9200:9200"
        environment:
          - discovery.type=single-node
          - bootstrap.memory_lock=true
    
      filebeat: 
        container_name: filebeat
        image: docker.elastic.co/beats/filebeat:7.4.2
        networks:
          - "elk-net"
        volumes:
          - type: bind
            source: "./Filebeat/app.log"
            target: "/app.log"
          - type: bind
            source: "./Filebeat/filebeat.yml"
            target: "/usr/share/filebeat/filebeat.yml" 
        depends_on:
          - "logstash"
    
      logstash:
        container_name: logstash
        image: docker.elastic.co/logstash/logstash:7.4.2 
        volumes:
          - type: bind
            source: "./logstash/logstash_stdout.conf"
            target: "/usr/share/logstash/pipeline/logstash.conf" 
        networks:
          - "elk-net"
        depends_on:
          - "elasticsearch"
          
      kibana:
        container_name: kibana
        image: docker.elastic.co/kibana/kibana:7.4.2
        networks:
          - "elk-net"
        ports:
          - "5601:5601"
        depends_on:
          - "elasticsearch"  
      
    networks:
      elk-net:
    

    filebeat.yaml

    filebeat.config:
      modules:
        path: ${path.config}/modules.d/*.yml
        reload.enabled: false
    
    processors:
    - add_cloud_metadata: ~
    
    #output.elasticsearch:
    #  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
    #  username: '${ELASTICSEARCH_USERNAME:}'
    #  password: '${ELASTICSEARCH_PASSWORD:}
    
    
    filebeat.inputs:
    - type: log
      paths:
        - /*.log
    
    output.logstash:
      hosts: ["logstash:5044"]
    
    #将收集到的日志信息打印到终端
    #output.console:
    #pretty: true
    

    logstash_stdout.conf

    input {
      beats {
        port => 5044
        host => "0.0.0.0"
      }
    
    }
    output {
      elasticsearch {
        hosts => ["elasticsearch:9200"] 
        manage_template => false
        index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
      }
      # stdout { codec => rubydebug }  # 假如有问题,可以打开此行进行调试
    }
    

    相关文章

      网友评论

        本文标题:ELK概述

        本文链接:https://www.haomeiwen.com/subject/xlqoictx.html