https://mp.weixin.qq.com/s/FYI6KuLU1eRSVmD8osZ-ow
在现代云计算和边缘计算环境中,对于应用程序和系统的可观测性变得越来越重要。可观测性是指我们能够有效地监控、收集和分析应用程序和系统中的各种指标、日志和事件数据,以便及时发现问题、进行故障排除和性能优化。Fluent Bit是一个开源的日志数据收集和转发工具,它可以帮助我们实现云边统一的可观测性编程。
图片
Fluentbit简介
Fluent Bit是一款快速、灵活的日志处理器,旨在收集、解析、过滤日志,并将日志发送到远程数据库,以便执行数据分析。
数据分析通常发生在数据存储和数据库索引之后,但对于实时和复杂的分析需求,在日志处理器中处理仍在运行的数据会带来很多好处,这种方法被称为边缘流处理(Stream Processing on the Edge)。
如今,我们环境中信息来源的数量正在不断增加。处理大规模的数据收集是复杂的,收集和聚合不同的数据需要一个专门的工具,可以处理:
不同的信息来源。
不同的数据格式。
数据可靠性。
安全性。
灵活的路由。
多目的地。
Fluent Bit 在设计时考虑到了高性能和低资源消耗。
fluent-bit是一个简单日志收集工具,下图就是对它工作流程的全局概述,它通过输入、转换、过滤、缓冲、路由到输出而完成日志的收集。
图片
为什么使用Fluentbit
fluent-bit出于满足对高性能的需求和优化工具,它可以从任何输入源收集数据,统一的数据并将其发送到多个目的地而且支持delimiter、key-value、json等主流格式。比如我们常见的logstash耗费资源严重,filebeat可以作为轻量级日志收集工具,目前只能对接对接到ES、logstash、kafaka、redis而且对数据处理能力有限必须配合大数据平台使用(具体查看:Kubernetes日志收集解决方案)。fluent-bit兼具filebeat的功能,但是filebeat不具备fluent-bit数据处理和路由转发能力,如果我只想简单收集日志,filebeat不能满足。
Fluentbit主要特点和功能
轻量级:FluentBit被设计为轻量级的日志收集器,具有较小的资源占用,适用于在资源受限的环境中运行,例如边缘设备或嵌入式系统。
高性能:由于其轻量级设计,FluentBit能够在高吞吐量的场景下表现出色,可以处理大量的日志数据。
多种输入和输出插件:FluentBit支持多种输入和输出插件,使其能够从不同的数据源收集日志,并将日志转发到多种目标。
可扩展性:FluentBit可以通过插件进行扩展,用户可以根据需求编写自定义插件来实现特定功能。
支持多种日志格式:FluentBit支持解析和处理多种日志格式,如JSON、Grok、Syslog等。
容器友好:FluentBit特别适用于容器化环境,可以与容器编排工具(如Kubernetes)和容器运行时(如Docker)集成,以收集容器日志。
跨平台:FluentBit支持多个操作系统平台,包括Linux、Windows、macOS等。
Fluentbit使用场景
Fluent Bit 在以下场景下使用得非常广泛:
容器化环境:FluentBit 在容器化平台中特别有用,如 Kubernetes、Docker 等。它可以收集容器日志,并将其转发到中央日志存储或日志分析系统。由于其轻量级和高性能的特点,它适用于在容器中运行,并且不会给容器增加太大的负担。
边缘计算设备:FluentBit 作为轻量级的日志收集器,适用于边缘设备或资源有限的环境。在 IoT 和边缘计算场景中,FluentBit 可以帮助收集设备产生的日志,并将其转发到远程服务器或云端进行存储和分析。
云原生应用:在云原生应用中,特别是使用微服务架构的应用,往往有许多小型服务生成日志。Fluent Bit 可以在这些服务中收集日志,并将它们集中到中央日志存储,以方便监控和故障排查。
多数据源日志收集:FluentBit 支持多种输入插件,可以从不同的数据源收集日志,如文件、系统日志、TCP、UDP、HTTP 等。因此,它适用于收集多种类型和来源的日志数据。
日志转发和集中式存储:FluentBit 可以将收集到的日志数据转发到各种目标,如 Elasticsearch、InfluxDB、Kafka、Amazon S3 等,或者发送到中央日志收集系统(如 Fluentd)以进行进一步处理和存储。
Fluentbit编译部署
前置条件:
fluent-bit 采用c语言编写,可以通过容器或者二进制进行部署安装;其占用较少的CPU和内存资源,目前能够兼容绝大部分基于x86、x86_64、arm32v7和arm64v8的系统平台;
为了能够进行在本地进行测试编译,你需要如下依赖环境:
GCC or Clang
CMake
Flex & Bison: 仅当你需要流处理和记录访问器特性(这两种功能默认也是开启的)
编译:
图片
测试:
- 先来创建一个测试路径:
图片
- 在conf目录下,创建三个配置文件:
fluent-bit.conf
图片
parser.conf
图片
plugins.conf
这个文件其实暂时还用不上,是为我们自定义扩展插件的配置文件
图片
- 启动fluent-bit
先进入到我们自己创建的tmp目录, 创建一些测试数据
图片
根据上面fluent-bit.conf配置文件当中的INPUT/OUTPUT可以看出,我们利用了tail组件来监听data目录中的txt文件,并将结果输出到标准输出上来;
所以,启动程序
图片
ok, fluent-bit已经阻塞开始监听了
- 开始测试
重新开启一个终端创口,进入到创建好的tmp目录,将测试数据手动批量的输出到data目录下:
图片
这时可以看到fluent-bit阻塞的窗口已经在一直输出了
图片