2017-12-09 8 views
0

LogStash에서 이진 데이터 형식을 디코딩 할 수 있도록 Codec 플러그인을 작성하고 싶습니다.코덱의`decode` 메소드에 전달되는`data` 객체는 무엇입니까?

The official documentation for writing a Codecdata이라는 변수 하나를 허용하는 decode 메서드를 정의해야한다는 것을 보여줍니다.

저는 LogStash와 Ruby를 처음 사용합니다. 대부분 정적으로 입력 된 언어로 작업했기 때문에 data 변수에 대해 자세히 알 수는 없습니다. 필자는 InputStream 유형 객체와 유사하다고 생각하여 데이터를 사용할 수있게되면서 데이터를 읽을 수있게했지만 확실하지 않습니다.

질문 :

data 개체가 어떤 종류입니다
  1. ? 어떤 방법을 가지고 있습니까?
  2. Ruby 개발자는 일반적으로 이와 같은 변수를 어떻게 조사합니까? 스켈레톤 플러그인을 작성하지 않고 data의 문자열 표현을 STDOUT에 버리지 않고도 알아낼 수있는 방법을 잘 모르겠습니다.

고마워요!

답변

0

input 플러그인을 작성하기위한 설명서에서 이에 대한 힌트를 제공합니다. run() method section에서 :

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

data 변수는 임의의 바이트의 버퍼로서 사용되는 루비 String이다. 나는 스켈레톤 플러그인을 만들고 런타임에 값을 검사함으로써 이것을 확인했다.

이것은주의해야 할 것으로 보입니다. codecdecode 메소드에 제공된 바이트가 완전한 이벤트로 보장되지 않습니다.