【问题标题】:Is it possible to launch a Ruby debugger from within the Logstash Ruby filter plugin?是否可以从 Logstash Ruby 过滤器插件中启动 Ruby 调试器?
【发布时间】:2016-10-24 19:43:06
【问题描述】:

是否可以从Logstash Ruby filter plugin 中启动 Ruby 调试器?这对调试非常方便。

【问题讨论】:

    标签: logstash logstash-configuration


    【解决方案1】:

    优秀的 Logstash 人员已经想到了这一点,因为他们将 pry 包含到 Logstash 核心中。因此,您所要做的就是要求在您的 ruby 过滤器代码中撬动,如下面的示例配置所示:

    input { 
      file {
        path => "/tmp/myfile.csv"
        sincedb_path => "/dev/null"
        start_position => "beginning"
      }
    }
    filter {
      ruby {
        code => "require 'pry'
           ... your code ...
    
           # start a REPL session
           binding.pry
    
           ... your code ...
        "
     }
    }
    

    当 Logstash 运行时,您将在终端中获得一个 REPL 会话,如下所示,您将能够执行任何 pry 允许您执行的操作。

    [1] pry(#<LogStash::Filters::Ruby>)> 
    

    【讨论】:

    • 我可以看到它试图启动 pry 会话,但它并没有中断。它只是继续运行并且没有让我有机会进入调试会话。我认为这可能是因为我使用标准输入作为我的输入插件,并将我的 CSV 文件通过管道传输到 logstash。
    • 在我的测试中,我也确实使用了标准输入,并且它有效。你能显示你的logstash配置吗?
    • 因客户工作而简化:input { stdin { } } filter { csv { columns =&gt; ["field1", "field2"] separator =&gt; "," } ruby { init =&gt; " require 'pry' " code =&gt; " binding.pry " }
    • 然后我开始: $ ESENV=development /usr/local/bin/logstash-2.3.4/bin/logstash -v --allow-env -f import.conf /myfile.csv
    • 你可以尝试在代码部分而不是 init 部分中要求 pry 吗?
    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多