RabbitMQ Filter

Overview

This filter is designed to extract queries and transform them into a canonical form e.g. INSERT INTO database.table VALUES ("John Doe", "Downtown",100,50.0); turns into INSERT INTO database.table VALUES ("?", "?",?,?);. The filter pushes these canonicalized queries and their replies in to a RabbitMQ broker where they can later be retrieved. The retrieval can be done with your own application or the RabbitMQ Consumer Client utility tool, which reads the messages from the broker and sends the contents of those messages as SQL queries to a database.

Configuration

The configuration block for the mqfilter filter requires the minimal filter options in it’s section within the maxscale.cnf file, stored in /etc/maxscale.cnf. Although the filter will start, it will use the default values which only work with a freshly installed RabbitMQ server and use its default values. This setup is mostly intended for testing the filter.

The following is an example of a mqfilter configuration in the maxscale.cnf file used for actual logging of queries to a RabbitMQ broker on a different host.

[RabbitMQ]
type=filter
module=mqfilter
hostname=192.168.122.100
port=4000
username=messageuser
password=msgpwd
exchange=msg-ex-1
key=MaxScale
logging_trigger=object,schema,source
logging_strict=false
logging_log_all=false
logging_object=my1
logging_schema=test
logging_source_user=maxtest

[RabbitMQ Service]
type=service
router=readconnrouter
servers=server1
user=myuser
passwd=mypasswd
filters=RabbitMQ

Filter Options

The mqfilter filter does not support any filter options.

Filter Parameters

The RabbitMQ filter has parameters to control which queries are logged based on either the attributes of the user or the query itself. These can be combined to to only log queries targeting a certain table in a certain database from a certain user from a certain network address.

Option Description Accepted Values Default
logging_trigger Set the logging level all, source, schema, object all
logging_strict Sets whether to trigger when any of the parameters match or only if all parameters match true, false false
logging_log_all Log only SELECT, UPDATE, DELETE and INSERT or all possible queries true, false true
logging_source_user Comma-separated list of usernames to log
logging_source_host Comma-separated list of hostnames to log
logging_schema Comma-separated list of databases
logging_object Comma-separated list of database objects
hostname The server hostname where the messages are sent localhost
port Port to send the messages to 5672
username Server login username guest
password Server login password guest
vhost The virtual host location on the server, where the messages are sent /
exchange The name of the exchange default_exchange
exchange_type The type of the exchange direct, fanout, topic, headers direct
key The routing key used when sending messages to the exchange key
queue The queue that will be bound to the used exchange
ssl_CA_cert Path to the CA certificate in PEM format
ssl_client_cert Path to the client certificate in PEM format
ssl_client_key Path to the client public key in PEM format