2016-09-04 17 views
7

Logstash cho phép executing arbitrary commands làm đầu vào cho một đường ống. Dưới đây là ví dụ đường ống của tôi:thực hiện ruby ​​làm đầu vào đường ống cho logstash

input { 
    exec { 
    command => '/usr/bin/ruby -e "puts RUBY_VERSION"' 
    interval => 10 
    } 
} 

output { 
    stdout { codec => rubydebug } 
} 

Với điều này tôi nhận được lỗi sau:

/opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/resolver.rb:328:in `block in verify_gemfile_dependencies_are_found!': Could not find gem 'logstash-core (= 2.4.0) ruby' in any of the gem sources listed in your Gemfile or installed on this machine. (Bundler::GemNotFound) 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/resolver.rb:307:in `each' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/resolver.rb:307:in `verify_gemfile_dependencies_are_found!' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/resolver.rb:199:in `start' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/resolver.rb:182:in `resolve' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:192:in `resolve' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:132:in `specs' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:177:in `specs_for' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:166:in `requested_specs' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/environment.rb:18:in `requested_specs' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/runtime.rb:13:in `setup' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler.rb:122:in `setup' 
     from /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/setup.rb:18:in `<top (required)>' 
     from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
     from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 

Tôi cũng đã cố gắng chạy JRuby rất riêng logstash của bên trong exec như thế này

input { 
    exec { 
    command => '/opt/logstash/vendor/jruby/bin/jruby -e "puts RUBY_VERSION"' 
    interval => 10 
    } 
} 

output { 
    stdout { codec => rubydebug } 
} 

và nó tạo ra lỗi Bundler khác:

Bundler::GemNotFound: Could not find gem 'ci_reporter_rspec (= 1.0.0) java' in any of the gem sources listed in your Gemfile or installed on this machine. 
    verify_gemfile_dependencies_are_found! at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/resolver.rb:328 
            each at org/jruby/RubyArray.java:1613 
    verify_gemfile_dependencies_are_found! at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/resolver.rb:307 
            start at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/resolver.rb:199 
           resolve at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/resolver.rb:182 
           resolve at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:192 
            specs at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:132 
           specs_for at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:177 
         requested_specs at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/definition.rb:166 
         requested_specs at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/environment.rb:18 
            setup at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/runtime.rb:13 
            setup at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler.rb:122 
            (root) at /opt/logstash/vendor/bundle/jruby/1.9/gems/bundler-1.9.10/lib/bundler/setup.rb:18 
           require at org/jruby/RubyKernel.java:1040 
            (root) at /opt/logstash/vendor/jruby/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1 

Logstash tiếp tục chạy và đường dẫn thực hiện sau mỗi 10 giây nhưng thông báo luôn trống. Cố gắng thực hiện các lệnh khác như echo "hello" hoạt động mà không có sự cố.

Chạy trên logstash 2.4.0, phiên bản openjdk "1.8.0_102", hệ thống ruby ​​là MRI 2.3.1 trên ARM Archlinux.

Bất kỳ ý tưởng nào?

+0

Bạn đã thử chạy 'bundle install' chưa? –

+0

có, logstash được cài đặt đúng, nó hoạt động khi tôi không cố gắng chạy lệnh ruby ​​ – ben

+0

Bạn có thực thi 'bó' trong thư mục'/opt/logstash/vendor/jruby/bin' không? Tôi thà sử dụng cài đặt jruby riêng thay vì đóng gói bởi logstash nếu bạn định sử dụng một số thư viện ruby. –

Trả lời

2

Có vẻ như bạn có thể cần phải chuyển sang JRuby thay vì MRI, đó là thử nghiệm cho Logstash chứ không phải currently supported. Bạn có thể xem xét RVM hoặc rbenv có thể giúp quản lý các phiên bản Ruby khác nhau và chuyển đổi giữa JRuby và bản địa khi cần trong trình bao.

Khi bạn đang sử dụng JRuby + bundler (gem install bundler), bạn có thể bundle install từ gốc của dự án và các vấn đề phụ thuộc của bạn sẽ được giải quyết.

+0

Tôi đã thử điều đó và nó không hoạt động. Tôi cài đặt các phụ thuộc của kịch bản của tôi trong logrash của jruby env và chạy kịch bản của tôi với cùng một jruby và nó vẫn không hoạt động. Xem câu hỏi cập nhật với một ví dụ jruby – ben

+0

Một lần nữa, nó không phải về logstash hoặc lệnh của tôi, bởi vì tôi không sử dụng bất kỳ thư viện nào (xem ví dụ trong câu hỏi). Ngoài ra logstash đang làm việc tốt cho tất cả các đường ống khác. – ben

+0

Có vẻ như tiến bộ tốt. Bạn có thể thấy vấn đề đăng nhập này cho cùng một thông báo lỗi. Gemfile.lock có đá quý được liệt kê trong đó không?edited: xóa hướng dẫn xây dựng lại – nrako

Các vấn đề liên quan