[英]How to import zipped json into elasticsearch using logstash?
[英]Using JSON with LogStash
我要瘋了。 我有一個將日志寫入文件的應用程序。 每個日志條目都是一個 JSON 對象。 我的 .json 文件示例如下所示:
{"Property 1":"value A","Property 2":"value B"}
{"Property 1":"value x","Property 2":"value y"}
我正在拼命地將日志條目放入 LogStash。 為此,我創建了以下 LogStash 配置文件:
input {
file {
type => "json"
path => "/logs/mylogs.log"
codec => "json"
}
}
output {
file {
path => "/logs/out.log"
}
}
現在,我正在手動將記錄添加到 mylogs.log 以嘗試使其正常工作。 但是,它們在標准輸出中的出現很奇怪。 當我查看 open out.log 時,我看到如下內容:
{"message":"\"Property 1\":\"value A\", \"Property 2\":\"value B\"}","@version":"1","@timestamp":"2014-04-08T15:33:07.519Z","type":"json","host":"ip-[myAddress]","path":"/logs/mylogs.log"}
因此,如果我將消息發送到 ElasticSearch,我將無法獲取字段。 相反,我得到了一個混亂的爛攤子。 我需要我的屬性仍然是屬性。 我不希望它們塞進消息部分或輸出中。 我有一種預感,這與編解碼器有關。 然而,我不確定。 我不確定是否應該更改 logstash 輸入配置上的編解碼器。 或者,如果我應該更改輸出配置上的輸入。 我會真誠地感謝任何幫助,因為我在這一點上變得絕望。
謝謝。
默認情況下,如果未指定 json 編解碼器,tcp 會將所有內容放入消息字段。
在我們指定 json 編解碼器后消息字段的_jsonparsefailure的解決方法也可以通過執行以下操作來糾正:
input {
tcp {
port => '9563'
}
}
filter{
json{
source => "message"
target => "myroot"
}
json{
source => "myroot"
}
}
output {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
它會將消息字段解析為正確的 json 字符串以輸入 myroot,然后解析 myroot 以生成 json。
我們可以刪除像消息這樣的冗余字段
filter {
json {
source => "message"
remove_field => ["message"]
}
}
試試這個:
filter {
json {
source => "message"
target => "jsoncontent" # with multiple layers structure
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.