[2021-08-20T07:53:00,865][INFO ][org.logstash.beats.BeatsHandler][main][85cdcfd8ac49789653328fffd54627260e267cb5c24953396322a6d4da0521f2] [local: 172.11.0.3:5000, remote: 142.128.153.77:53930] Handling exception: io.netty.handler.codec.DecoderException: org.logstash.beats.InvalidFrameProtocolException: Invalid version of beats protocol: 69 (caused by: org.logstash.beats.InvalidFrameProtocolException: Invalid version of beats protocol: 69)
[2021-08-20T07:53:00,865][WARN ][io.netty.channel.DefaultChannelPipeline][main][85cdcfd8ac49789653328fffd54627260e267cb5c24953396322a6d4da0521f2] An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
io.netty.handler.codec.DecoderException: org.logstash.beats.InvalidFrameProtocolException: Invalid version of beats protocol: 69
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:477) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:404) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:371) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:354) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:262) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.channel.AbstractChannelHandlerContext.access$300(AbstractChannelHandlerContext.java:61) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.channel.AbstractChannelHandlerContext$4.run(AbstractChannelHandlerContext.java:253) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:66) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-all-4.1.65.Final.jar:4.1.65.Final]
at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.logstash.beats.InvalidFrameProtocolException: Invalid version of beats protocol: 69
at org.logstash.beats.Protocol.version(Protocol.java:22) ~[logstash-input-beats-6.1.6.jar:?]
at org.logstash.beats.BeatsParser.decode(BeatsParser.java:62) ~[logstash-input-beats-6.1.6.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:507) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:446) ~[netty-all-4.1.65.Final.jar:4.1.65.Final]
... 11 more
------------------------------------------------------------------------------------------------------------------------------
현재 로깅 시스템 구축을 위해 FileBeat로 LogStash에 로깅 데이타를 Shipping 하는 방법으로 구성해놓았다.
그런데 로그스태시쪽에서 위와 같은 오류를 뿜어내기 시작했다.
org.logstash.beats.InvalidFrameProtocolException: Invalid version of beats protocol: 69 이런 오류와 동시에
org.logstash.beats.InvalidFrameProtocolException: Invalid version of beats protocol: 71 오류가 발생하기도 한다.
이런 경우 오류 내용에서도 알 수 있듯이 버전 호환이 잘 되지 않는 것이다.
위 문제 발생시 내가 쓰고 있는 ELK 스택의 버전은 7.14.0이었고, FileBeat의 버전은 7.4.2였는데 버전 차이로 인한
프로토콜의 차이가 발생하여 위와 같은 에러가 발생하는 것으로 추측했다.
FileBeat 버전도 최신버전인 7.14.0으로 업그레이드하고 테스트해보니 해당 문제는 사라졌다.