我正在尝试使用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文件示例:Check here
答案 0 :(得分:3)
gzip
和zip
是两种不同的压缩方法。 gzip
格式仅支持单个文件,而zip
是容器格式。 logstash没有zip编解码器。您需要另一个编解码器来指定zip文件中的文件的编解码器,而logstash没有这个概念。 3}}在S3输入上支持它,但它仍处于打开状态。
要处理.zip
文件中的文件,您将不得不依赖logstash外部的东西来为您提取文件,然后使用file
输入来处理提取的文件。
答案 1 :(得分:1)
要添加一点@Ancanzar的答案,因为你不能直接使用gzip插件,一种解决方法(仅在Linux操作系统上,它可能适用于支持解压缩的Windows上的命令行工具,如Cygwin或Git bash)命令)将使用exec plugin将存档文件解压缩到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"
}
这绝对是可行的,尽管通过一些解决方法。