graylog-labs / graylog-plugin-riemann

Graylog2 output plugin to send events to a Riemann instance
Apache License 2.0
7 stars 1 forks source link

Problems with UDP #2

Closed henrikjohansen closed 9 years ago

henrikjohansen commented 9 years ago

Running the riemann plugin with TCP works fine - switching to UDP yields :

WARN [2015-02-26 21:17:26,568] defaultEventExecutorGroup-2-1 - riemann.transport.udp - UDP handler caught io.netty.handler.codec.DecoderException: com.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field. This could mean either than the input has been truncated or that an embedded message misreported its own length. at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at riemann.transport.proxy$io.netty.handler.codec.MessageToMessageDecoder$ff19274a.channelRead(Unknown Source) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:745) Caused by: com.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field. This could mean either than the input has been truncated or that an embedded message misreported its own length. at com.google.protobuf.InvalidProtocolBufferException.truncatedMessage(InvalidProtocolBufferException.java:70) at com.google.protobuf.CodedInputStream.pushLimit(CodedInputStream.java:651) at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:307) at com.aphyr.riemann.Proto$Msg.(Proto.java:3931) at com.aphyr.riemann.Proto$Msg.(Proto.java:3847) at com.aphyr.riemann.Proto$Msg$1.parsePartialFrom(Proto.java:3970) at com.aphyr.riemann.Proto$Msg$1.parsePartialFrom(Proto.java:3965) at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:141) at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:176) at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:182) at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49) at io.netty.handler.codec.protobuf.ProtobufDecoder.decode(ProtobufDecoder.java:119) at io.netty.handler.codec.protobuf.ProtobufDecoder.decode(ProtobufDecoder.java:63) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ... 15 more WARN [2015-02-26 21:17:26,576] defaultEventExecutorGroup-2-1 - riemann.transport.udp - UDP handler caught io.netty.handler.codec.DecoderException: com.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field. This could mean either than the input has been truncated or that an embedded message misreported its own length. at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at riemann.transport.proxy$io.netty.handler.codec.MessageToMessageDecoder$ff19274a.channelRead(Unknown Source) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:745) Caused by: com.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field. This could mean either than the input has been truncated or that an embedded message misreported its own length. at com.google.protobuf.InvalidProtocolBufferException.truncatedMessage(InvalidProtocolBufferException.java:70) at com.google.protobuf.CodedInputStream.pushLimit(CodedInputStream.java:651) at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:307) at com.aphyr.riemann.Proto$Msg.(Proto.java:3931) at com.aphyr.riemann.Proto$Msg.(Proto.java:3847) at com.aphyr.riemann.Proto$Msg$1.parsePartialFrom(Proto.java:3970) at com.aphyr.riemann.Proto$Msg$1.parsePartialFrom(Proto.java:3965) at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:141) at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:176) at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:182) at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49) at io.netty.handler.codec.protobuf.ProtobufDecoder.decode(ProtobufDecoder.java:119) at io.netty.handler.codec.protobuf.ProtobufDecoder.decode(ProtobufDecoder.java:63) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ... 15 more

lennartkoopmann commented 9 years ago

@mariussturm can you take a look? :)

mariussturm commented 9 years ago

Looks like the underlying Riemann client is interrupting the connection while last message is not fully send. Since there is no flush before close I changed the output to wait a second before closing the connection. Could you please retry with 1.0.2-rc.1? https://github.com/Graylog2/graylog2-plugin-output-riemann/releases/tag/1.0.2-rc.1

mariussturm commented 9 years ago

Released 1.0.2 today. Start/stop of the output is handled now in a better way and also outages and restarts of Riemann should be ok now.