基于Docker搭建ELK(Elasticsearch、Logstash、Kibana)日志框架
warning:
这篇文章距离上次修改已过182天,其中的内容可能已经有所变动。
以下是一个基于Docker的ELK日志分析框架的示例配置。
首先,创建一个docker-compose.yml
文件,用于定义ELK服务的容器:
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
environment:
- discovery.type=single-node
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- "9200:9200"
networks:
- elk
logstash:
image: docker.elastic.co/logstash/logstash:7.10.0
volumes:
- ./logstash/pipeline:/usr/share/logstash/pipeline
command: -f /usr/share/logstash/pipeline/logstash.conf
networks:
- elk
kibana:
image: docker.elastic.co/kibana/kibana:7.10.0
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
ports:
- "5601:5601"
networks:
- elk
volumes:
esdata1:
driver: local
networks:
elk:
driver: bridge
在同一目录下创建logstash/pipeline
目录,并在该目录中创建logstash.conf
配置文件。例如,一个基本的logstash.conf
文件可以是:
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
# Username and password are optional if you are not using X-Pack
# username => "user"
# password => "pass"
}
}
最后,通过Docker Compose启动ELK服务:
docker-compose up -d
这将启动Elasticsearch、Logstash和Kibana容器,并将它们连接在一个网络上。Elasticsearch将数据存储在本地卷esdata1
中,Logstash将通过配置文件从其输入(比如Beats)读取数据,并将数据输出到Elasticsearch。Kibana将用于数据的可视化。
评论已关闭