zoukankan      html  css  js  c++  java
  • docker安装ELK

    docker镜像下载


    docker pull docker.elastic.co/logstash/logstash:7.5.1
    docker pull docker.elastic.co/elasticsearch/elasticsearch:7.5.1
    docker pull docker.elastic.co/kibana/kibana:7.5.1 

    创建docker子网络

    docker create network my-net

    启动

    docker run -p 5044:5044 --name logstash --network my-net -d docker.elastic.co/logstash/logstash:7.5.1

    docker run -d -p 9100:9100  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearch --network my-net docker.elastic.co/elasticsearch/elasticsearch:7.5.1

    docker run -p 5601:5601 --name kibana --network my-net -d docker.elastic.co/kibana/kibana:7.5.1

    说明:

    --network my-net  指定刚才创建的子网络

    -d 以daemon形式启动,这种情况不会直接在控制台输出日志

    -p 将端口映射到docker容器外的宿主机

    --name 给容器命名,在子网中该名称可以理解为对应的容器访问域名

    修改logstash配置文件,输出到es中

    docker exec -it logstash bash

    cd  /usr/share/logstash/pipeline/

    vi logstash.conf

    加入红色部分

    input {

      beats {

        port => 5044

      }

    }

     

    output {

      elasticsearch {

        hosts => ["elasticsearch:9200"]

      }

      stdout {

        codec => rubydebug

      }

    }

    重启logstash

    docker restart logstash

    在需要收集日志的应用服务器安装filebeat

    docker pull docker.elastic.co/beats/filebeat:7.5.1

    docker run --name filebeat --network my-net -v /Users/lixiaoran/Documents/filebeat.yml:/usr/share/filebeat/filebeat.yml  -v /Users/lixiaoran/Library/Caches/IntelliJIdea2019.3/tomcat/Unnamed_yzq_2/logs/:/usr/share/filebeat/outlog/  docker.elastic.co/beats/filebeat:7.5.1

    说明:

    -v 将宿主机目录映射到docker容器中,/usr/share/filebeat/outlog/ 日志目录整个目录映射,filebeat.yml配置文件单个文件映射

    修改配置

     

    红色部分是本地的logs目录,橙色部分是logstash接收日志的地址,此处由于在同一个自网络my-net,容器名就是子网络的域名。

    filebeat.inputs:

     

    # Each - is an input. Most options can be set at the input level, so

    # you can use different inputs for various configurations.

    # Below are the input specific configurations.

     

    - type: log

     

      # Change to true to enable this input configuration.

      enabled: true

     

      # Paths that should be crawled and fetched. Glob based paths.

      paths:

        - /usr/share/filebeat/outlog/*

    filebeat.config.modules:

      # Glob pattern for configuration loading

      path: ${path.config}/modules.d/*.yml

     

      # Set to true to enable config reloading

      reload.enabled: true

    output.logstash:

      # The Logstash hosts

      hosts: ["logstash:5044"]

     

    重启filebeat

    docker restart filebeat

    验证

    在本地看kibana,http://localhost:5601/

    成功后,刷新会出现例如:logstash-2020.01.06-000001

    搜索日志

    坑的总结

    1.logstash 7.5.1安装过程中,配置文件目录/usr/share/logstash/pipeline/,网上很多文章写的是/usr/share/logstash/config,其实在config目录配置是无效的。

    2.docker的默认全局内存上限2GB,在安装了4个容器(es,logstash,kibana,filebeat)后,es的cpu占用极高,其实是内存不足导致的,提高到5GB问题解决。下图可以看到,es占用了1.3GB的内存空间,

    es一旦内存不足,就会引发重复的GC过程,导致cpu也快速升高。

    3.上图可以看到filebeat的内存占用非常低,这就是为什么用filebeat在应用服务器例如tomcat,nginx等机器上安装,收集日志,再发送到远程的kafka或者logstash上。

  • 相关阅读:
    mysql #与$的区别
    linux连接mysql
    19年春第十三周学习
    第二阶段冲刺-02
    第二阶段冲刺-01
    19年春第十二周学习
    第一阶段SCRUM冲刺-10
    第一阶段SCRUM冲刺-09
    第一阶段SCRUM冲刺-08
    19年春第十一周学习
  • 原文地址:https://www.cnblogs.com/lixiaoran/p/12461028.html
Copyright © 2011-2022 走看看