0

我想编写一个Codec插件来使 LogStash 能够解码二进制数据格式。

编写 a 的官方文档Codec显示我需要定义一个decode接受单个参数的方法:一个名为data.

我是 LogStash 和 Ruby 的新手。主要使用静态类型语言,我不确定如何了解有关data变量的更多信息。我假设它类似于InputStream-type 对象,允许我在数据可用时读取数据,但我不确定。

问题:

  1. 对象是什么类型data?它有哪些方法?
  2. Ruby 开发人员通常如何研究这样的变量?我不确定我是否找到了一种无需编写骨架插件并将字符串表示形式转储data到 STDOUT 的方法。

谢谢!

4

1 回答 1

0

编写input插件的文档提示了这一点。从run() method部分

    data = $stdin.sysread(16384)
    @codec.decode(data) do |event|
      decorate(event)
      event.set("host", @host) if !event.include?("host")
      queue << event
    end

data变量是一个 Ruby String,它被用作任意字节的缓冲区。我已经通过创建骨架插件并在运行时检查值来验证这一点。

这似乎是谨慎的原因:提供给您codecdecode方法的字节不能保证是一个完整的事件。

于 2017-12-14T19:58:04.667 回答