這是怎麼樣的一個遵循我的問題另外一個了: 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過濾器錯誤。 –