簡體   English   中英

將JSON文件解析為logstash

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM