利用docker compose创建ELK
ELK 是 Elasticsearch、Logstash 和 Kibana 的缩写,是一套流行的日志管理和分析解决方案。下面将详细介绍如何使用 Docker Compose 来创建 ELK 环境。
步骤1:创建 Docker Compose 文件
创建一个名为 docker-compose.yml 的文件,并将以下内容复制到该文件中:
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.10.4
container_name: elasticsearch
environment:
- node.name=elasticsearch
- cluster.name=es-docker-cluster
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- xpack.security.enabled=false
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
networks:
- elk
logstash:
image: docker.elastic.co/logstash/logstash:8.10.4
container_name: logstash
volumes:
- ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
- ./logstash/pipeline:/usr/share/logstash/pipeline:ro
ports:
- 5044:5044
- 5000:5000/tcp
- 5000:5000/udp
- 9600:9600
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- elk
depends_on:
- elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:8.10.4
container_name: kibana
ports:
- 5601:5601
environment:
ELASTICSEARCH_HOSTS: http://elasticsearch:9200
networks:
- elk
depends_on:
- elasticsearch
volumes:
elasticsearch-data:
networks:
elk:
步骤 2:创建 Logstash 配置文件
在与 docker-compose.yml 文件相同的目录下,创建一个名为 logstash 的目录,并在该目录下创建 config 和 pipeline 子目录。
创建 logstash/config/logstash.yml 文件
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
创建 logstash/pipeline/logstash.conf 文件
input {
stdin {}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
步骤 3:启动 ELK 栈
在包含 docker-compose.yml 文件的目录下,打开终端并运行以下命令来启动 ELK 栈:
docker-compose up -d
步骤 4:验证 ELK 栈是否正常运行
docker logs logstash
步骤 6:停止和清理 ELK 栈
如果你想停止并清理 ELK 栈,可以在终端中运行以下命令:
docker-compose down -v
当三个服务全部停止后,重新启动,方法如下
如果你之前使用 docker-compose up -d 启动了 ELK 相关的容器,后续这些容器关闭了,你可以通过以下几种方式重新启动它们。
方式一:使用 docker-compose start 命令
在包含 docker-compose.yml 文件的目录下,打开终端并执行以下命令:
bash
docker-compose start
此命令会重新启动之前使用 docker-compose 启动过的所有容器,它会依据 docker-compose.yml 文件中定义的配置来启动各个服务(即 Elasticsearch、Logstash 和 Kibana 容器)。而且,这种方式启动容器会保持之前容器运行时的状态和配置,比如挂载的卷、网络设置等都会和之前一致。
方式二:再次使用 docker-compose up -d 命令
在同一目录下执行:
bash
docker-compose up -d
docker-compose up -d 命令会检查容器的状态,如果容器已经停止,它会重新启动这些容器;如果某些容器被删除了,它会根据 docker-compose.yml 文件重新创建并启动这些容器。使用 -d 参数意味着容器会以守护进程(后台)模式运行。
示例操作
假设你的 docker-compose.yml 文件存放在 /home/user/elk 目录下,你可以按照以下步骤操作:
bash
# 切换到包含 docker-compose.yml 文件的目录
cd /home/user/elk
# 方式一:使用 start 命令
docker-compose start
# 或者使用方式二:使用 up -d 命令
docker-compose up -d
验证容器是否启动成功
你可以使用以下命令来查看容器的运行状态:
bash
docker-compose ps
该命令会列出 docker-compose.yml 文件中定义的所有服务及其对应的容器状态。如果状态显示为 Up,则表示容器已成功启动。你也可以通过之前验证 ELK 栈是否正常运行的方式,分别访问 Elasticsearch(http://localhost:9200)和 Kibana(http://localhost:5601)来确认服务是否可用。
浙公网安备 33010602011771号