You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS1.22部署Fluent Bit发日志到ES报400 _type参数非法错误

问题场景

在EKS 1.22集群中部署Fluent Bit采集Pod日志传输至ELK栈,参照官方文档部署后出现运行报错,已尝试在配置中添加Suppress_Type_Name On参数,问题未解决。

报错日志
[2022/06/20 16:23:07] [error] [output:es:es.0] HTTP status=400 URI=/_bulk, response:
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Action/metadata line [1] contains an unknown parameter [_type]"}],"type":"illegal_argument_exception","reason":"Action/metadata line [1] contains an unknown parameter [_type]"},"status":400}
当前使用的ConfigMap配置
fluent-bit.conf: |
  [SERVICE]
      Flush         1
      Log_Level     info
      Daemon        off
      Parsers_File  parsers.conf
      HTTP_Server   On
      HTTP_Listen   0.0.0.0
      HTTP_Port     2020

  @INCLUDE input-kubernetes.conf
  @INCLUDE filter-kubernetes.conf
  @INCLUDE output-elasticsearch.conf

input-kubernetes.conf: |
  [INPUT]
      Name              tail
      Tag               kube.*
      Path              /var/log/containers/*.log
      Parser            docker
      DB                /var/log/flb_kube.db
      Mem_Buf_Limit     5MB
      Skip_Long_Lines   On
      Refresh_Interval  10

filter-kubernetes.conf: |
  [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

output-elasticsearch.conf: |
  [OUTPUT]
      Name            es
      Match           *
      Host            ${FLUENT_ELASTICSEARCH_HOST}
      Port            ${FLUENT_ELASTICSEARCH_PORT}
      Logstash_Format On
      Replace_Dots    On
      Retry_Limit     False
问题根因

该报错由Elasticsearch版本与Fluent Bit配置/版本不兼容导致:

  1. Elasticsearch 7.0及以上版本已废弃索引的_type元数据字段,8.0版本完全移除了对_type参数的支持,bulk写入请求携带该参数时会直接返回400非法参数错误。
  2. 你添加的Suppress_Type_Name On参数未生效,核心原因有两点:
    • 参数放置位置错误:该参数是Elasticsearch输出插件的专属配置,必须写在[OUTPUT]配置块内,当前配置并未在输出段添加该参数。
    • Fluent Bit版本过低:若使用的Fluent Bit版本低于1.9.0,即使在输出段正确配置了Suppress_Type_Name,开启Logstash_Format时插件仍存在逻辑缺陷,会自动在bulk请求中注入_type字段。
解决方案
  • 版本适配检查
    先对齐Fluent Bit与Elasticsearch的版本兼容要求:
    • Elasticsearch 7.x系列:Fluent Bit版本不低于1.8.0
    • Elasticsearch 8.x系列:Fluent Bit版本不低于1.9.5
      若版本不满足要求,先升级Fluent Bit到对应稳定版本。
  • 修正输出段配置
    将Suppress_Type_Name On参数正确添加到Elasticsearch输出配置块中,修正后的output-elasticsearch.conf配置参考如下:
    [OUTPUT]
        Name                es
        Match               *
        Host                ${FLUENT_ELASTICSEARCH_HOST}
        Port                ${FLUENT_ELASTICSEARCH_PORT}
        Logstash_Format     On
        Replace_Dots        On
        Retry_Limit         False
        Suppress_Type_Name  On
        # 若使用Elasticsearch 7.x过渡版本,可额外添加下方参数做兼容
        # Type              _doc
    
  • 生效验证
    滚动重启Fluent Bit对应的DaemonSet负载,观察运行日志确认无400报错,同时在Elasticsearch侧查询对应日志索引,确认日志正常写入。

内容的提问来源于stack exchange,提问作者Kocin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 12:48:21