Docker单机:FileBeat+ELK 日志收集

参考链接:https://www.cnblogs.com/fbtop/p/11005469.html

 

目的:

        线程请求生成对应的requestId,根据requestId追踪链路生产消费的数据,方便定位问题和回溯;基于一些XXX考虑,和阿巴阿巴阿巴的原因先拿FileBeat+ELK的方式进行实验,跑通日志收集和展示的功能。

为了避免重复造轮子,本篇只对上出链接博客做一些补充:

       1.单机/docker/版本7.1.1;

       2.docker四大网络的特点:https://www.cnblogs.com/zhuochong/p/10069293.html;本次采用net=bridge的网络模式,禁止出现localhost 和127.0.0.1,统一使用本机ip(重要);

      3.对docker -v挂载命令有所了解;

      4.确认fileBeat是否采集到了日志:进入容器 [docker exec -i -t  容器号 bash] ,查看/var/log/nginx/下的日志文件即可;另外docker启动时可以去掉 -d 参数,观看启动运行日志,方便查看状态;

      下载 curl -L -O https://raw.githubusercontent.com/elastic/beats/7.1/deploy/docker/filebeat.docker.yml时提示链接失败,需要本地hosts文件绑定(199.232.68.133)ip:raw.githubusercontent.com ,另外其实也不用下载,通过touch filebeat.docker.yml +copy内容也可。此外进入fileBeat容器/usr/share/filebeat/ 目录下也有该文件;

      5.logstash配置中config.d是目录,里面有配置文件test;

      6.es是否采集到了数据可以使用mobz/elasticsearch-head:5 来链接查看;然后再用kibana;也可以通过head操作es,然后验证kibana数据展示;

      7.如顶边参考文中所说,配置目录和本机上日志的目录一定要区分好,不要照抄,在docker run 时要保证挂载的目录是正确的;

效果:

镜像:

Docker单机:FileBeat+ELK 日志收集_第1张图片

 网络:自定义网络模式默认是bridge

head查看es数据:

Docker单机:FileBeat+ELK 日志收集_第2张图片

kibana过滤requestId回溯生产消费数据:

Docker单机:FileBeat+ELK 日志收集_第3张图片

 

此外还有个问题,自定义的requestId如何做到隐式和无侵入性,分布式调用下如何追踪,还待继续探索。

你可能感兴趣的:(Java从零开始)