docker-compose 搭建 单机版ELK
前言
本次部署将使用ElasticSearch官方的镜像和Docker-Compose来创建单节点的ELK,用于学习ELK操作。在k8s集群内,如果每天的日志量超过20G以上,建议部署在k8s集群外部,以支持分布式集群的架构。在这种情况下,我们将采用有状态部署的方式,并且使用动态存储进行持久化。在运行该yaml文件之前,需要提前创建好存储类。本文档将仅使用常用的ElasticSearch + LogStash + Kibana组件。
准备
环境
- 操作系统:Centos 7(虚拟机)
- Docker:26.0.0
- Docker-Compose:2.25.0
- ELK Version:7.17.2
文件目录
/docker/
├── elk
│ ├── docker-compose.yml
│ ├── elasticsearch
│ ├── kibana
│ │ └── config
│ │ └── kibana.yml
│ └── logstash
│ ├── config
│ │ └── logstash.yml
│ └── pipeline
│ └── logstash.conf
部署流程
创建 Docker-Compose 的配置文件。
version: '3'
services:
elasticsearch:
image: elasticsearch:7.17.2
container_name: elasticsearch
ports:
- "9200:9200"
- "9300:9300"
restart: always
environment:
# 设置集群名称
cluster.name: elasticsearch
# 以单一节点模式启动
discovery.type: single-node
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
volumes:
- /docker/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /docker/elk/elasticsearch/data:/usr/share/elasticsearch/data
- /docker/elk/elasticsearch/logs:/usr/share/elasticsearch/logs
networks:
- elk
logstash:
image: logstash:7.17.2
container_name: logstash
restart: always
ports: