Graylog GELF AMQP input not support transient Rabbit queues

Hello to Graylog community!

Subject is self-explanatory :slight_smile:

We have some queues on our RabbitMQ cluster and we want Graylog to consume these messages with GELF AMQP input. These RabbitMQ queues are set with Durability = transient ( i know that in case of failure messages are lost ). But from what i understand Graylog Gelf amqp input works only with durability = durable

if i try to start the input and the queue on RabbitMQ is transient i get the following error

2020-03-16T12:21:55.710Z ERROR [InputLauncher] The [org.graylog2.inputs.gelf.amqp.GELFAMQPInput] input with ID <5e6f6dfda8617091da0cbaf5> misfired. Reason: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - **inequivalent arg 'durable' for queue 'name_of_the_queue' in vhost '/': received 'true' but current is 'false', class-id=50, method-id=10**).
org.graylog2.plugin.inputs.MisfireException: org.graylog2.plugin.inputs.MisfireException: Could not launch AMQP consumer.
        at org.graylog2.plugin.inputs.MessageInput.launch(MessageInput.java:158) ~[graylog.jar:?]
        at org.graylog2.shared.inputs.InputLauncher$1.run(InputLauncher.java:84) [graylog.jar:?]
        at com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:181) [graylog.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_232]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_232]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]
Caused by: org.graylog2.plugin.inputs.MisfireException: Could not launch AMQP consumer.
        at org.graylog2.inputs.transports.AmqpTransport.doLaunch(AmqpTransport.java:179) ~[graylog.jar:?]
        at org.graylog2.plugin.inputs.transports.ThrottleableTransport.launch(ThrottleableTransport.java:76) ~[graylog.jar:?]
        at org.graylog2.plugin.inputs.MessageInput.launch(MessageInput.java:155) ~[graylog.jar:?]
        ... 7 more
Caused by: java.io.IOException
        at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:126) ~[graylog.jar:?]
        at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:122) ~[graylog.jar:?]
        at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:144) ~[graylog.jar:?]
        at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:962) ~[graylog.jar:?]
        at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.queueDeclare(AutorecoveringChannel.java:333) ~[graylog.jar:?]
        at org.graylog2.inputs.transports.AmqpConsumer.run(AmqpConsumer.java:105) ~[graylog.jar:?]
        at org.graylog2.inputs.transports.AmqpTransport.doLaunch(AmqpTransport.java:176) ~[graylog.jar:?]
        at org.graylog2.plugin.inputs.transports.ThrottleableTransport.launch(ThrottleableTransport.java:76) ~[graylog.jar:?]
        at org.graylog2.plugin.inputs.MessageInput.launch(MessageInput.java:155) ~[graylog.jar:?]
        ... 7 more
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'name_of_the_queue' in vhost '/': received 'true' but current is 'false', class-id=50, method-id=10)
        at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) ~[graylog.jar:?]
        at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) ~[graylog.jar:?]
        at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:494) ~[graylog.jar:?]
        at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:288) ~[graylog.jar:?]
        at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:138) ~[graylog.jar:?]
        at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:962) ~[graylog.jar:?]
        at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.queueDeclare(AutorecoveringChannel.java:333) ~[graylog.jar:?]
        at org.graylog2.inputs.transports.AmqpConsumer.run(AmqpConsumer.java:105) ~[graylog.jar:?]
        at org.graylog2.inputs.transports.AmqpTransport.doLaunch(AmqpTransport.java:176) ~[graylog.jar:?]
        at org.graylog2.plugin.inputs.transports.ThrottleableTransport.launch(ThrottleableTransport.java:76) ~[graylog.jar:?]
        at org.graylog2.plugin.inputs.MessageInput.launch(MessageInput.java:155) ~[graylog.jar:?]
        ... 7 more

Of course when i create the input on graylog there is no option to set if the queue is durable or transient. I am using Graylog 3.1.3 .

Suggestions are welcomed :slight_smile:

Any help here? :blush:
is it possible graylog consume messages from a transient rabbitmq queue?

Thanks you folks :blush:

he @slapper15

as I remember correctly from writing this guide: https://github.com/Graylog2/graylog-guide-syslog-amqp

such is currently not possible. But I did not remember the reason for that.

Hi @jan

thanks a lot for you answer :slight_smile:
Maybe in 3.2 version this option is available ? . It would be great if we have this option when create GELF AMQP input on graylog , to support transient & durable rabbitMQ queues!.

thanks again!

please open a feature request for that.

thanks @jan i will do that :wink:

feature request created : https://github.com/Graylog2/graylog2-server/issues/7747

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.