在 Ubuntu 上部署 Fluent Bit 以实现高效的日志转发
在本博客中,我们将了解如何在 Ubuntu 上部署 Fluentbit。我们还将了解如何配置 Fluentbit 将日志转发到 OpenObserve。
Fluent Bit 是一个开源的多平台日志转发器,它允许您从不同来源收集数据/日志,统一并将它们发送到多个目的地。它与 Docker 和 Kubernetes 环境以及裸机实例和虚拟机完全兼容。它能够从不同来源收集日志,例如 Linux 内核日志、应用程序日志、文件日志、标准输入等。 Fluent Bit 是 Fluentd 的小弟,它非常轻量级,并且是用 C 语言编写的,在大多数场景下推荐优于 Fluentd。
官方说明可在 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 基金会下,社区活跃,大家可以重点关注。