Logstash 从字符串创建值数组

Logstash Create an array of values from string

我的日志中有以下一组信息。它是 JSON 格式。

{   
  "someField":"someValue",   
  "columns":"[colName1, colName2, colName3, ... colNameN]", 
  "someField":"someValue" 
}

我希望将其作为数组存储在同一字段中 columns

我想显示的用例是有多少用户使用了名为 colName1 的特定列及其计数。

我正在使用ELK stak 5.x

output.conf 中的变异可能对您有所帮助。

关注此 link - https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-replace

尽管不支持从字符串直接转换为数组。前段时间我遇到了同样的用例,为此使用了合并功能。我建议有一些虚拟字段并与 'columns' 字段合并以创建新的数组字段。希望这有帮助。

如果你的源直接是json格式

使用 json 插件

filter {
  json {
    source => "message"
  }
}

数组字段将自动转换为数组

https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html

我参考了上面两个答案得到了解决方案。 这就是我所做的。

要从字符串中删除 [],我使用了这个:

mutate {
        gsub => ["columns", "[\[\]]", ""]
    }

然后将其转换为数组:

    mutate {
        split => { "columns" => "," }
    }