首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用logstash将压缩的json导入到elasticsearch中?

如何使用logstash将压缩的json导入到elasticsearch中?
EN

Stack Overflow用户
提问于 2017-04-03 16:32:23
回答 2查看 2.7K关注 0票数 4

我正在尝试使用logstash将数据导入到elasticsearch中。数据是压缩格式的,因为它是一个大数据。

这是我到目前为止尝试过的:

代码语言:javascript
复制
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之后,我得到的结果如下:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2017-04-03 21:29:33

gzipzip是两种不同的压缩方法。zip是一种容器格式,而gzip格式仅支持单个文件。logstash没有zip编解码器。您需要另一个编解码器来指定zip文件中文件的编解码器,而logstash没有这方面的概念。有一个用于在S3输入上支持它的JIRA,但它仍然是打开的。

要处理.zip文件中的文件,您必须依赖外部的logstash来为您提取文件,然后使用file输入来处理提取的文件。

票数 3
EN

Stack Overflow用户

发布于 2017-04-04 16:05:47

在@Alcanzar的回答中添加一点,因为你不能直接使用gzip插件,一个变通方法(仅在Linux操作系统上,它可能与命令行工具一起使用,例如支持解压缩命令的Windows上的Cygwin或Git bash )将使用exec plugin将存档文件解压缩到标准输出,这是一个简单的测试,在conf中使用以下命令:

代码语言:javascript
复制
input {
  exec  {
    command => "unzip -q -c tt.zip"
    interval => 10
  }
}

output {
  stdout { codec => rubydebug }
}

一个包含2个文本文件的zip文件,其中一行包含(hello world 1和hello world 2),输出如下:

代码语言:javascript
复制
{
       "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"
}

这绝对是可行的,尽管需要一些变通方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43179926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档