簡體   English   中英

如何使用logstash將壓縮的json導入elasticsearch?

[英]How to import zipped json into elasticsearch using logstash?

我正在嘗試使用logstash將數據導入elasticsearch。 數據是壓縮格式,因為它是一個大數據。
這是我到目前為止所嘗試的:

input {
  file {
    path => "C:/Users/lenovo-pc/Desktop/test.zip"
    start_position => "beginning"
    type=> "mytest"
    codec => "gzip_lines"
  }       
}

filter {
  json { source => "message" }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "testing"
  }
  stdout { codec => rubydebug }
}

運行logstash -f import.conf后我得到的是:

Could not find log4j2 configuration at path /Bitnami/elk-5.2.2-0/logstash/config/log4j2.properties. Using default config which logs to console
13:53:11.640 [main] FATAL logstash.runner - An unexpected error occurred! {:error=>#<ArgumentError: Could not coerce (9600-9700) into a port range>, :backtrace=>["C:/Bitnami/elk-5.2.2-0/logstash/logstash-core/lib/logstash/settings.rb:352:in `coerce'", "C:/Bitnami/elk-5.2.2-0/logstash/logstash-core/lib/logstash/settings.rb:237:in `set'", "C:/Bitnami/elk-5.2.2-0/logstash/logstash-core/lib/logstash/settings.rb:61:in `set_value'", "C:/Bitnami/elk-5.2.2-0/logstash/logstash-core/lib/logstash/settings.rb:80:in `merge'", "org/jruby/RubyHash.java:1342:in `each'", "C:/Bitnami/elk-5.2.2-0/logstash/logstash-core/lib/logstash/settings.rb:80:in `merge'", "C:/Bitnami/elk-5.2.2-0/logstash/logstash-core/lib/logstash/settings.rb:115:in `validate_all'", "C:/Bitnami/elk-5.2.2-0/logstash/logstash-core/lib/logstash/runner.rb:210:in `execute'", "C:/Bitnami/elk-5.2.2-0/logstash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/clamp/command.rb:67:in `run'", "C:/Bitnami/elk-5.2.2-0/logstash/logstash-core/lib/logstash/runner.rb:183:in `run'", "C:/Bitnami/elk-5.2.2-0/logstash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/clamp/command.rb:132:in `run'", "C:\\Bitnami\\elk-5.2.2-0\\logstash\\lib\\bootstrap\\environment.rb:71:in `(root)'"]}  

請幫我解決這個問題。

我的test.zip文件示例: 點擊此處

gzipzip是兩種不同的壓縮方法。 gzip格式僅支持單個文件,而zip是容器格式。 logstash沒有zip編解碼器。 你需要另一個編解碼器來指定zip文件中的文件的編解碼器,而logstash沒有這個概念。 在S3輸入上有一個支持它的JIRA ,但它仍然是開放的。

要處理.zip文件中的文件,您將不得不依賴於logstash外部的東西來為您提取文件,然后使用file輸入來處理提取的文件。

為了給@ Alcanzar的答案添加一點,因為你不能直接使用gzip插件,一種解決方法(僅在Linux操作系統上,它可能適用於支持unzip命令的Windows上的Cygwin或Git bash等命令行工具)是使用exec插件將存檔文件解壓縮到stdout,這是一個簡單的測試,包括以下內容:

input {
  exec  {
    command => "unzip -q -c tt.zip"
    interval => 10
  }
}

output {
  stdout { codec => rubydebug }
}

一個包含2個文本文件的zip文件,其中一行包含(hello world 1和hello world 2),為我們提供輸出:

{
       "message" => "hello world 1\nhello world 2\n",
      "@version" => "1",
    "@timestamp" => "2017-04-04T08:04:56.024Z",
          "host" => "de0-vsiaas-1129",
       "command" => "unzip -q -c tt.zip"
}

這絕對是可行的,盡管通過一些解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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