[英]Parsing JSON file into logstash
嗨,我正嘗試使用logstash將包含多個對象的json文件發送到elasticsearch,以便我可以使用kibana顯示數據。 我對此進行了廣泛的研究,根本無法理解如何正確格式化數據以在kibana中使用。
我嘗試使用不同的過濾器,例如:json,date和grok
問題可能是我如何使用這些過濾器,因為我不明白它的設置是否很好。
這是輸入json文件的示例行:
{"time":"2015-09-20;12:13:24","bug_code":"tr","stacktrace":"543534"},
我想使用這種格式在kibana中顯示數據並根據其“時間”對許多對象進行排序
以下是我當前的過濾器部分:
filter {
date {
match => ["time", "YYYY-MM-dd;HH:mm:ss Z" ]
timezone => "America/New_York"
locale => "en"
target => "@timestamp"
}
grok {
match => ["time", "%{TIMESTAMP_ISO8601:timestamp}"]
}
}
在這一點上,我知道grok是錯誤的,因為我得到了“ _grokparsefailure”,但是我如何找出使用grok的正確方法,還是有一種簡單的方法來使用給定的時間戳對數據進行排序,而不是發送時所給的處理后的時間戳數據通過。
這是當前輸出顯示的內容:
"message" => "{\"time\":\"2015-09-20;12:13:24\",\"bug_code\":\"tr\",\"stacktrace\":\"543534\"},\r",
"@version" => "1",
"@timestamp" => "2015-11-23T09:54:50:274Z",
"host" => "<my_computer>",
"path" => "<path_to_.json>",
"type" => "json",
"tags" => [
[0] "_grokparsefailure"
任何建議將不勝感激
您快到了,我可以通過一些調整使其工作。
首先,您需要在第一個位置添加json{}
過濾器。 然后,您需要將日期模式更改為YYYY-MM-dd;HH:mm:ss
,最后可以在最后刪除grok
過濾器。 您的過濾器配置如下所示:
filter {
json {
source => "message"
}
date {
match => ["time", "YYYY-MM-dd;HH:mm:ss" ]
timezone => "America/New_York"
locale => "en"
target => "@timestamp"
}
}
然后,示例JSON行的已解析事件將如下所示:
{
"message" => "{\"time\":\"2015-09-20;12:13:24\",\"bug_code\":\"tr\",\"stacktrace\":\"543534\"}",
"@version" => "1",
"@timestamp" => "2015-09-20T16:13:24.000Z",
"host" => "iMac.local",
"time" => "2015-09-20;12:13:24",
"bug_code" => "tr",
"stacktrace" => "543534"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.