elasticsearch json解析器的Logstash输出未发送到elasticsearch
这是我的另一个问题的后续: 但这一次我觉得问题比上次更清楚了,也许有人更容易回答 我使用的JSON解析器如下所示:elasticsearch json解析器的Logstash输出未发送到elasticsearch,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack,这是我的另一个问题的后续: 但这一次我觉得问题比上次更清楚了,也许有人更容易回答 我使用的JSON解析器如下所示: json #Parse all the JSON { source => "MFD_JSON" target => "PARSED" add_field => { "%{FAMILY_ID}" => "%{[PARSED][platform][family_id][1]}_%{[PARSED][platform][family_id]
json #Parse all the JSON
{
source => "MFD_JSON"
target => "PARSED"
add_field => { "%{FAMILY_ID}" => "%{[PARSED][platform][family_id][1]}_%{[PARSED][platform][family_id][0]}" }
}
"FACILITY_NUM" => "1",
"LEVEL_NUM" => "7",
"PROGRAM" => "mfd_status",
"TIMESTAMP" => "2016-01-12T11:00:44.570Z",
MORE FIELDS
logstash.stdout中日志的输出部分如下所示:
json #Parse all the JSON
{
source => "MFD_JSON"
target => "PARSED"
add_field => { "%{FAMILY_ID}" => "%{[PARSED][platform][family_id][1]}_%{[PARSED][platform][family_id][0]}" }
}
"FACILITY_NUM" => "1",
"LEVEL_NUM" => "7",
"PROGRAM" => "mfd_status",
"TIMESTAMP" => "2016-01-12T11:00:44.570Z",
MORE FIELDS
当我删除JSON代码时,有一大堆字段与上面的字段类似。当我添加JSON过滤器时,由于某种原因,整个日志从elasticserach/kibana中消失。JSON过滤器添加的位如下所示:
"PARSED" => {
"platform" => {
"boot_mode" => [
[0] 2,
[1] "NAND"
],
"boot_ver" => [
[0] 6,
[1] 1,
[2] 32576,
[3] 0
],
WHOLE LOT OF OTHER VARIABLES
"family_id" => [
[0] 14,
[1] "Hatchetfish"
],
A WHOLE LOT MORE VARIABLES
},
"flash" => [
[0] 131072,
[1] 7634944
],
"can_id" => 1700,
"version" => {
"kernel" => "3.0.35 #2 SMP PREEMPT Thu Aug 20 10:40:42 UTC 2015",
"platform" => "17.0.32576-r1",
"product" => "next",
"app" => "53.1.9",
"boot" => "2013.04 (Aug 20 2015 - 10:33:51)"
}
},
"%{FAMILY_ID}" => "Hatchetfish 14"
让我们假设JSON不起作用,我现在同意了,这不应该影响其他与elasticsearch/kibana日志相关的事情。另外,在最后,我将FAMILY_ID作为一个字段,我使用add_field单独添加了这个字段。至少这应该会出现,对吧
如果有人以前见过这样的东西,那将是很大的帮助。
同样抱歉,我两次发了几乎相同的问题
示例日志行:
1452470936.88 1448975468.00 1 7 mfd_状态000E91DCB5A2加载{“向上”:[38,1.66,0.40,0.13],“内存”:[9673645849003596116772],“cpu”:[129981217913157480144],“cpu_dvfs”:[9961587928713961320],“cpu_op”:[996,50]}
样本行将被解析(加载后的所有内容都是JSON),在stdout中我可以看到它被成功解析,但在elasticsearch中我没有看到它。
这是我的输出代码:
elasticsearch
{
hosts => ["localhost:9200"]
document_id => "%{fingerprint}"
}
stdout { codec => rubydebug }
我的很多日志过滤器都在另一个问题中,但我认为所有相关部分现在都在这个问题中。
如果你想查看这里的链接:在这里回答我自己的问题。这不是一个理想的答案,但是如果有人和我有类似的问题,你可以试试这个
json #Parse all the JSON
{
source => "MFD_JSON"
target => "PARSED"
add_field => { "%{FAMILY_ID}" => "%{[PARSED][platform][family_id][1]}_%{[PARSED][platform][family_id][0]}" }
}
这就是我以前解析所有JSON的方式,我一直在反复尝试,希望有一天能得到它。我正要用一个grok过滤器来获取我想要的比特,如果这对你不起作用,这是一个选项。后来我又回到这个话题上,我想“如果我把所有东西都拿走了怎么办”,因为我已经忘记了一些疯狂的原因。最后我做到了:
json
{
source => "MFD_JSON"
target => "PARSED_JSON"
add_field => { "FAMILY_ID" => "%{[PARSED_JSON][platform][family_id][1]}_%{[PARSED_JSON][platform][family_id][0]}" }
remove_field => [ "PARSED_JSON" ]
}
因此,提取您感兴趣的字段,然后在最后删除解析器生成的字段。这就是我的工作。我不知道为什么,但它可能也适用于其他人。如果您想让人们在这方面提供帮助,您需要共享您的日志存储配置(至少是相关部分)以及一个您知道当前配置失败的真实示例日志行。@Val我更新了问题,以获得一些日志和代码。我的很多日志存储配置都在我的上一个问题中,除了我将grok替换为csv解析器之外,但这不应该影响这一点,因为它以前也做过同样的事情。@Val我只是在除去JSON过滤器(只有源代码设置)之外的所有过滤器的情况下对其进行了测试,并且只使用了问题中的日志示例(只是其中的JSON部分)。它像以前一样在logstash.stdout文件中解析,但没有显示在kibana中。因此,我必须假设我的输出是错误的,或者我使用的JSON过滤器是错误的。