Fluent Bit与New Relic集成:全栈可观测性数据平台构建
你是否还在为分散的日志数据难以集中分析而困扰?是否希望将应用性能指标与业务日志关联,实现真正的全栈可观测性?本文将详细介绍如何通过Fluent Bit与New Relic构建统一的数据平台,帮助你一站式解决日志收集、处理和分析难题。读完本文后,你将掌握从数据采集到可视化监控的完整流程,包括配置优化、数据解析和异常告警的实现方法。
集成架构概览
Fluent Bit作为轻量级日志处理器,能够高效采集系统、容器和应用日志,通过输出插件将数据转发至New Relic平台。New Relic提供强大的数据分析和可视化能力,支持实时监控和智能告警。两者结合可构建从边缘到云端的全链路可观测性解决方案。
核心组件包括:
- 数据采集层:Fluent Bit输入插件(如in_tail、in_docker)
- 数据处理层:过滤插件(如filter_kubernetes、filter_parser)
- 数据输出层:New Relic输出插件(out_newrelic)
- 数据存储与分析层:New Relic平台
环境准备与安装
前置条件
- Fluent Bit 1.9.0+(推荐最新稳定版)
- New Relic账号及Ingest License Key
- 目标服务器网络连通性(需允许443端口出站连接)
Fluent Bit安装
源码编译(Linux)
git clone https://gitcode.com/GitHub_Trending/fl/fluent-bit.git
cd fluent-bit
mkdir build && cd build
cmake -DFLB_OUT_NEWRELIC=On ..
make -j$(nproc)
sudo make install
包管理器安装
# Ubuntu/Debian
sudo apt-get install fluent-bit
# CentOS/RHEL
sudo yum install fluent-bit
安装完成后,可通过以下命令验证版本:
fluent-bit --version
配置详解
核心配置文件结构
Fluent Bit配置采用INI格式,主要包含以下部分:
- Service:全局设置
- Input:数据采集配置
- Filter:数据处理规则
- Output:目标端配置
典型配置文件路径:/etc/fluent-bit/fluent-bit.conf 或项目内的conf/fluent-bit.conf。
New Relic输出配置
在配置文件中添加New Relic输出插件配置:
[OUTPUT]
Name newrelic
Match *
api.key YOUR_LICENSE_KEY
host log-api.newrelic.com
port 443
tls On
tls.verify On
compression gzip
# 可选:自定义事件类型
event_type FluentBitLogs
关键参数说明:
api.key:New Relic Ingest License Key(必填)compression:启用gzip压缩减少网络传输量event_type:自定义事件类型,便于在New Relic中筛选
日志解析配置
使用conf/parsers.conf定义日志格式,例如解析JSON格式日志:
[PARSER]
Name json
Format json
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L
Time_Keep On
在输入配置中引用解析器:
[INPUT]
Name tail
Path /var/log/application/*.log
Parser json
Tag app.logs
Refresh_Interval 10
实战案例:Kubernetes集群监控
容器日志采集
配置Fluent Bit采集Kubernetes容器日志:
[INPUT]
Name tail
Tag kube.*
Path /var/log/containers/*.log
Parser docker
DB /var/log/flb_kube.db
Mem_Buf_Limit 5MB
Skip_Long_Lines On
Refresh_Interval 10
[FILTER]
Name kubernetes
Match kube.*
Kube_URL https://kubernetes.default.svc:443
Kube_CA_File /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
Kube_Token_File /var/run/secrets/kubernetes.io/serviceaccount/token
Merge_Log On
K8S-Logging.Parser On
K8S-Logging.Exclude Off
数据转发配置
[OUTPUT]
Name newrelic
Match kube.*
api.key YOUR_LICENSE_KEY
host log-api.newrelic.com
port 443
tls On
# 添加Kubernetes元数据标签
extra_labels cluster=production,env=prod
验证与监控
服务启动与状态检查
# 前台运行(调试模式)
fluent-bit -c /etc/fluent-bit/fluent-bit.conf -v
# 后台运行
sudo systemctl start fluent-bit
sudo systemctl status fluent-bit
New Relic数据验证
登录New Relic控制台,在Logs页面查看接入的数据:
- 访问New Relic Logs
- 使用查询语句过滤Fluent Bit数据:
eventType = 'FluentBitLogs'
常见问题排查
数据未到达New Relic
- 检查网络连通性:
telnet log-api.newrelic.com 443 - 查看Fluent Bit日志:
journalctl -u fluent-bit - 验证License Key有效性:在New Relic账号设置中确认密钥状态
日志格式错误
- 使用Fluent Bit调试模式:
fluent-bit -c conf/fluent-bit.conf -v - 检查解析器配置:conf/parsers.conf中的正则表达式或JSON格式定义
性能优化建议
资源调优
- 内存限制:通过
Mem_Buf_Limit控制每个输入插件的内存使用 - CPU优化:调整
Workers参数启用多线程处理
[Service]
Workers 2
数据处理优化
- 采样率控制:使用filter_throttle限制高流量日志
- 字段过滤:通过filter_record_modifier移除不必要字段
[FILTER]
Name record_modifier
Match *
Remove key password,token
高可用配置
- 数据缓冲:启用文件缓冲防止数据丢失
[INPUT]
Name tail
...
Storage.type filesystem
Storage.path /var/lib/fluent-bit/buffer
- 输出重试机制:配置New Relic插件重试策略
[OUTPUT]
Name newrelic
...
Retry_Limit False
Retry_Wait 5
总结与展望
通过Fluent Bit与New Relic的集成,我们构建了高效、可靠的可观测性数据平台。从边缘设备到云原生环境,该方案能够满足不同规模的监控需求。未来可进一步探索:
- 结合New Relic APM实现分布式追踪
- 使用Fluent Bit metrics输入插件监控系统指标
- 构建自定义仪表盘和告警规则
希望本文能帮助你更好地利用开源工具构建可观测性体系。如果觉得有价值,请点赞、收藏并关注后续分享!
相关资源
- Fluent Bit官方文档
- New Relic输出插件源码
- 配置示例集合
- 开发者指南
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





