Docker Compose ELK 8.7 简介

ELK 是一个流行的日志管理和分析工具组合,由 Elasticsearch、Logstash 和 Kibana 组成。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。本文将介绍如何使用 Docker Compose 来部署和管理 ELK 8.7。

准备工作

在开始之前,确保已经安装了 Docker 和 Docker Compose。可以从 Docker 官方网站[ Docker,然后使用以下命令安装 Docker Compose:

$ sudo curl -L " -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

编写 Docker Compose 文件

在开始之前,让我们先创建一个新的目录,用于存放 Docker Compose 文件和相关配置。在该目录中创建一个名为 docker-compose.yml 的文件,并将以下内容添加到文件中:

version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0
    ports:
      - 9200:9200
    environment:
      - discovery.type=single-node
  logstash:
    image: docker.elastic.co/logstash/logstash:7.15.0
    volumes:
      - ./logstash/config:/usr/share/logstash/config
      - ./logstash/pipeline:/usr/share/logstash/pipeline
    ports:
      - 5044:5044
    depends_on:
      - elasticsearch
  kibana:
    image: docker.elastic.co/kibana/kibana:7.15.0
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch

上述配置文件定义了三个服务:Elasticsearch、Logstash 和 Kibana。其中 Elasticsearch 服务将在本地的 9200 端口上监听,Logstash 服务将在本地的 5044 端口上监听,Kibana 服务将在本地的 5601 端口上监听。

此外,我们还定义了一些挂载卷,用于将 Logstash 的配置文件和管道文件与容器内的相应目录进行映射。

启动 ELK 服务

通过以下命令启动 ELK 服务:

$ docker-compose up -d

命令执行完毕后,ELK 服务将在后台运行。可以使用以下命令来验证服务是否已经正常启动:

$ docker-compose ps

如果一切正常,将会看到类似以下的输出:

         Name                        Command               State                       Ports
-------------------------------------------------------------------------------------------------------------
dockercompose_elasticsearch_1   /tini -- /usr/local/bin/do ...   Up      0.0.0.0:9200->9200/tcp, :::9200->9200/tcp
dockercompose_kibana_1          /usr/local/bin/dumb-init - ...   Up      0.0.0.0:5601->5601/tcp, :::5601->5601/tcp
dockercompose_logstash_1        /usr/local/bin/docker-entr ...   Up      0.0.0.0:5044->5044/tcp, :::5044->5044/tcp

发送日志到 ELK

现在,我们已经成功启动了 ELK 服务,接下来让我们尝试将一些日志发送到 Elasticsearch 中。在 Logstash 配置目录中创建一个名为 logstash.conf 的文件,并将以下内容添加到文件中:

input {
  stdin {}
}

output {
  elasticsearch {
    hosts => ["elasticsearch:9200"]
  }
  stdout {}
}

上述配置文件定义了一个输入插件,该插件将接收来自标准输入的日志数据。接着,定义了一个输出插件,该插件将日志数据发送到 Elasticsearch,并同时将日志数据打印到标准输出。

现在,我们可以通过以下命令来发送日志数据:

$ echo "Hello ELK" | docker-compose run logstash -f /usr/share/logstash/pipeline/logstash.conf

命令执行完毕后,日志数据将被发送到 Elasticsearch。

访问 Kibana

最后,让我们尝试通过浏览器访问 Kibana,以查看和分析