
在本博客中,我们将了解如何在 Ubuntu 上部署 Fluentbit。我们还将了解如何配置 Fluentbit 将日志转发到 OpenObserve。
Fluent Bit 是一个开源的多平台日志转发器,它允许您从不同来源收集数据/日志,统一并将它们发送到多个目的地。它与 Docker 和 Kubernetes 环境以及裸机实例和虚拟机完全兼容。它能够从不同来源收集日志,例如 Linux 内核日志、应用程序日志、文件日志、标准输入等。 Fluent Bit 是 Fluentd 的小弟,它非常轻量级,并且是用 C 语言编写的,在大多数场景下推荐优于 Fluentd。
核心要点摘要
- 本文适合需要在 Ubuntu 裸机、虚拟机或云主机上安装 Fluent Bit,并把
/var/log/*.log转发到 OpenObserve 的场景。 - 安装路径采用 Fluent Bit 官方 APT 源:先导入 GPG key,再根据 Ubuntu codename 添加 source list,最后通过
apt-get install fluent-bit安装。 - Fluent Bit 安装后由 systemd 管理,可以用
systemctl start/enable/status fluent-bit启动、开机自启和检查状态。 - 示例配置使用
tail输入插件采集日志文件,用http输出插件把 JSON 日志发送到 OpenObserve。 - 如果目标后端不是 OpenObserve,可以保留 INPUT 部分,替换 OUTPUT 为 Elasticsearch、Kafka、Logstash、Fluentd 等后端对应配置。
适用场景和术语说明
这篇文章解决的是一个很具体的问题:如何在 Ubuntu 上安装 Fluent Bit,并把本机日志转发到远端日志平台。它不是 Kubernetes DaemonSet 部署教程,也不覆盖复杂的生产级缓冲、路由、重试和多租户配置。
几个关键术语先说明清楚:
- INPUT:Fluent Bit 的输入插件,负责从文件、TCP、systemd、Syslog、容器日志等来源读取数据。
- OUTPUT:Fluent Bit 的输出插件,负责把处理后的数据发送到 OpenObserve、Elasticsearch、Kafka、HTTP endpoint 等目的地。
- Parser:解析器,用来把原始日志拆成结构化字段。本文示例中使用
dockerparser。 - Tag:Fluent Bit 给每条记录附加的路由标签,OUTPUT 的
Match会根据 Tag 决定是否接收这条记录。
官方说明可在 https://docs.fluentbit.io/manual/installation/linux/ubuntu 上可以找到,文档写得很详细,可以直接参考安装。下面我们按照如下步骤在 Ubuntu 部署 Fluent Bit。
1.设置服务器GPG密钥
sudo sh -c 'curl https://packages.fluentbit.io/fluentbit.key | gpg --dearmor > /usr/share/keyrings/fluentbit-keyring.gpg'
2.导出您的 ubuntu 版本名称
在 Ubuntu 上,您需要将 APT 服务器条目添加到源列表中,请在 /etc/apt/sources.list 文件底部添加以下内容 - 确保将 CODENAME 设置为您的特定 Ubuntu 版本名称(例如 Ubuntu 22.04.2 的 jammy):
首先使用如下命令获取 release name:
lsb_release -a
输出:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
或者执行如下命令:
cat /etc/os-release
输出:
ubuntu@ip-172-31-6-194:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
让我们将其导出到环境变量中:
export CODENAME="jammy"
3.更新 sources lists
echo "deb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] https://packages.fluentbit.io/ubuntu/$CODENAME/ \
$CODENAME main" | sudo tee /etc/apt/sources.list.d/fluentbit.list
输出:
deb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] https://packages.fluentbit.io/ubuntu/jammy/ jammy main
4.安装 Fluent Bit
sudo apt-get update
sudo apt-get install fluent-bit
5.使用 systemd 启动 Fluent Bit
# Start Fluent Bit
sudo systemctl start fluent-bit
# Enable Fluent Bit to start on boot
sudo systemctl enable fluent-bit
# Check the status of Fluent Bit
sudo systemctl status fluent-bit
它应该显示如下内容:
ubuntu@ip-172-31-1-242:~$ systemctl status fluent-bit
● fluent-bit.service - Fluent Bit
Loaded: loaded (/lib/systemd/system/fluent-bit.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-07-25 00:19:53 UTC; 20s ago
Docs: https://docs.fluentbit.io/manual/
Main PID: 2755 (fluent-bit)
Tasks: 4 (limit: 2307)
Memory: 3.0M
CPU: 33ms
CGroup: /system.slice/fluent-bit.service
└─2755 /opt/fluent-bit/bin/fluent-bit -c /etc/fluent-bit/fluent-bit.conf
Fluent-bit 的默认配置是收集 CPU 使用率指标并将记录发送到标准输出,您可以在 /var/log/syslog 文件中看到传出的数据。
6.配置 Fluent Bit 发送日志到 OpenObserve
默认配置文件位于:/etc/fluent-bit/fluent-bit.conf,可以使用 vim 编辑该文件。我们来采集 /var/log 下面的日志,在 fluent-bit.conf 文件中添加如下配置:
[INPUT]
Name tail
Path /var/log/*.log
Parser docker
Tag logs.*
Refresh_Interval 5
Rotate_Wait 5
Mem_Buf_Limit 5MB
Skip_Long_Lines On
配置完了 INPUT 部分,我们来配置 OUTPUT 部分,将日志发送到 OpenObserve:
[OUTPUT]
Name http
Match *
URI /api/justprabhat_organization_1010/default/_json
Host api.openobserve.ai
Port 443
tls On
Format json
Json_date_key _timestamp
Json_date_format iso8601
HTTP_User youremail@yourdomain.com
HTTP_Passwd qatj1wfZ890Q5Sk123k1
compress gzip
OpenObserve 是一个日志监控平台,该产品相对较新,主张把日志存储在 S3 上,类似 Loki,所以成本更低,当然,带来的问题是检索能力不如 ElasticSearch。本文来自 OpenObserve 的作者:Prabhat Sharma,所以有这么一个章节讲解 Fluentbit 推送日志给 OpenObserve。Fluent Bit 在日志采集领域使用广泛,可以转发到 Logstash、Fluentd、ElasticSearch、Kafka 等多种后端。原文地址:https://openobserve.ai/blog/setup-fluent-bit-on-ubuntu-for-efficient-log-forwarding
配置完了 fluent-bit.conf 文件后,重启 Fluent Bit 服务:
sudo systemctl restart fluent-bit
使用以下命令检查服务的状态:
sudo systemctl status fluent-bit
如果有任何错误,您可以使用以下命令检查它们:
journalctl -u fluent-bit.service
7.检查 OpenObserve 中的日志
转到 OpenObserve UI 并检查日志。您现在应该看到日志。如果你使用其他的后端,比如 ElasticSearch,则需要配置 ElasticSearch 的 OUTPUT 部分。
总结
在本文中,我们了解了如何在 Ubuntu 上部署 Fluent Bit。我们还了解了如何配置 Fluent Bit 将日志转发到 OpenObserve。Fluent Bit 是一个开源的多平台日志转发器,它允许您从不同来源收集数据/日志,统一并将它们发送到多个目的地。托管在 CNCF 基金会下,社区活跃,大家可以重点关注。
如果把这套配置放到生产环境,建议继续补齐三类内容:第一,给 INPUT 增加更准确的 Parser 和 Tag 规划;第二,根据日志量设置缓冲、重试和限流策略;第三,把 OpenObserve 或其他日志后端的认证信息改为受控管理,避免明文长期暴露在配置文件中。
FAQ
Q1:Ubuntu 上安装 Fluent Bit 的关键步骤是什么?
A:先导入 Fluent Bit APT 源的 GPG key,再根据 Ubuntu codename 添加 source list,然后执行 sudo apt-get update 和 sudo apt-get install fluent-bit。
Q2:如何确认 Fluent Bit 已经正常运行?
A:可以执行 sudo systemctl status fluent-bit 查看服务状态;如果启动失败或输出异常,可以用 journalctl -u fluent-bit.service 查看日志。
Q3:本文的配置只能发送到 OpenObserve 吗?
A:不是。INPUT 部分可以继续采集 /var/log/*.log,OUTPUT 部分可以按目标系统替换为 Elasticsearch、Kafka、Logstash、Fluentd 或其他 Fluent Bit 支持的后端。
Q4:生产环境直接使用示例里的密码可以吗? A:不建议。示例配置用于说明字段位置,生产环境应使用自己的 OpenObserve 用户、密码和组织路径,并通过配置管理或密钥管理方式保护认证信息。
