在 Docker 中将 EBS 挂载到 ELK
Mount EBS to ELK in Docker
我在 Docker 中遇到一些问题,它安装在 AWS 的 EC2 节点上。
我已经使用 docker-compose 在 docker 中安装了 ELK,现在可以使用 tcp 过滤器 (winston3-npm) 查看日志。我还在这个 EC2 实例中附加了一个 EBS 卷,现在我想将日志保留在这个 EBS 中,这样即使我终止了我的 EC2 实例并使用这个 EBS 卷生成一个新实例,我也想看到所有旧日志。
所以,我无法将 EBS 卷挂载到 docker 以便保留我的所有数据。
下面是我的 docker-compose 文件 .
谁能帮我解决这个问题?
version: '3.2'
services:
elasticsearch:
build:
context: elasticsearch/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./elasticsearch/config/elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
read_only: true
volumes:
- type: bind
source: ./elasticsearch/config/elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
read_only: true
- /data:/usr/share/elasticsearch/data/:rw
#- type: volume
#source: elasticsearch
#target: /usr/share/elasticsearch/data
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
ELASTIC_PASSWORD: changeme
networks:
- elk
logstash:
build:
context: logstash/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./logstash/config/logstash.yml
target: /usr/share/logstash/config/logstash.yml
read_only: true
- type: bind
source: ./logstash/pipeline
target: /usr/share/logstash/pipeline
read_only: true
ports:
- "5000:5000"
- "9600:9600"
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
depends_on:
- elasticsearch
kibana:
build:
context: kibana/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./kibana/config/kibana.yml
target: /usr/share/kibana/config/kibana.yml
read_only: true
ports:
- "5601:5601"
networks:
- elk
depends_on:
- elasticsearch
networks:
elk:
driver: bridge
volumes:
elasticsearch:
EBS 已附加到您的 EC2 实例,无法直接将 EBS 卷挂载到 EC2 实例上的 docker 容器 运行 中。
您可以在 EC2 实例上安装 EBS 卷并将 docker 持久性存储指向该安装点。
我能够解决问题...在 /lib/systemd/system/ 中存在的 docker.service 文件中提到了 EBS 挂载目录路径,并且能够看到所有 docker ebs中的相应数据。
谢谢大家的帮助。
我在 Docker 中遇到一些问题,它安装在 AWS 的 EC2 节点上。
我已经使用 docker-compose 在 docker 中安装了 ELK,现在可以使用 tcp 过滤器 (winston3-npm) 查看日志。我还在这个 EC2 实例中附加了一个 EBS 卷,现在我想将日志保留在这个 EBS 中,这样即使我终止了我的 EC2 实例并使用这个 EBS 卷生成一个新实例,我也想看到所有旧日志。
所以,我无法将 EBS 卷挂载到 docker 以便保留我的所有数据。 下面是我的 docker-compose 文件 .
谁能帮我解决这个问题?
version: '3.2'
services:
elasticsearch:
build:
context: elasticsearch/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./elasticsearch/config/elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
read_only: true
volumes:
- type: bind
source: ./elasticsearch/config/elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
read_only: true
- /data:/usr/share/elasticsearch/data/:rw
#- type: volume
#source: elasticsearch
#target: /usr/share/elasticsearch/data
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
ELASTIC_PASSWORD: changeme
networks:
- elk
logstash:
build:
context: logstash/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./logstash/config/logstash.yml
target: /usr/share/logstash/config/logstash.yml
read_only: true
- type: bind
source: ./logstash/pipeline
target: /usr/share/logstash/pipeline
read_only: true
ports:
- "5000:5000"
- "9600:9600"
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
depends_on:
- elasticsearch
kibana:
build:
context: kibana/
args:
ELK_VERSION: $ELK_VERSION
volumes:
- type: bind
source: ./kibana/config/kibana.yml
target: /usr/share/kibana/config/kibana.yml
read_only: true
ports:
- "5601:5601"
networks:
- elk
depends_on:
- elasticsearch
networks:
elk:
driver: bridge
volumes:
elasticsearch:
EBS 已附加到您的 EC2 实例,无法直接将 EBS 卷挂载到 EC2 实例上的 docker 容器 运行 中。
您可以在 EC2 实例上安装 EBS 卷并将 docker 持久性存储指向该安装点。
我能够解决问题...在 /lib/systemd/system/ 中存在的 docker.service 文件中提到了 EBS 挂载目录路径,并且能够看到所有 docker ebs中的相应数据。
谢谢大家的帮助。