图文详解Docker搭建 ELK Stack (elk) [使用es-logstash-filebeat-kibana]
Posted hah杨大仙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图文详解Docker搭建 ELK Stack (elk) [使用es-logstash-filebeat-kibana]相关的知识,希望对你有一定的参考价值。
如果您对 elk 还不了解,那么可以先直戳下方官方链接,官方通过图形化界面很形象地介绍了elk stack(Elastic Stack)。
ELK Stack:Elasticsearch 的开发者倾心打造 | Elastic
| 准备工作(统一版本7.16.1)
本文使用软件(centos7,moba)
| 拉取es镜像
docker pull elasticsearch:7.16.1
|| 拉取kibana镜像
docker pull kibana:7.16.1
||| 拉取logstash镜像
docker pull logstash:7.16.1
|||| 拉取filebeat镜像
docker pull docker.elastic.co/beats/filebeat:7.16.1
拉取完成后使用命令查看镜像信息,如下所示:
docker images
| 设置elk的网络
这里取名为elbk-net(都是首字母啦)
docker network create elbk-net
若你拥有可视化界面portainer,则可在network中查看
| 分别启动各容器
1.启动es(本文以单节点演示)
docker run \\
-d --name es \\
-p 9200:9200 \\
-p 9300:9300 \\
-e "discovery.type=single-node" \\
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \\
--net elbk-net \\
elasticsearch:7.16.1
2.启动 kibana
docker run \\
-v /opt/docker/elbk/kibana:/usr/local/etc/elbk/kibana/config \\
-p 5601:5601 -d \\
--net elbk-net \\
--name kibana \\
kibana:7.16.1
若您等待了很长时间访问kibana见到如下界面,请参考:
【解决】Kibana server is not ready yet:Docker启动kibana迟迟未成功_hah杨大仙的博客-CSDN博客
启动成功可看到如下界面
3.配置启动logstash
| 添加如下两个文件,需将文件中 ip地址 修改为 你的ip地址
目录结构如下图所示:
logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: 192.168.21.128:9200
logstash.conf
input
beats
port => 5678
filter
# Only matched data are send to output.
output
elasticsearch
hosts => ["http://192.168.21.128:9200"] # ElasticSearch host, can be array.
index => "mylog-%+YYYY.MM" # The index to write data to.
- input:输入
- beats是我们后面要启动的filebeat,filebeat通过port:5678将收集的日志发送给logstash
- filter:过滤
- output:输出
启动 logstash
docker run -d \\
-p 5678:5678 --net elbk-net \\
--name logstash -p 5066:5066 -p 5067:5067 \\
-v /opt/docker/elbk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \\
-v /opt/docker/elbk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml \\
logstash:7.16.1
使用docker ps查看正在运行的容器,启动成功
4.配置启动filebeat
- 新建需要收集的日志文件:
- 内容大致如下(springcloud微服务中的网关模块启动日志,这里仅做demo演示)
创建filebeat文件夹并创建 filebeat.yml 文件,目录如下图所示(规范一点多多益善啦)
filebeat.yml 内容如下
filebeat.inputs:
- type: log
enabled: true
paths:
- /opt/docker/elbk/test/elbk-test.log
output.logstash:
hosts: ["192.168.21.128:5678"]
- paths:测试日志的存放位置
- hosts:你的ip地址,5678端口是与上面启动的logstash对应
启动filebeat
同样记得修改ip为你的ip
docker run \\
-u root \\
-v /opt/docker/elbk/test:/opt/docker/elbk/test:rw \\
-v /opt/docker/elbk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro \\
-e setup.kibana.host=192.168.21.128:5601 -d \\
--name filebeat --net elbk-net \\
docker.elastic.co/beats/filebeat:7.16.1
- ro:
- 文件:容器内不能修改,会提示read-only
- 文件夹:容器内不能修改、新增、删除文件夹中的文件,会提示read-only
- rw:
-
文件:不管是宿主机还是容器内修改,都会相互同步,但容器内不允许删除,会提示Device or resource busy;宿主机删除文件,容器内的不会被同步
-
文件夹:不管是宿主机还是容器内修改、新增、删除文件,都会相互同步
-
启动成功后查看正在运行的容器
docker ps
也可通过可视化界面查看
全部启动成功!!
接下来我们使用 kibana 看一下效果
| 测试
1.使用您的ip地址加5601(启动kibana指定的端口)即可看到如下界面
2.点击可看到如下界面
3.这里还是切回英文版演示(ps:kibana是可以设置为中文的,找找度娘,很简单,在这里不是重点,就不操作啦)
4.选择堆栈管理
5.选择索引配置
6.点击后关闭弹出框
7.该界面告诉你已有数据,点击创建索引进入 正则选择索引库,若如下图所示匹配到上面logstash.conf定义的索引即代表成功!!
8.即可进入如下界面
9.此时再使用es-head头插件查看即可看到已生成索引库!!
10.且已存入数据~
11.接下来如下图所示操作即可看到创建时写入的数据!!
12.根据条件筛选
13.此时在该日志文件再写入一条信息
14.回到kibana查看
15.ok,至此 elk stack 搭建 及 demo测试 就到此结束啦!!good luck!!
..
Thanks
..
以上是关于图文详解Docker搭建 ELK Stack (elk) [使用es-logstash-filebeat-kibana]的主要内容,如果未能解决你的问题,请参考以下文章
Logstash安装(图文详解)(多节点的ELK集群安装在一个节点就好)
通过配置日志驱动程序将 Docker 容器日志发送到 ELK Stack - 简单方法