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