问题标签 [fluent-bit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3958 浏览

kubernetes-helm - 在 helm 的 values.yaml 中使用 Release.Name

我正在尝试在我的图表中使用 stable/fluent-bit 作为子图表。该图表在 values.yaml 中有一个值:

如何在不更改流利位图表的情况下将 backend.es.host 的值设置为 {Release.Name}-elasticsearch?

0 投票
2 回答
3824 浏览

elasticsearch - Elasticsearch 动态字段映射和 JSON 点表示法

我正在尝试将日志从 Kubernetes 集群写入 Elasticsearch 索引。Fluent-bit 用于读取标准输出,并使用包括 pod 标签在内的元数据丰富日志。一个简化的示例日志对象是

问题是部署到集群的其他一些应用程序具有以下格式的标签:

这些应用程序通过 Helm 图表安装,较新的应用程序遵循此处列出的标签和选择器约定。标签和选择器的命名约定已于 2018 年 12 月更新,见此处,并非所有图表都已更新以反映这一点。

这样做的最终结果是,取决于哪种类型的标签格式首先将其放入弹性索引,尝试发送另一种类型将引发映射异常。如果我创建一个新的空索引并首先发送命名空间标签,则尝试记录简单app标签将引发此异常:

相反的情况,第二个发布命名空​​间标签,会导致这个异常:

我怀疑正在发生的事情是,Elasticsearch 将字段名称中的句点视为 JSON 点符号,并试图将其充实为一个对象。我能够从 2015 年找到这个 PR,它明确不允许字段名称中出现句点,但它似乎在 2016 年被这个 PR颠倒了。还有一个 2015-2017 年的多年线程讨论这个问题,但我找不到任何涉及最新版本的最新内容。

我目前关于前进的想法是标准化我们使用的 Helm 图表,以使所有标签都使用相同的约定。这似乎是潜在问题的创可贴,尽管我觉得我在 Elasticsearch 和动态字段映射的配置中遗漏了一些明显的东西。

这里的任何帮助将不胜感激。

0 投票
1 回答
810 浏览

logging - FluentD 和 FluentBit 之间的乱序日志

我目前正在使用 JournalD + JournalBeat + Logstash 作为日志堆栈,但我想切换到使用 JournalD + FluentD。

我尝试使用https://github.com/fluent-plugin-systemd/fluent-plugin-systemd作为 FluentD 的输入,但它导致每秒约 1000 条日志行的低吞吐量,我需要至少支持 2000 条。

所以现在我正在尝试使用 JournalD + FluentBit + FluentD,在 FluentBit + FluentD 之间使用转发协议。使用此堆栈,我能够达到每秒 5000 条日志行的吞吐量,但会导致行乱序。实际上,乱序似乎是成块的。

这是我的 FluentBit 配置:

这是我的 FluentD 配置:

额外细节:

  • 我在 4gb 和 4096 CPU 共享的 docker 容器中运行 FluentD 和 FluentBit
  • 两种服务的 CPU 使用率测量值均低于 20%

我尝试过的其他事情:

  • 在 FluentBit 中设置Mem_Buf_Limit为 2MB 可修复无序,但吞吐量仅为每秒 350 行。如果我使用更大的缓冲区日志行再次出现故障。
  • 将 FluentBit 输出设置为文件会按顺序生成日志行,但我无法在不同文件中分发日志。
  • 在 FluentBit 中使用更大的Flush间隔会导致更大的块乱序
  • flush_thread_count在 FluentD 中尝试过,没有任何影响

我应该尝试的任何其他设置/协议的任何想法?还有其他方法可以集成 Journal 和 FluentD 吗?

- - - 编辑 - -

使用 DEBUG 查看 FluentBit 日志,我看到:

所以看起来正向输出正在使用多个线程。这是预期的吗?

0 投票
0 回答
877 浏览

logging - Fluent bit - TCP 输出插件 - 恒定连接和 JSON 流

我一直在尝试将 Fluent 位配置为 TCP 输出插件。据我观察,Fluent bit 在每次 JSON 日志刷新中都会启动和关闭与目标服务器的 TCP 连接。但是,我们希望有一个持续的连接并通过它流式传输日志。

最接近的配置选项是 TCP 输出插件的“Format json_stream”。应该 Fluentbit 建立并保持连接以通过 TCP 流式传输,还是每次刷新都需要一个新连接?

它是一个由 Fluentbit 容器组成的守护程序集,通过 localhost 与服务器容器进行通信。

非常感谢您对此的任何帮助!

0 投票
1 回答
1453 浏览

logging - 仅为选定的 pod 激活 kubernetes 日志

我想用类似的注释来注释一些 kubernetes pod,并且please_log_with_parser: myparser使用给定的解析器将这些 pod 的日志处理到我们的弹性搜索集群。fluentbit

对于 fluentbit 我只知道 annotation fluentbit.io/exclude,但这将导致必须对所有其他 pod 进行注释。- 是否可以告诉 fluentbit处理带有标签的日志,或者在没有适当注释的情况下丢弃所有消息?

是否有可以替代 fluentbit 的替代方案?

0 投票
1 回答
3383 浏览

docker - 如何将流利位 docker 容器通过标准输入接收的日志的时间戳更改为 UTC?

我的 Fluent Bit Docker 容器正在向通过 STDIN 接收的日志添加带有本地时间的时间戳;否则通过 rsyslog 或 journald 收到的所有日志似乎都具有 UTC 时间格式。

我有一个基本的 EFK 堆栈,我在其中运行 Fluent Bit 容器作为远程收集器,它们将所有日志转发到 FluentD 中央收集器,它将所有内容推送到 Elasticsearch。

我在 Fluent Bit 配置文件中添加了一个过滤器,我在其中尝试了多种修改时间戳的方法,但无济于事。好像我想多了;修改时间戳应该容易得多。

这些都是我尝试使用fluent-bit.conf过滤器修改时间戳的所有方法

使所有时间戳统一到 UTC的事实上的方法是什么?任何帮助或建议表示赞赏。

0 投票
0 回答
299 浏览

mongodb - 我的 fluentd 没有将数据插入 mongodb

我尝试创建系统指标仪表板

我的计划是……

流利位 > 流利的 > mongod

一切都在我的谷歌云平台(计算引擎)上

fluent-bit > fluentd > stdout <---- 很好用

我使用了 fluent-plugin-mongo

/etc/td-agent/td-agent.conf:

0 投票
4 回答
3545 浏览

kubernetes - Fluentbit 在 Kubernetes 中获取 Docker Logs(Systemd) 无法正常工作

我正在尝试在 Kubernetes 中配置 Fluentbit 以从应用程序 POD/Docker 容器中获取日志,并使用 GELF 格式将此日志消息发送到 Graylog,但这不起作用。

请参阅下面的堆栈:

输入

  • Docker 版本 1.13.1
    • Docker 日志格式 => JSON
    • Docker 日志驱动程序 => Journald => systemd
  • Fluent-bit 1.3 在 Kubernetes 中作为 Daemonset 运行
  • Kubernetes 1.17
  • 操作系统主机:CentOS 7

输出

  • 消息输出格式:GELF 1.1
  • 集中式日志 => Graylog 3

问题是fluentbit没有从systemd读取日志我在两个输出(Systemd,Stdout)中都没有得到任何日志,STDOUT只是为了帮助进行故障排除。

我不知道为什么我无法从 systemd 读取。我完全按照文档 https://docs.fluentbit.io/manual/input/systemd

我的 K8S 配置:

流利的位configmap.yaml

流利的位ds.yaml

流利的位角色绑定.yaml

流利的位角色.yaml

fluent-bit-service-account.yaml

我的 Fluentbit OUTPUT(STDOUT) 仅用于调试:

问题是我没有从 systemd 使用此配置获取任何日志

0 投票
0 回答
1628 浏览

kubernetes - 将 Fluentbit Docker Logs(Systemd) 解析为 Kubernetes 中的 GELF 消息输出时出现问题

我正在获取 Docker(Systemd) 日志并尝试以 GELF 格式将其发送到 Graylog 3 输出,但日志格式不正确,并且 Graylog 将其丢弃。

我关注这个参考:

请参阅下面的堆栈:

输入

  • Docker 版本 1.13.1
    • Docker 日志格式 => JSON
    • Docker 日志驱动程序 => Journald => systemd
  • Fluent-bit 1.3 在 Kubernetes 中作为 Daemonset 运行
  • Kubernetes 1.17
  • 操作系统主机:CentOS 7

输出

  • 消息输出格式:GELF 1.1
  • 集中式日志 => Graylog 3

我的 Kubernetes 配置:

流利的位configmap.yaml

流利的位ds.yaml

流利的位角色绑定.yaml

流利的位角色.yaml

fluent-bit-service-account.yaml

我的 Fluentbit OUTPUT(STDOUT) 仅用于调试:

问题是如何将日志正确格式化为 GELF 格式以发送到 Graylog 3

0 投票
1 回答
749 浏览

apache-spark - Spark Container 中的 Fluent-bit

我正在尝试fluent-bitspark容器内运行,以便spark driver container将日志写入/var/log/sparkDriver.logspark log4j属性控制的文件中,可由fluent-bit. 我知道在一个容器中运行多个进程是一种 AntiParttern,但现在我别无选择。我需要什么配置来读取这个文件(/var/log/sparkDriver.log)并将日志转发到我们的内部splunk hec服务器。

我知道fluent-bit可以sidecar在 pod 中使用,但我使用 simplespark-submit来提交我的 spark 作业,K8S并且spark-submit没有任何方法可以告诉k8s我我也想运行 sidecar(fluent-bit)。

我也知道fluent-bit可以在集群中作为 deamonSet 安装,它基本上将在集群中的每个节点上运行,k8s并通过节点将日志从容器转发到Splunk. 但是这个选项也不适合我。

所以我想我是否可以烘焙fluent-bitsplunkforwarderfluentd至从文件或stdout中读取日志。我知道其他 2 个选项会使我的sparkdocker 映像膨胀,但我现在没有选项。

任何帮助或建议将不胜感激

我实际上尝试过tailsplunk但不知何故我无法找出正确的配置fluent-bit

这是我的日志文件,它是spark使用的日志log4j

我实际上尝试过它,但不知何故我无法在它周围放置正确的配置。这是我的日志文件的外观:

这是我的fluent-bit配置: