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上。

  • 相关阅读:
    UVA 408 (13.07.28)
    linux概念之用户,组及权限
    Java实现 蓝桥杯 历届试题 网络寻路
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 九宫重排
    Java实现 蓝桥杯 历届试题 九宫重排
  • 原文地址:https://www.cnblogs.com/lixiaoran/p/12461028.html
Copyright © 2011-2022 走看看