docker compose部署elk
- 创建Dockerfile
首先,需要创建一个Dockerfile文件来构建自己的ELK镜像。在该文件中,需要安装Java、Elasticsearch、Logstash和Kibana,并配置相应的环境变量。以下是一个例子:
FROM docker.elastic.co/elasticsearch/elasticsearch:7.9.1
LABEL maintainer="your-name"
# Install Java
RUN yum install -y java-11-openjdk-devel
# Install Logstash
RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && \
yum install -y https://artifacts.elastic.co/downloads/logstash/logstash-7.9.1.rpm && \
yum clean all
# Install Kibana
RUN yum install -y kibana-7.9.1 && \
yum clean all
# Expose ports
EXPOSE 9200 5601
# Set environment variables
ENV ELASTICSEARCH_URL=http://localhost:9200
ENV KIBANA_INDEX=.kibana
ENV LOGSTASH_HOME=/usr/share/logstash
ENV PATH=$PATH:/usr/share/logstash/bin:/usr/share/kibana/bin
# Start services
CMD /usr/share/elasticsearch/bin/elasticsearch -d && /usr/share/kibana/bin/kibana -d && /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/
- 创建docker-compose.yml文件
接下来,需要创建一个docker-compose.yml文件来定义ELK服务。以下是一个例子:
version: '3.7'
services:
elasticsearch:
build: .
container_name: elasticsearch
ports:
- "9200:9200"
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
logstash:
build: .
container_name: logstash
depends_on:
- elasticsearch
volumes:
- ./logstash/config:/etc/logstash/conf.d
- ./logstash/pipeline:/usr/share/logstash/pipeline
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
ports:
- "5044:5044"
kibana:
build: .
container_name: kibana
depends_on:
- elasticsearch
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
volumes:
elasticsearch_data:
在该文件中,定义了三个服务:Elasticsearch、Logstash和Kibana。其中,Elasticsearch和Kibana的配置比较简单,主要是设置容器名称、端口映射和依赖关系。Logstash的配置稍微复杂一些,需要设置配置文件目录、管道目录、环境变量和端口映射。同时,还需要设置依赖关系,确保Logstash在Elasticsearch启动之后再启动。
- 运行docker-compose
最后,通过运行docker-compose命令来启动ELK服务:
docker-compose up -d
该命令将会构建和启动ELK服务,并将它们作为容器运行在后台。在启动完成后,可以通过浏览器访问Kibana服务,地址为http://localhost:5601,来查看和管理日志数据。同时,也可以使用Logstash来收集和处理日志数据,并将其发送到Elasticsearch中进行存储和分析
原文地址: https://www.cveoy.top/t/topic/eS5Y 著作权归作者所有。请勿转载和采集!