1.安装Docker和Docker Compose:
根据你的操作系统,按照官方文档(docs.docker.com/get-docker/)安装Docker和DockerCompose。确保安装了最新版本的Docker和Docker Compose。
2.创建一个文件夹来存放ELK配置文件:
在你选择的位置创建一个文件夹,用于存放ELK的配置文件。例如,可以创建一个名为elk的文件夹。
3.创建docker-compose.yml文件:
a.在上一步创建的文件夹中,创建一个名为docker-compose.yml的文件,并使用文本编辑器打开它。
b.将以下内容复制到docker-compose.yml文件中:
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xmx512m -Xms512m"
ports:
- 9200:9200
- 9300:9300
volumes:
- esdata:/usr/share/elasticsearch/data
networks:
- elk-network
logstash:
image: docker.elastic.co/logstash/logstash:7.14.0
container_name: logstash
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
ports:
- 5000:5000/udp
depends_on:
- elasticsearch
networks:
- elk-network
kibana:
image: docker.elastic.co/kibana/kibana:7.14.0
container_name: kibana
ports:
- 5601:5601
depends_on:
- elasticsearch
networks:
- elk-network
volumes:
esdata:
networks:
elk-network:
driver: bridge
上面的配置使用了Elastic官方提供的Docker镜像,版本号为7.14.0。如果你想使用其他版本,可以将image行中的版本号替换为所需的版本。
此配置文件定义了三个服务:Elasticsearch、Logstash和Kibana。Elasticsearch用于数据存储和索引,Logstash用于日志收集和处理,Kibana用于数据可视化和分析。
在Logstash服务中,我们将当前目录下的logstash.conf文件映射到容器中的Logstash配置文件路径,以便我们可以在本地编辑和管理Logstash配置。
此外,配置文件还创建了一个网络(elk-network),用于在服务之间进行通信。
4.创建Logstash配置文件:
a.在上一步创建的文件夹中,创建一个名为logstash.conf的文件,并使用文本编辑器打开它。
b.编辑logstash.conf文件来定义Logstash的输入、过滤和输出插件的管道。以下是一个示例配置,将stdin作为输入插件,将日志发送到Elasticsearch进行索引:
input {
gelf {
port => 5000
codec => "json"
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "%{[tag]}-%{+YYYY.MM.dd}"
}
}
在上面的示例配置中,我们使用stdin作为输入插件,它从标准输入(stdin)读取日志。你可以根据需要替换为适合你的日志来源的输入插件。
输出插件使用Elasticsearch作为目标,将日志数据发送到Elasticsearch进行索引。我们使用了elasticsearch:9200作为Elasticsearch的主机和端口,它与Elasticsearch服务的容器名称对应。
请根据需要修改配置文件,以适应你的日志源和索引设置。
5.启动ELK堆栈:
a.在终端或命令提示符中,导航到包含docker-compose.yml文件的文件夹。
b.运行以下命令来启动ELK堆栈:
docker-compose up -d
此命令将根据docker-compose.yml文件中的配置启动Elasticsearch、Logstash和Kibana服务,并在后台运行(使用-d选项)。
Docker将自动下载所需的镜像,并启动相应的容器。
6.发送日志到ELK堆栈:
现在,你可以将日志发送到ELK堆栈中进行集中管理和分析。根据你的日志来源和配置,你可以使用不同的方法将日志发送到Logstash服务。以下是一些常见的方法:
a.在命令行中使用docker logs命令将容器的日志发送到Logstash。例如:
docker logs my-container 2>&1 | nc localhost 5000
这将获取名为my-container的容器的日志,并将其通过网络发送到Logstash。
b.在容器配置中设置日志驱动,将日志直接发送到Logstash。具体设置取决于你使用的容器平台和日志驱动。在Docker Compose文件或Docker命令中,你可以使用--log-driver参数指定日志驱动,并使用--log-opt参数来配置驱动选项。
**version: '3'
**services:
my-app:
image: my-app-image
# 其他服务配置...
logging:
driver: gelf
options:
gelf-address: "udp://logstash-host:5000"
c.如果你在Kubernetes上运行容器,可以使用日志聚合和转发机制将容器日志发送到Logstash。你可以配置Kubernetes的日志引擎(如Fluentd、Filebeat等)将容器日志发送到Logstash。
根据你的具体情况,选择适合的方法将日志发送到Logstash。
7.使用Kibana进行日志分析和可视化:
a.打开浏览器,访问Kibana的Web界面。默认情况下,Kibana的地址是http://localhost:5601
作者:眺望77
链接:www.jianshu.com/p/979132847…
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。