1.ELK日志收集-Docker部署ELKF日志收集

E:elasticsearch;L:logstash;K:kibana;F:filebeat

单机架构部署:

0 基础环境准备

(1)linux系统,本文使用centos7

(2)docker服务,yum install docker

1 创建桥接网络

L-E-K之间需要网络通信,为了实现容器间通信,因此使用docker桥接网络,ELK三个服务容器挂载到somenetwork网络上
创建网络somenetwork:

1
docker network create somenetwork

创建成功后,如下图所示

ip a 查看ip,如下图所示

2 部署elasticsearch,版本为7.9.0

(1)拉取elasticsearch镜像

1
docker pull elasticsearch:7.9.0

镜像仓库默认为dockerhub: ‘docker.io/elasticsearch’;也可以指定elastic镜像仓库

(2)启动elasticsearch容器

1
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.9.0

3 部署kibana,版本为7.9.0

(1)拉取kibana镜像

1
docker pull kibana:7.9.0

(2)启动kibana容器

1
docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:7.9.0

4 部署logstash,版本为7.9.0

(1)拉取logstash镜像

1
docker pull logstash:7.9.0

(2)启动logstash容器

1
docker run -d --name logstash --net somenetwork -p 5044:5044 -p 9600:9600 --privileged=true -v /usr/local/logstash/pipeline/:/usr/share/logstash/pipeline/ logstash:7.9.0

容器内部使用的logstash.conf配置文件output并未指向elasticsearch,需要修改logstash.conf配置,使用挂载的方式使用宿主机的配置文件覆盖logstash.conf,方便修改配置。
宿主机/usr/local/logstash/pipeline/目录下放置logstash-me.conf文件,文件配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Beats -> Logstash -> Elasticsearch pipeline.
input {
beats {
port => 5044
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
}
}

5 部署filebeat,版本为7.9.0

本文使用filebeat负责采集日志,需要安装到被采集日志的机器上