Dizideki dizili JSON-Message'ım var. "Fasulye" bölmek için bir filtre kullanarakNesne içindeki JSON dizisini bölme
{
"type": "monitor",
"server": "10.111.222.333",
"host": "abc.de",
"bean": [{
"name": "beanName1",
"reseted": "2015-06-05T15:10:00.192Z",
"method": [{
"name": "getAllXY",
"count": 5,
"min": 3,
"max": 5
},
{
"name": "getName",
"count": 4,
"min": 2,
"max": 4
}]
},
{
"name": "beanName2",
"reseted": "2015-06-05T15:10:00.231Z",
"method": [{
"name": "getProperty",
"count": 4,
"min": 3,
"max": 3
}]
},
{
"name": "beanName3",
"reseted": "2015-06-05T15:10:00.231Z"
}]
}
:: Birden fazla olayların içine bölmek istiyorum
input {
stdin {
codec => "json"
}
}
filter {
split {
field => "bean"
}
}
output {
stdout{codec => "json"}
}
iyi çalışıyor:
{"type":"monitor",
"server":"10.111.222.333",
"host":"abc.de",
"bean":{
"name":"beanName1",
"reseted":"2015-06-05T15:10:00.192Z",
"method":[{
"name":"getAllXY",
"count":5,
"min":3,
"max":5
},{
"name":"getName",
"count":4,
"min":2,
"max":4
}]},
"@version":"1",
"@timestamp":"2015-07-14T09:21:18.326Z"
}
{"type":"monitor",
"server":"10.111.222.333",
"host":"abc.de",
"bean":{
"name":"beanName2",
"reseted":"2015-06-05T15:10:00.231Z",
"method":[{
"name":"getProperty",
"count":4,
"min":3,
"max":3
}]},
"@version":"1",
"@timestamp":"2015-07-14T09:21:18.326Z"
}
...
da "yöntemleri" ayırmak için Ben bir başka süzgeç ekledim:
Ama sadece bir hata mesajı alıyorum bu şekilde:
Exception in filterworker {"exception"=>#LogStash::ConfigurationError: Only String and Array types are splittable. field:bean.method is of type = NilClass
Ben nesne "fasulye" içeride dizi "yöntemi" erişemez. Şanssız farklı notasyonlar denedim. Diziye erişmek mümkün mü, henüz desteklenmiyor mu?
Çalışıyor, ancak yöntemsiz fasulyem var. Bu yüzden _if [bean] [method] {..._ ekledim ve şimdi iyiyim, çok teşekkürler. – joerno
Mükemmel, [bean] [method] 'koşulunu yanıtıma ekledim. – hurb
@hurb "Fasülyenin" sadece bir elementi varsa ne olur? Bu kod bu durumda çalışmıyor –