测试环境EFK搭建

Elasticsearch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.12.0

# 运行容器
docker run -d -e ES_JAVA_POTS="-Xms1024m -Xmx1024m" -e "discovery.type=single-node" \
-p 9200:9200 -p 9300:9300 \
-m 4096M \
--name es7.12.0 docker.elastic.co/elasticsearch/elasticsearch:7.12.0

# 验证
docker ps -a | grep ela
docker logs -f CONTAINER ID

# 访问http://localhost:9200/ ,出现如下信息说明ElasticSearch 启动成功

Kibana

1
2
3
4
5
6
7
8
# 拉取镜像
docker pull docker.elastic.co/kibana/kibana:7.12.0

# 运行容器
docker run --link CONTAINER ID:elasticsearch \
-p 5601:5601 \
-m 2048M \
-d --name kibana7.12.0 docker.elastic.co/kibana/kibana:7.12.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 这里启动不一样的是多了 --link 选项,作用是将两个容器关联到一起可以互相通信,因为kibana到时候需要从ElasticSearch中拿数据。当然也可以通过 --network 创建自己的局域网连接各个容器。

# 这里需要配置kibana.yml,不然kibana默认通过localhost是找不到ES的。

# 进入容器命令行模式
docker exec -it 8180d5fdcdcf /bin/bash

# 修改kibana.yml文件
vi config/kibana.yml
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ] # 修改为es地址
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN" # 修改为中文

# 重启kibana容器
docker restart xxxx

# 访问 http://localhost:5601/ 如果成功进入界面,就说明启动成功了。

FileBeat

1
2
3
4
5
6
# 拉取镜像
docker pull docker.elastic.co/beats/filebeat:7.12.0

# 运行容器
## 此处先不运行,先把下面一步的配置文件修改后再run
docker run -d -v /root/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml -v /data/logs/:/data/logs/ --name filebeat7.12.0 docker.elastic.co/beats/filebeat:7.12.0
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
#拉取完成之后,先不着急启动,在启动之前需要完成先建立一份映射的配置文件filebeat.docker.yml,选择目录创建filebeat.docker.yml
#=========================== Filebeat inputs ==============
filebeat.inputs:

- type: log

enabled: true
##配置你要收集的日志目录,可以配置多个目录
paths:
- /data/logs/*.log

##配置多行日志合并规则,已时间为准,一个时间发生的日志为一个事件
multiline.pattern: '^\d{4}-\d{2}-\d{2}'
multiline.negate: true
multiline.match: after

#-------------------------- Kibana ---------

## 设置kibana的地址,开始filebeat的可视化
setup.kibana.host: "http://172.16.10.xxx:5601"
setup.dashboards.enabled: true

#-------------------------- Elasticsearch output ---------
output.elasticsearch:
hosts: ["http://172.16.10.xxx:9200"]
index: "filebeat-%{+yyyy.MM.dd}"

setup.template.name: "my-log"
setup.template.pattern: "my-log-*"
json.keys_under_root: false
json.overwrite_keys: true
##设置解析json格式日志的规则
processors:
- decode_json_fields:
fields: [""]
target: json