Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat)
一、Docker 安装 Elasticsearch
1拉取镜像
docker pull elasticsearch:7.1.1
2创建自定义的网络(用于连接到连接到同一网络的其他服务(例如Kibana))
docker network create somenetwork
3运行elasticsearch
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.1.1
4查看容器状态
docker ps
5检测 elasticsearch 是否启动成功
curl 127.0.0.1:9200
二、Docker 安装 Kibana
1拉取镜像
docker pull kibana:7.1.1
2运行Kibana
注意:在本例中,Kibana使用默认配置,并希望连接到正在运行的Elasticsearch实例http://localhost:9200
docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:7.1.1
3浏览器访问测试
三、Docker 安装 Logstash
1拉取镜像
docker pull logstash:7.1.1
2创建目录用于存放配置文件
[root@master ~]# mkdir docker [root@master ~]# mkdir docker/logstash [root@master ~]# cd docker/logstash/ [root@master logstash]# vim logstash.yml [root@master logstash]# cat logstash.yml path.config: /usr/share/logstash/conf.d/*.conf path.logs: /var/log/logstash
[root@master logstash]# mkdir conf.d [root@master logstash]# cd conf.d/ [root@master conf.d]# vim test.conf [root@master conf.d]# cat test.conf input { beats { port => 5044 codec => "json" } } output { elasticsearch { hosts => ["elasticsearch:9200"] } stdout { codec => rubydebug } }
3启动Logstash
记得映射上面两个目录 {path}
docker run -it -d -p 5044:5044 --name logstash --net somenetwork \ -v /root/docker/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml \ -v /root/docker/logstash/conf.d/:/usr/share/logstash/conf.d/ logstash:7.1.1
四、Docker 安装 Filebeat
1拉取镜像
docker pull store/elastic/filebeat:7.1.1
2下载官方默认配置文件
[root@master ~]# cd docker [root@master docker]# mkdir filebeat [root@master docker]# cd filebeat [root@master filebeat]# curl -L -O https://raw.githubusercontent.com/elastic/beats/7.1/deploy/docker/filebeat.docker.yml
3修改配置文件
# 增加下面的配置 (收集 .log 数据 把数据发送到当前网络5044端口 (logstash 端口) )
# 这个地方的 .log 要保证有几条测试数据
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/*.log
output.logstash:
hosts: ['{ip}:5044']
[root@master filebeat]# vim filebeat.docker.yml [root@master filebeat]# cat filebeat.docker.yml filebeat.config: modules: path: ${path.config}/modules.d/*.yml reload.enabled: false filebeat.autodiscover: providers: - type: docker hints.enabled: true processors: - add_cloud_metadata: ~ output.elasticsearch: hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}' username: '${ELASTICSEARCH_USERNAME:}' password: '${ELASTICSEARCH_PASSWORD:}' filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/*.log output.logstash: hosts: ['{ip}:5044']
4运行Filebest
# 请更改下面两个路径
{nginx-path} = 本地的日志文件目录(映射到容器中 作为数据源)
{path} = Filebeat配置文件路径
{ip} = elasticsearch
1) 创建本地日志文件目录
[root@master ~]# mkdir logs [root@master ~]# cd logs [root@master logs]# pwd /root/logs
2) 确定filebest配置文件路径
[root@master ~]# cd docker/filebeat/
[root@master filebeat]# ls
filebeat.docker.yml
[root@master filebeat]# pwd
/root/docker/filebeat
3) 确定elasticsearch的ip地址
应该就是本机的ip地址10.0.0.101
4)运行
docker run --name filebeat --user=root -d --net somenetwork \ --volume="/root/logs:/var/log/nginx/" \ --volume="/root/docker/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \ --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" \ --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \ store/elastic/filebeat:7.1.1
5登录web页面查看数据
http://10.0.0.101:5601/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」