这是怎么样的一个遵循我的问题另外一个了: JSON parser in logstash ignoring data? 但这次我觉得这个问题是比较清楚的,然后最后一次,可能是有人更容易回答。Logstash输出送交elasticsearch
我使用JSON解析器是这样的:
json #Parse all the JSON
{
source => "MFD_JSON"
target => "PARSED"
add_field => { "%{FAMILY_ID}" => "%{[PARSED][platform][family_id][1]}_%{[PARSED][platform][family_id][0]}" }
}
输出为logstash.stdout一个日志中的部分看起来像这样:
"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单独添加的字段。至少应该显示出来,对吧?
如果有人看过类似的东西,这将是很大的帮助。 也抱歉发送几乎相同的问题两次。
示例日志LINE:
1452470936.88 1448975468.00 1 7 mfd_status 000E91DCB5A2负载{ “向上”:[38,1.66,0.40,0.13], “MEM”:[967364,584900,3596,116772] “CPU”:[1299,812,1791,3157,480,144], “cpu_dvfs”:[996,1589,792,871,396,1320], “cpu_op”:[996,50]}
采样线将被解析(加载后的所有内容都是JSON),并且在标准输出中我可以看到它被成功解析,但是我在弹性搜索中没有看到它。 这是我的输出代码:
elasticsearch
{
hosts => ["localhost:9200"]
document_id => "%{fingerprint}"
}
stdout { codec => rubydebug }
很多我的logstash过滤器是在其他的问题,但我认为像所有相关部分在这个问题了。 如果你想看看这里的链接:JSON parser in logstash ignoring data?
如果你希望人们能帮忙就这一个,你需要分享您的logstash配置(至少相关部分),你知道还有一个真实的样本日志行与您的当前配置失败。 – Val
@Val我更新了问题以获得一些日志和代码。我之前的问题中有很多logstash配置,除了我换出了csv解析器的grok外,不应该影响这个,因为它之前做的是同样的事情。 –
@val我刚与所有除JSON滤波器(只与源设置)移除所述过滤器的测试它,只有用在问题(只是它的JSON部分)日志的例子。它像以前一样在logstash.stdout文件中解析,但没有在kibana中显示。所以我必须假设我的输出是错误的,或者我使用JSON过滤器错误。 –