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

导入JMeter测试报告到ELK 6.7.1时出现mapper_parsing_exception报错

问题根因

你遇到的类型解析错误核心原因是Logstash默认不会跳过CSV文件的表头行,直接将表头作为普通数据行解析写入Elasticsearch,99% Line这类表头字符串无法匹配你预先定义的long/double数值类型,所以抛出解析失败错误。报错字段随机是因为Logstash重启后若没有配置读取位置记录,会从头读取文件,每次触发错误的第一个不匹配字段不同,就会出现字段随机变化的现象。

解决步骤

  • 第一步:调整Logstash的csv过滤器配置,开启表头跳过和自动识别字段名能力
    示例配置如下:
    filter {
      csv {
        separator => ","
        # 自动读取第一行表头作为字段名
        autodetect_column_names => true
        # 跳过表头行,不做为数据解析
        skip_header => true
      }
    }
    
  • 第二步:处理特殊字段的格式转换
    你的测试数据中Error %字段自带百分号,直接写入会无法匹配double类型,需要在过滤器中增加符号删除和类型转换逻辑,补充配置如下:
    filter {
      # 承接上面的csv配置
      mutate {
        # 删除Error %字段的百分号
        gsub => [ "Error %", "%", "" ]
        # 主动转换所有数值字段的类型,避免ES自动推断或类型不匹配
        convert => {
          "90% Line" => "integer"
          "95% Line" => "integer"
          "99% Line" => "integer"
          "Average" => "integer"
          "SampleSize" => "integer"
          "Min" => "integer"
          "Max" => "integer"
          "Median" => "integer"
          "Throughput" => "float"
          "Received KB/sec" => "float"
          "Std Deviation" => "float"
          "Error %" => "float"
        }
      }
    }
    
  • 第三步:配置文件读取位置记录,避免重启重复读取
    调整Logstash的file输入插件配置,增加sincedb记录,防止每次重启都从头读取已处理的文件:
    input {
      file {
        path => "/你的csv文件路径/*.csv"
        start_position => "beginning"
        # 配置sincedb存储路径,记录文件读取偏移量
        sincedb_path => "/你的logstash配置路径/sincedb_jmeter"
      }
    }
    
  • 第四步:验证解析逻辑
    可以先将Elasticsearch输出替换为控制台输出,确认解析后的字段值符合预期后再写入ES:
    output {
      stdout {
        codec => rubydebug
      }
      # 验证无误后再开启ES输出
      # elasticsearch {
      #   hosts => ["你的ES地址:9200"]
      #   index => "jmeter-report"
      #   document_type => "doc"
      # }
    }
    

内容的提问来源于stack exchange,提问作者Rémy.W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:54:04