前言:本文主要介绍docker搭建elk分布式日志平台,利用filebeat监听logback日志文件,传输到elk中,最终在kibana渲染展示。
主要思路:filebeat监听日志文件的变化,传输到logstash,logstash通过分析提取,将日志信息推送到elasticsearch指定索引中,最终kibana从elasticsearch索引中查询并展示日志信息。
一、docker搭建elk日志平台(v7.6.1)
1.1、准备镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.1
docker pull docker.elastic.co/kibana/kibana:7.6.1
docker pull docker.elastic.co/logstash/logstash:7.6.1
1.2、创建elk网络
创建es-network网络主要用于在容器中可以直接通过容器名互相访问
docker network create es-network
1.3、创建宿主机目录,用于与容器目录映射
根目录:/Users/chenjiaming/data/docker,根据自身情况动态修改即可
授权:chmod 777 /Users/chenjiaming/data/docker
.
├── elasticsearch
│ ├── config
│ └── data
├── kibana
│ └── config
└── logstash
└── config
1.4、部署elasticsearch
在elasticsearch/config目录下创建elasticsearch.yml文件,内容如下:
# 配置es的集群名称
cluster.name: "docker-cluster"
# 0.0.0.0为不限制,生产环境建议设置为固定IP
network.host: 0.0.0.0
# 是否开启x-pack安全认证,访问时需要密码
xpack.security.enabled: false
# 关闭跨域验证
http.cors.enabled: true
http.cors.allow-origin: "*"
启动容器:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "ES_JAVA_OPTS=-Xms2048m -Xmx2048m" -e "discovery.type=single-node" -e "TZ=Asia/Shanghai" \
--net es-network \
-v /Users/chenjiaming/data/docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /Users/chenjiaming/data/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config