无法使用 logstash 将字符串转换为数字

Unable to convert string in to numeric using logstash

我正在尝试使用 logstash 从以下行中提取模式(第 85 行),并将变量中的数字作为浮点值。

[JaCoCo plugin] Overall coverage: class: 36, method: 65, line: 85, branch: 76, instruction: 81

logstash过滤器如下:

filter {
      grok {
        match => ["message", "(?<TotalUnitTCCoveragePercent>line: \d+)"]
       }
     mutate {
        gsub => [
           "TotalUnitTCCoveragePercent", "line: ", ""
               ]
        convert => {
           "TotalUnitTCCoveragePercent" => "float"
          }
      }
 }

我能够提取字符串“line: 85”,然后将值提取为字符串。 但是,转换部分 enter code here 不起作用。 执行管道后,我得到“TotalUnitTCCoveragePercent”=> 0 而不是浮点值。我错过了什么吗? 对此的任何帮助将不胜感激。

根据 mutate filter documentation,转换步骤在 gsub 步骤之前完成,因此转换步骤在 line: 85 完成但失败了。

最简单的解决方案是通过使用此 grok 模式来避免使用 gsub 步骤:line: %{NUMBER:TotalUnitTCCoveragePercent}TotalUnitTCCoveragePercent 中有 85,因此不需要 gsub 步骤。