K8s容器日志实时收集FileBeat+ES+Kibana

本文介绍了在Kubernetes(K8s)环境中,利用FileBeat收集容器日志并配合Elasticsearch(ES)和Kibana进行实时分析的流程。首先讲解了FileBeat的工作原理,包括harvester和prospector组件,然后详细阐述了从Tomcat镜像制作、FileBeat镜像构建到Elasticsearch和Kibana的安装过程。最后,文章通过k8s测试验证了日志收集的正确性和实时性。
摘要由CSDN通过智能技术生成

K8s容器日志实时收集FileBeat+ES+Kibana

www.i4t.com

标签(空格分隔): ELK

k8s日志收集第一种方式
filebeat.png-197.6kB
k8s日志收集第二种方式
filebeat.png-197.6kB

环境说明

IP地址 服务 主机名
10.4.82.119 docker、k8s_master|node、 master
10.4.82.120 docker、 k8s_node、kibana node
10.4.82.115 es、Harbor镜像仓库、docker (主要作用就是打一个filebeat镜像) i4t

提示:filebeat跑在k8s容器内部,所以没有单独创建服务

一、FileBeat

作为 Beats 家族的一员,Filebeat 是一个轻量级的日志传输工具,它的存在正弥补了 Logstash 的缺点:Filebeat 作为一个轻量级的日志传输工具可以将日志推送到中心 Logstash。

在版本 5.x 中,Elasticsearch 具有解析的能力(像 Logstash 过滤器)— Ingest。这也就意味着可以将数据直接用 Filebeat 推送到 Elasticsearch,并让 Elasticsearch 既做解析的事情,又做存储的事情。也不需要使用缓冲,因为 Filebeat 也会和 Logstash 一样记住上次读取的偏移:
image_1d6v3v2fn29s1oa932m3nf1i0n9.png-24.1kB
如果需要缓冲(例如,不希望将日志服务器的文件系统填满),可以使用 Redis/Kafka,因为 Filebeat 可以与它们进行通信:
image_1d6v3vfrn16g7bmp18ct1cm7pvom.png-32.1kB

Filebeat 优点

Filebeat 只是一个二进制文件没有任何依赖。它占用资源极少,尽管它还十分年轻,正式因为它简单,所以几乎没有什么可以出错的地方,所以它的可靠性还是很高的。它也为我们提供了很多可以调节的点,例如:它以何种方式搜索新的文件,以及当文件有一段时间没有发生变化时,何时选择关闭文件句柄。

Filebeat 缺点

Filebeat 的应用范围十分有限,所以在某些场景下我们会碰到问题。例如,如果使用 Logstash 作为下游管道,我们同样会遇到性能问题。正因为如此,Filebeat 的范围在扩大。开始时,它只能将日志发送到 Logstash 和 Elasticsearch,而现在它可以将日志发送给 Kafka 和 Redis,在 5.x 版本中,它还具备过滤的能力。

典型应用场景

Filebeat 在解决某些特定的问题时:日志存于文件,我们希望

① 将日志直接传输存储到 Elasticsearch。这仅在我们只是抓去(grep)它们或者日志是存于 JSON 格式(Filebeat 可以解析 JSON)。或者如果打算使用 Elasticsearch 的 Ingest 功能对日志进行解析和丰富。

② 将日志发送到 Kafka/Redis。所以另外一个传输工具(例如,Logstash 或自定义的 Kafka 消费者)可以进一步丰富和转发。这里假设选择的下游传输工具能够满足我们对功能和性能的要求。

1.1 FileBeat工作原理

Filebeat是本地文件的日志数据采集器。作为服务器上的代理安装,Filebeat监视日志目录或特定的日志文件tail -f file并将它们转发给ES、Logstash、Kafka

Filebeat由二个主要组件组成:prospectorhavvester 这些组件一起工作读取文件并将时间数据发送到指定的输出

启动Filebeat时,它会启动一个或多个查找器,查看您的日志文件指定的本地路径。对**prospector**所在的每个日志文件,prospector启动harvester。每个harvester都会为新内容读取单个日志文件,并将新日志数据发送到libbeat,后者将聚合事件合并聚合数据发送到Filebeat配置的输出

kafka-img.png-83.3kB

harvester

负载读取单个文化的内容。读取每个文件,并将内容发送到the output。每个文件启动一个harvester,负责打开和关闭文件,这意味着在运行时文件描述符保持打开状态
如果文件在读取时被删除或重命名,Filebeat将继续读取文件。在harvester关闭之前,磁盘上的空间被保留。默认情况下,Filebeat将文件保持打开状态,直到达到close_inactive状态

关闭harvester会产生以下结果

1.如果在harvester仍在读取文件时文件被删除,则关闭文件句柄,释放底层资源。
2.文件的采集只会在scan_frequency过后重新开始
3.如果在harvester关闭的情况下移动文件,则不会继续处理文件
prospector

负责管理harvester并找到所有要读取的文件来源。
如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester。每个prospector都在自己的Go斜程中运行

以下示例将Filebeat配置为从与指定的匹配的所有日志文件中收集行:

filebeat.prospectors:
- type: log
  paths:
    - /data/log/*.log
    - /data/log4j/*.log

Filebeat目前支持两种prospector类型:logstdin
每个prospector类型可以定义多次
日志prospector检查每个文件以查看harvester是否需要启动,是否已经运行

只有在harvest关闭后文件大小发生了变化,才会读到新行

注:Filebeat prospector只能读取本地文件,没有功能可以连接到远程主机来读取存储的日志或文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值