使用Docker搭建ELK日志系统

栏目: 编程工具 · 发布时间: 5年前

内容简介:以下安装都是以 ~/ 目录作为安装根目录。下载镜像:运行ElasticSearch容器:

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

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结构流程图:

使用 <a href='https://www.codercto.com/topics/20577.html'>Docker</a> 搭建ELK日志系统


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

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

代码整洁之道:程序员的职业素养

代码整洁之道:程序员的职业素养

罗伯特·C.马丁 (Robert C.Martin) / 余晟、章显洲 / 人民邮电出版社 / 2016-9-1 / 49.00元

1. 汇聚编程大师40余年编程生涯的心得体会 2. 阐释软件工艺中的原理、技术、工具和实践 3. 助力专业软件开发人员具备令人敬佩的职业素养 成功的程序员在以往的工作和生活中都曾经历过大大小小的不确定性,承受过永无休止的压力。他们之所以能够成功,是因为拥有一个共同点,都深切关注创建软件所需的各项实践。他们将软件开发视为一种需要精雕细琢加以修炼的技艺,他们以专业人士的标准要求自己,......一起来看看 《代码整洁之道:程序员的职业素养》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具