一、Filebeat概述
### --- Filebeat
~~~ 在生产环境中,很常用的场景是pod的日志都是写在本地文件的;
~~~ 若是你的应用是基于容器开发的,在设计之初,是直接输出到控制台了;
~~~ 但是有可能你的容器是通过虚拟机或者是物理机迁移过来或者说是容器化过来的;
~~~ 这类的应用的日志可能直接打在了宿主机的目录上面。
~~~ 若是去改的话对于研发来说是很大的工作量。
~~~ 但是我们可以通过手段将容器内的日志给收集起来
### --- EFLK架构:ElasticSearch+Filebeat+Logstash+Kibana+zookeeper+kafka:
~~~ 收集容器内文件的日志
~~~ 用到了zookeeper+kafka的组件
二、组件架构:
### --- 组件架构:
~~~ # 假设这个pod运行了2个容器:
~~~ 一个是业务应用APP;一个是Filebeat
~~~ # 它俩是共享了一个目录EmptyDir:
~~~ APP是 把它的共享文件EmptyDir挂载到了它的log文件下叫a.logs;
~~~ Filebeat将EmptyDir挂载到了它的收集路径下/data/logs
~~~ APP和Filebeat的日志文件就共享了,Filebeat就可以看到APP里面的日志文件,
~~~ 它就会读到这个日志文件,读取这个日志文件后把读取的结果就会推送到队列里面。
~~~ 这种推送的方式也是为了缓解Logstash的压力;也可以推送到其它的中间件上。
~~~ 推送到kafka或者redis是推荐的一种方式
~~~ 推送到队里里之后,Logstash会从Filebeat指定的Token中去读取日志文件,
~~~ 读取完日志文件之后会写到ElasticSearch中,
~~~ 写到ElasticSearch中之后就和Fluentd收集日志的过程一样,就可以使用Kibana查看它的日志了。
~~~ Filebeat是更轻量级,占用的资源是非常少的