使用Docker搭建ELK日志系统的方法示例

2025-05-27 0 82

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

ElasticSearch

下载镜像:

?

1
$ sudo docker pull elasticsearch:5.5.0

运行ElasticSearch容器:

?

1

2

3
$ 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的错误,我们查看日志

?

1
$ 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

下载镜像:

?

1
$ sudo docker pull logstash:5.5.0

新建配置文件:

?

1

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

$ vim logstash.conf

logstash.conf:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46
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容器:

?

1

2

3

4

5
$ 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

下载镜像:

?

1
$ sudo docker pull kibana:5.5.0

新建配置文件:

?

1

2
$ mkdir ~/kibana && cd ~/kibana

$ vim kibana.yml

kibana.yml:

?

1

2

3
server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://172.17.10.114:9200"

运行Kibana容器:

?

1

2

3
$ sudo docker run -it -d -p 5601:5601 \\

-v ~/kibana:/etc/kibana \\

--name kibana kibana:5.5.0

Filebeat

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

下载镜像:

?

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

新建配置文件:

?

1

2

3

4

5

6

7

8
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容器:

?

1

2

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

使用Docker搭建ELK日志系统的方法示例

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

原文链接:http://objcoding.com/2019/01/23/elk/

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 使用Docker搭建ELK日志系统的方法示例 https://www.kuaiidc.com/67705.html

相关文章

发表评论
暂无评论