小知识:使用Docker搭建ELK日志系统的方法示例

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

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日志系统的方法示例-猿站网-插图

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

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

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Docker大型项目容器化改造

2023-4-4 11:53:50

建站知识

小知识:使用Dockerfile部署nodejs服务的方法步骤

2023-4-4 12:08:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索