Yi fan

利用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:
View Code

步骤 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 }
}
View Code

步骤 3:启动 ELK 栈

在包含 docker-compose.yml 文件的目录下,打开终端并运行以下命令来启动 ELK 栈:

docker-compose up -d

步骤 4:验证 ELK 栈是否正常运行

    • Elasticsearch:打开浏览器并访问 http://localhost:9200,如果看到 Elasticsearch 的 JSON 响应,则表示 Elasticsearch 已成功启动。
    • Kibana:打开浏览器并访问 http://localhost:5601,如果看到 Kibana 的登录页面,则表示 Kibana 已成功启动。
    • Logstash:你可以通过查看 Logstash 容器的日志来验证其是否正常运行:
docker logs logstash

步骤 6:停止和清理 ELK 栈

如果你想停止并清理 ELK 栈,可以在终端中运行以下命令:

docker-compose down -v
这个命令会停止并删除所有相关的容器和卷。
通过以上步骤,你就可以使用 Docker Compose 成功创建一个 ELK 环境。
 

 当三个服务全部停止后,重新启动,方法如下

如果你之前使用 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)来确认服务是否可用。
View Code

 

posted on 2025-02-25 14:22  hanswei  阅读(254)  评论(0)    收藏  举报

导航