这是一个面向想要学习云原生计算基金会(CNCF)项目 Fluent Bit 的通用入门指南系列。
- 每篇文章内容:每篇文章针对一个主题,提供该主题是什么、为何感兴趣、从何处开始以及如何动手学习与 Fluent Bit 项目相关的内容等方面的见解,各篇文章可独立阅读,也能引导逐步提升用 Fluent Bit 遥测管道实现解决方案的能力。
本文主题及相关内容:
- 主题:使用 Fluent Bit 为开发者提供的技巧
Pipeline Input Tricks(管道输入技巧):
- Dummy Input Plugin(虚拟输入插件):在调试遥测管道过滤或解析动作时,可将环境简化为可控的日志输入进行处理,
dummy输入插件能帮助处理复杂的正则表达式或 Lua 脚本,以下是简单示例配置及输出:
- Dummy Input Plugin(虚拟输入插件):在调试遥测管道过滤或解析动作时,可将环境简化为可控的日志输入进行处理,
service: flush: 1 log_level: info http_server: on http_listen: 0.0.0.0 http_port: 2020 hot_reload: on pipeline: inputs: # 生成成功消息 - name: dummy tag: event.success dummy: '{"message":"true 200 success"}' # 生成失败消息 - name: dummy tag: event.error dummy: '{"message":"false 500 error"}' filters: # 示例测试过滤器用于修改事件 - name: modify match: '*' condition: - Key_Value_Equals message 'true 200 success' remove: message add: - valid_message true - code 200 - type success outputs: - name: stdout match: '*' format: json_lines# 源安装 $ fluent-bit --config fluent-bit.yaml # 容器安装(使用 Buildfile 构建新镜像) # FROM ghcr.io/fluent/fluent-bit:4.0.8 # COPY./fluent-bit.yaml /fluent-bit/etc/fluent-bit.yaml # CMD [ "fluent-bit", "-c", "/fluent-bit/etc/fluent-bit.yaml" ] $ podman build -t fb -f Buildfile $ podman run --rm fb ... {"date":1756813283.411961,"valid_message":"true","code":"200","type":"success"} {"date":1756813283.413117,"message":"false 500 error"} {"date":1756813284.410205,"valid_message":"true","code":"200","type":"success"} {"date":1756813284.41048,"message":"false 500 error"} {"date":1756813285.410716,"valid_message":"true","code":"200","type":"success"} {"date":1756813285.410987,"message":"false 500 error"} ...- **Tail Input Plugin(尾输入插件)**:在云原生环境中处理动态日志和流数据,[`tail`输入插件](https://docs.fluentbit.io/manual/data-pipeline/inputs/tail)可连接并发送传入的遥测数据到 Fluent Bit 管道,以下是配置及相关要点:service: flush: 1 log_level: info http_server: on http_listen: 0.0.0.0 http_port: 2020 hot_reload: on pipeline: inputs: - name: tail tag: kube.* read_from_head: true path: /var/log/containers/*.log multiline.parser: docker, cri outputs: - name: stdout match: '*' format: json_lines json_date_format: java_sql_timestamp要点包括:连接到 Kubernetes 集群的日志收集路径时,
tail插件仅从当前时刻开始收集数据;使用read_from_head: true确保看到完整的测试应用日志;通过path指定具体的日志路径可缩小数据范围;需使用管道配置中的filters减少遥测噪声。- **Head Input Plugin(头输入插件)**:与 UNIX 命令`head`类似,[`head`输入插件](https://docs.fluentbit.io/manual/data-pipeline/inputs/head)可读取文件顶部的指定行数,以下是示例配置:service: flush: 1 log_level: info http_server: on http_listen: 0.0.0.0 http_port: 2020 hot_reload: on pipeline: inputs: - name: head tag: head.kube.* path: /var/log/containers/*.log lines: 30 multiline.parser: docker, cri outputs: - name: stdout match: '*' format: json_lines json_date_format: java_sql_timestamp此插件可用于收集大型和动态文件的遥测数据。
- **Exec Input Plugin(执行输入插件)**:[`exec`输入插件](https://docs.fluentbit.io/manual/data-pipeline/inputs/exec)可执行任何命令并将输出处理到管道中,以下是示例配置:service: flush: 1 log_level: info hot_reload: on pipeline: inputs: - name: exec tag: exec_demo command: 'for s in $(seq 1 10); do echo "The count is: $s"; done;' oneshot: true exit_after_oneshot: true outputs: - name: stdout match: '*'还可用于捕获 Java 服务的暴露指标,以下是配置示例:
service: flush: 1 log_level: info http_server: on http_listen: 0.0.0.0 http_port: 2020 hot_reload: on pipeline: inputs: - name: exec tag: exec_metrics_demo command: 'curl curl http://localhost:7777/metrics' oneshot: true exit_after_oneshot: true propagate_exit_code: true outputs: - name: stdout match: '*'开始学习的步骤:应探索本系列的先前文章,以在开发者的本地机器上安装和开始使用 Fluent Bit,可使用源代码或容器镜像,文末链接指向可详细探索 Fluent Bit 的免费实践工作坊,可通过以下方式验证安装是否正常:
# 源安装 $ fluent-bit -i dummy -o stdout # 容器安装 $ podman run -ti ghcr.io/fluent/fluent-bit:4.0.8 -i dummy -o stdout- 系列后续内容:本文介绍了使用 Fluent Bit 服务部分的技巧以改善开发者内部循环体验,此系列后续将探索更多有趣的 Fluent Bit 输出插件等内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。