描述:
我有一个设置,Fluent Bit 安装在 IoT 设备上。该设备配置为将其日志转发到 EKS 集群中运行的 Fluentd Pod,该集群通过 AWS 网络负载均衡器 (NLB) 公开。该 Fluentd pod 的主要作用是充当聚合器,然后将这些日志转发到 Loki 实例。
但是,我遇到了一个问题,当尝试从 Fluent-Bit 发送日志时,Fluentd 报告“传入块已损坏”错误。该错误的确切原因尚不清楚。这可能与配置不匹配或其他潜在问题有关。
配置:
Fluentd 配置:
fluentd.conf: |
<source>
@type forward
port 24224
resolve_hostname true
</source>
<match **>
@type loki
url http://my-loki-url:3100
extra_labels {“job”:“fluentd”}
<buffer>
flush_interval 10s
flush_at_shutdown true
</buffer>
</match>
流畅的位配置:
[SERVICE]
Flush 1
Daemon Off
Log_Level debug
[INPUT]
Name cpu
Tag cpu_usage
[OUTPUT]
Name forward
Match *
Host dns of the fluentd
Port 24224
[OUTPUT]
Name stdout
Match *
预期行为:
Fluent Bit 应将日志无缝转发到 EKS 集群中的 Fluentd pod。然后,Fluentd 应处理这些日志并将其转发给 Loki,确保捕获来自 IoT 设备的所有日志并将其存储在 Loki 中进行分析。
实际行为:
Fluentd 在从 Fluent-Bit 转发日志的过程中遇到“传入块已损坏”错误。
更新:
深入研究该问题后,我开始相信“传入块已损坏”错误与 AWS 网络负载均衡器 (NLB) 的运行状况检查有关。即使没有发送任何日志,也会出现此错误,这表明该错误可能是在 NLB 执行运行状况检查时自动触发的。
此外,当我切换到
grafana/fluent-plugin-loki:main
图像时,我遇到了另一个问题:config error file="/fluentd/etc/fluentd.conf" error_class=Fluent::ConfigError error="Unknown output plugin ' loki'"
。
非常感谢有关这些问题的任何见解或建议。谢谢!
解决方案:
我已经成功解决了我面临的问题。对于那些将来可能遇到类似问题的人,我已在此 GitHub Issue 中记录了整个故障排除过程和解决方案:https://github.com/grafana/loki/issues/10254.