Docker搭建ELK7.17

概述

ELK是一个流行的日志管理和分析解决方案,由Elasticsearch、Logstash和Kibana三个开源项目组成。本文将介绍如何使用Docker快速搭建ELK7.17,并使用Kibana可视化展示日志数据。

Docker安装与配置

首先,我们需要安装Docker。Docker是一个用于开发、交付和运行应用程序的开放平台。在终端中输入以下命令安装Docker:

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

安装完成后,我们需要配置Docker。在终端中输入以下命令启动Docker服务,并设置Docker服务随系统启动时自动启动:

$ sudo systemctl start docker
$ sudo systemctl enable docker

Elasticsearch容器

首先,我们需要创建一个Elasticsearch容器,该容器将用于存储和索引日志数据。在终端中输入以下命令创建一个Elasticsearch容器:

$ docker run -d --name elasticsearch --restart=always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.17.0

上述命令中,我们使用docker.elastic.co/elasticsearch/elasticsearch:7.17.0镜像创建了一个Elasticsearch容器,并将容器的9200和9300端口映射到主机的9200和9300端口。discovery.type=single-node参数表示该容器是一个单节点集群。

Logstash容器

接下来,我们需要创建一个Logstash容器,该容器将负责从各种日志源收集和处理日志数据。在终端中输入以下命令创建一个Logstash容器:

$ docker run -d --name logstash --restart=always -p 5044:5044 --link elasticsearch:elasticsearch docker.elastic.co/logstash/logstash:7.17.0

上述命令中,我们使用docker.elastic.co/logstash/logstash:7.17.0镜像创建了一个Logstash容器,并将容器的5044端口映射到主机的5044端口。--link elasticsearch:elasticsearch参数表示该容器与Elasticsearch容器建立了链接。

Kibana容器

最后,我们需要创建一个Kibana容器,该容器将提供一个Web界面来可视化展示日志数据。在终端中输入以下命令创建一个Kibana容器:

$ docker run -d --name kibana --restart=always -p 5601:5601 --link elasticsearch:elasticsearch docker.elastic.co/kibana/kibana:7.17.0

上述命令中,我们使用docker.elastic.co/kibana/kibana:7.17.0镜像创建了一个Kibana容器,并将容器的5601端口映射到主机的5601端口。--link elasticsearch:elasticsearch参数表示该容器与Elasticsearch容器建立了链接。

配置Logstash

在Logstash容器中,我们需要配置日志收集和处理的管道。首先,创建一个名为logstash.conf的文件,并将以下内容保存到该文件中:

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => "elasticsearch:9200"
    index => "logs-%{+YYYY.MM.dd}"
  }
}

上述配置文件中,我们使用Beats作为输入插件,监听5044端口来接收日志数据。然后,将日志数据输出到Elasticsearch,使用logs-%{+YYYY.MM.dd}作为索引名称。

logstash.conf文件放置到本地机器上的一个目录中,例如/path/to/logstash/config

然后,在终端中输入以下命令启动Logstash容器,并将logstash.conf配置文件挂载到容器中:

$ docker run -d --name logstash --restart=always -p 5044:5044 -v /path/to/logstash/config:/usr/share/logstash/config --link elasticsearch:elasticsearch docker.elastic.co/logstash/logstash:7.17.0

使用Kib