eks fluent-bit 到 elasticsearch 超时

eks fluent-bit to elasticsearch timeout

所以我在 eks 和 AWS 上有一个指向 AWS elasticsearch 服务的 fluent-bit 和 elasticsearch 的工作配置,但为了节省成本,我们删除了那个 elasticsearch 并创建了一个单独的 elasticsearch 实例,足以开发目的。而且 aws 服务不能很好地管理一个实例。

问题是在这次迁移过程中,fluent-bit 似乎坏了,我收到很多“[warn] failed to flush chunk”和一些“[error] [upstream] connection #55 to ES-服务器:10 秒后 9200 超时。

我目前的配置:

[FILTER]
    Name                kubernetes
    Match               kube.*
    Kube_URL            https://kubernetes.default.svc:443
    Kube_CA_File        /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    Kube_Token_File     /var/run/secrets/kubernetes.io/serviceaccount/token
    Kube_Tag_Prefix     kube.var.log.containers.
    Merge_Log           On
    Merge_Log_Key       log_processed
    K8S-Logging.Parser  On
    K8S-Logging.Exclude Off
[INPUT]
    Name              tail
    Tag               kube.*
    Path              /var/log/containers/*.log
    Parser            docker
    DB                /var/log/flb_kube.db
    Mem_Buf_Limit     50MB
    Skip_Long_Lines   On
    Refresh_Interval  10
    Ignore_Older      1m

我认为问题出在其中一个配置中,如果我评论 kubernetes 过滤器,我不再有错误,但我丢失了索引中的字段...

我试过在 fluent-bit 中调整一些参数没有用,如果有人有建议吗?

因此,之前的日志没有显示任何内容,但我最终在 elasticsearch 输出中激活 trace_error 时发现了一些东西:

{"index":{"_index":"fluent-bit-2021.04.16","_type":"_doc","_id":"Xkxy     23gBidvuDr8mzw8W","status":400,"error":{"type":"mapper_parsing_exception","reas     on":"object mapping for [kubernetes.labels.app] tried to parse field [app] as o     bject, but found a concrete value"}}

有人以前遇到过这个错误并且知道如何解决吗?

因此,在查看日志并发现映射问题后,我终于解决了这个问题。日志现在被正确解析并发送到 elasticsearch。

为了解决这个问题,我不得不增加输出重试的限制并添加 Replace_Dots 选项。

[OUTPUT]
    Name            es
    Match           *
    Host            ELASTICSERVER
    Port            9200
    Index           <fluent-bit-{now/d}>
    Retry_Limit     20
    Replace_Dots    On

一开始我发送的内容似乎有问题,因此错误似乎在更改后一直持续到创建新索引为止,这让我认为错误仍未解决。