问题标签 [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.
kubernetes-helm - 在 helm 的 values.yaml 中使用 Release.Name
我正在尝试在我的图表中使用 stable/fluent-bit 作为子图表。该图表在 values.yaml 中有一个值:
如何在不更改流利位图表的情况下将 backend.es.host 的值设置为 {Release.Name}-elasticsearch?
elasticsearch - Elasticsearch 动态字段映射和 JSON 点表示法
我正在尝试将日志从 Kubernetes 集群写入 Elasticsearch 索引。Fluent-bit 用于读取标准输出,并使用包括 pod 标签在内的元数据丰富日志。一个简化的示例日志对象是
问题是部署到集群的其他一些应用程序具有以下格式的标签:
这些应用程序通过 Helm 图表安装,较新的应用程序遵循此处列出的标签和选择器约定。标签和选择器的命名约定已于 2018 年 12 月更新,见此处,并非所有图表都已更新以反映这一点。
这样做的最终结果是,取决于哪种类型的标签格式首先将其放入弹性索引,尝试发送另一种类型将引发映射异常。如果我创建一个新的空索引并首先发送命名空间标签,则尝试记录简单app
标签将引发此异常:
相反的情况,第二个发布命名空间标签,会导致这个异常:
我怀疑正在发生的事情是,Elasticsearch 将字段名称中的句点视为 JSON 点符号,并试图将其充实为一个对象。我能够从 2015 年找到这个 PR,它明确不允许字段名称中出现句点,但它似乎在 2016 年被这个 PR颠倒了。还有一个 2015-2017 年的多年线程讨论这个问题,但我找不到任何涉及最新版本的最新内容。
我目前关于前进的想法是标准化我们使用的 Helm 图表,以使所有标签都使用相同的约定。这似乎是潜在问题的创可贴,尽管我觉得我在 Elasticsearch 和动态字段映射的配置中遗漏了一些明显的东西。
这里的任何帮助将不胜感激。
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 日志,我看到:
所以看起来正向输出正在使用多个线程。这是预期的吗?
logging - Fluent bit - TCP 输出插件 - 恒定连接和 JSON 流
我一直在尝试将 Fluent 位配置为 TCP 输出插件。据我观察,Fluent bit 在每次 JSON 日志刷新中都会启动和关闭与目标服务器的 TCP 连接。但是,我们希望有一个持续的连接并通过它流式传输日志。
最接近的配置选项是 TCP 输出插件的“Format json_stream”。应该 Fluentbit 建立并保持连接以通过 TCP 流式传输,还是每次刷新都需要一个新连接?
它是一个由 Fluentbit 容器组成的守护程序集,通过 localhost 与服务器容器进行通信。
非常感谢您对此的任何帮助!
logging - 仅为选定的 pod 激活 kubernetes 日志
我想用类似的注释来注释一些 kubernetes pod,并且please_log_with_parser: myparser
只使用给定的解析器将这些 pod 的日志处理到我们的弹性搜索集群。fluentbit
对于 fluentbit 我只知道 annotation fluentbit.io/exclude
,但这将导致必须对所有其他 pod 进行注释。- 是否可以告诉 fluentbit只处理带有标签的日志,或者在没有适当注释的情况下丢弃所有消息?
是否有可以替代 fluentbit 的替代方案?
docker - 如何将流利位 docker 容器通过标准输入接收的日志的时间戳更改为 UTC?
我的 Fluent Bit Docker 容器正在向通过 STDIN 接收的日志添加带有本地时间的时间戳;否则通过 rsyslog 或 journald 收到的所有日志似乎都具有 UTC 时间格式。
我有一个基本的 EFK 堆栈,我在其中运行 Fluent Bit 容器作为远程收集器,它们将所有日志转发到 FluentD 中央收集器,它将所有内容推送到 Elasticsearch。
我在 Fluent Bit 配置文件中添加了一个过滤器,我在其中尝试了多种修改时间戳的方法,但无济于事。好像我想多了;修改时间戳应该容易得多。
这些都是我尝试使用fluent-bit.conf过滤器修改时间戳的所有方法
使所有时间戳统一到 UTC的事实上的方法是什么?任何帮助或建议表示赞赏。
mongodb - 我的 fluentd 没有将数据插入 mongodb
我尝试创建系统指标仪表板
我的计划是……
流利位 > 流利的 > mongod
一切都在我的谷歌云平台(计算引擎)上
fluent-bit > fluentd > stdout <---- 很好用
我使用了 fluent-plugin-mongo
/etc/td-agent/td-agent.conf:
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 使用此配置获取任何日志
kubernetes - 将 Fluentbit Docker Logs(Systemd) 解析为 Kubernetes 中的 GELF 消息输出时出现问题
我正在获取 Docker(Systemd) 日志并尝试以 GELF 格式将其发送到 Graylog 3 输出,但日志格式不正确,并且 Graylog 将其丢弃。
我关注这个参考:
- https://docs.fluentbit.io/manual/output/gelf
- https://docs.fluentbit.io/manual/input/systemd
- https://fluentbit.io/kubernetes/
请参阅下面的堆栈:
输入
- 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
apache-spark - Spark Container 中的 Fluent-bit
我正在尝试fluent-bit
在spark
容器内运行,以便spark driver container
将日志写入/var/log/sparkDriver.log
由spark 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-bit
或splunkforwarder
什fluentd
至从文件或stdout中读取日志。我知道其他 2 个选项会使我的spark
docker 映像膨胀,但我现在没有选项。
任何帮助或建议将不胜感激
我实际上尝试过tail
,splunk
但不知何故我无法找出正确的配置fluent-bit
这是我的日志文件,它是spark
使用的日志log4j
:
我实际上尝试过它,但不知何故我无法在它周围放置正确的配置。这是我的日志文件的外观:
这是我的fluent-bit
配置: