2017-05-03 80 views
2

我在我的日志中有一组信息。它采用JSON格式。Logstash从字符串创建一个数组数组

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

我想这将被存储为在同一字段columns阵列。

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

我正在使用output.conf ELK stak 5.x

回答

1

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

要我用这个字符串中删除[]

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

,然后将其转换成数组:

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

如果你的来源是直接JSON格式

使用JSON插件

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

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

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

+0

我明白,这将是自动转换为数组。但在我的情况下,我正在使用ThreadContext来放置该值。而ThreadContext只支持'String'的vales。所以虽然我的值以数组格式查看,但它们实际上是以日志文件的字符串格式导出的。那么在这种情况下会发生什么变化? –

+0

ThreadContext是logstash插件?如果不是你提供的JSON格式应该来自默认的消息字段,所以我不知道你的意思是ThreadContext –

+0

不是它的非logstash插件,但它是一个java库,可以帮助我将值放入一个字段并使用它跨越。 –

相关问题