• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用Docker搭建ELK日志系统的方法示例
    POST TIME:2021-10-16 17:40

    以下安装都是以 ~/ 目录作为安装根目录。

    ElasticSearch

    下载镜像:

    $ sudo docker pull elasticsearch:5.5.0

    运行ElasticSearch容器:

    $ sudo docker run -it -d -p 9200:9200 -p 9300:9300 \
    
    -v ~/elasticsearch/data:/usr/share/elasticsearch/data \
    
    --name myes elasticsearch:5.5.0

    特别注意的是如果使用v6以上版本会出现jdk的错误,我们查看日志

    $ docker logs -f myes
    

    查看日志:

    OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

    网上找到大概的意思是:

    jdk9对elasticSearch不太友好(版本太新),必须使用JDK8,本人使用的是JDK8u152(jdk-8u152-windows-x64.exe)。如果使用JDK9,使用elasticSearch-rtf(v5.1.1),会出现下面的错误,请特别注意,elasticSearch6.0的版本则必须使用JDK9,否则官网下载的msi不能安装成功,原因还没有去仔细检查。

    所以也是一个很坑爹的问题,所以我干脆直接就安装v5.5.0稳定版本吧。

    Logstash

    下载镜像:

    $ sudo docker pull logstash:5.5.0

    新建配置文件:

    $ mkdir ~/logstash/conf.d && cd logstash/conf.d
    $ vim logstash.conf

    logstash.conf:

    input {
    
     beats {
      port => 5044 # 此端口需要与 filebeat.yml 中的端口相同
     }
    
     file {
      path => "/data/logs"
      # start_position => "beginning"
     }
    }
    
    filter {
     #grok {
     # match => { "message" => "%{COMBINEDAPACHELOG}" }
     #}
     #date {
     # match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
     #}
    
     grok {
    
      patterns_dir => "/etc/logstash/conf.d/patterns"
      match => {"message" => "%{TIMESTAMP_ISO8601:time}\S%{MYSELF:msgid}%{MYSELF:method}%{MYDATA:data}%{MYSELF:UserInfo}\S%{LOGLEVEL:level}\S%{MYSELF:thread}%{MYSELF:application}%{MYSELF:ip}"}
    }
    date {
       #match => [ "time", "YYYY-MM-dd HH:mm:ss,SSS" ]
       match => [ "time", "ISO8601" ]
       target => "@timestamp"
       timezone => "Asia/Phnom_Penh"
     }
    
    }
    
    output {
    
     stdout {
      codec => rubydebug
     }
    
     elasticsearch {
      action => "index"
      hosts => ["172.17.10.114:9200"]
      index => "%{[fields][indexname]}-%{+YYYY.MM.dd}"
     }
    }
    
    

    运行Logstash容器:

    $ sudo docker run -it -d -p 5044:5044 \
    
    -v ~/logstash/conf.d:/etc/logstash/conf.d \
    
    -v ~/logstash/data/logs:/data/logs \
    
    --name logstash logstash:5.5.0 \
    
    -f /etc/logstash/conf.d/logstash.conf
    

    Kibana

    下载镜像:

    $ sudo docker pull kibana:5.5.0

    新建配置文件:

    $ mkdir ~/kibana && cd ~/kibana
    $ vim kibana.yml
    

    kibana.yml:

    server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.url: "http://172.17.10.114:9200"
    

    运行Kibana容器:

    $ sudo docker run -it -d -p 5601:5601 \
    
    -v ~/kibana:/etc/kibana \
    
    --name kibana kibana:5.5.0
    

    Filebeat

    Filebeat需要部署在需要收集日志的服务器上。

    下载镜像:

    $ sudo docker pull docker.elastic.co/beats/filebeat:5.5.0

    新建配置文件:

    filebeat.prospectors:
    - type: log
      paths:
       - ~/filebeat/logs # 指定需要收集的日志文件的路径
    fields:
      indexname: xxx # 这里填写项目名称,对应index => "%{[fields][indexname]}-%{+YYYY.MM.dd}"
    output.logstash:
     hosts: ["172.17.10.114:5044"]
    

    运行Filebeat容器:

    $ sudo docker run -it -d \
    
    -v ~/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
    
    --name filebeat docker.elastic.co/beats/filebeat:5.5.0

    附上一张ELK结构流程图:

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:使用Dockerfile部署nodejs服务的方法步骤
    下一篇:bash命令使用详解
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信