ELK Docker-compose部署教程
1. 简介
在本教程中,我们将学习如何使用Docker和Docker Compose部署ELK(Elasticsearch, Logstash, Kibana)堆栈。ELK堆栈是一个强大的日志分析平台,它由Elasticsearch用于存储和搜索日志数据,Logstash用于日志收集和处理,Kibana用于可视化和分析日志数据。
2. 准备工作
在开始之前,确保已经安装了Docker和Docker Compose工具。可以在官方网站上找到安装说明。
3. Docker Compose配置文件
首先,我们需要创建一个Docker Compose配置文件,用于定义我们的ELK堆栈。
在项目的根目录下创建一个新的文件docker-compose.yml
,并将以下内容复制到该文件中:
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
container_name: elasticsearch
environment:
- discovery.type=single-node
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elk
logstash:
image: docker.elastic.co/logstash/logstash:7.10.2
container_name: logstash
volumes:
- ./logstash/config:/usr/share/logstash/pipeline
command: logstash -f /usr/share/logstash/pipeline/logstash.conf
ports:
- 5000:5000
networks:
- elk
depends_on:
- elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:7.10.2
container_name: kibana
ports:
- 5601:5601
networks:
- elk
depends_on:
- elasticsearch
networks:
elk:
volumes:
esdata:
在上述配置文件中,我们定义了三个服务:elasticsearch,logstash和kibana。每个服务都使用了官方的Docker镜像。
- Elasticsearch服务用于存储和搜索日志数据。我们将其映射到本地的端口9200上,以便可以通过浏览器访问。
- Logstash服务用于日志收集和处理。我们将其映射到本地的端口5000上。
- Kibana服务用于可视化和分析日志数据。我们将其映射到本地的端口5601上。
此外,我们在elasticsearch服务中定义了一个数据卷esdata
,用于持久化存储数据。
4. 启动ELK堆栈
现在,我们可以使用Docker Compose启动ELK堆栈。在命令行中,导航到包含docker-compose.yml
文件的目录,并执行以下命令:
docker-compose up -d
上述命令将启动ELK堆栈,并将其作为后台服务运行。
5. 验证部署
一旦ELK堆栈启动成功,我们可以通过浏览器访问Kibana界面来验证部署是否成功。
打开浏览器,并访问http://localhost:5601
。如果一切正常,您将看到Kibana的欢迎页面。
6. 日志收集和可视化
现在,我们可以配置Logstash来收集和处理日志数据,并使用Kibana进行可视化和分析。
在本教程中,我们将以一个简单的示例来演示如何收集和可视化日志数据。
首先,创建一个新的文件夹logstash
,并在其中创建config
文件夹。在config
文件夹中创建一个名为logstash.conf
的文件,并将以下内容复制到该文件中:
input {
tcp {
port => 5000
codec => json_lines
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "mylogs-%{+YYYY.MM.dd}"
}
}
上述配置文件定义了一个简单的Logstash配置,它会监听5000端口,接收JSON格式的日志数据,并将其发送