Added separate documentation files for the mqfilter and the rabbitmq consumer client.

This commit is contained in:
Markus Makela
2015-02-05 06:28:42 +02:00
parent e8d3334a5b
commit e1950b7f84
3 changed files with 103 additions and 0 deletions

View File

@ -39,6 +39,11 @@
- [Tee Filter](filters/Tee-Filter.md) - [Tee Filter](filters/Tee-Filter.md)
- [Top N Filter](filters/Top-N-Filter.md) - [Top N Filter](filters/Top-N-Filter.md)
- [Firewall Filter](filters/Firewall-Filter.md) - [Firewall Filter](filters/Firewall-Filter.md)
- [RabbitMQ Filter](filters/RabbitMQ-Filter.md)
## Utilities
- [RabbitMQ Consumer Client](filters/RabbitMQ-Consumer-Client.md)
## Design Documents ## Design Documents
@ -53,3 +58,4 @@
- [MaxScale 1.0 Release Notes](Release-Notes/MaxScale-1.0-Release-Notes.md) - [MaxScale 1.0 Release Notes](Release-Notes/MaxScale-1.0-Release-Notes.md)
- [MaxScale 1.0.1 Release Notes](Release-Notes/MaxScale-1.0.1-Release-Notes.md) - [MaxScale 1.0.1 Release Notes](Release-Notes/MaxScale-1.0.1-Release-Notes.md)
- [MaxScale 1.0.3 Release Notes](Release-Notes/MaxScale-1.0.3-Release-Notes.md) - [MaxScale 1.0.3 Release Notes](Release-Notes/MaxScale-1.0.3-Release-Notes.md)

View File

@ -0,0 +1,38 @@
#RabbitMQ Consumer Client
## Overview
This utility tool is used to read messages from a RabbitMQ broker sent by the [RabbitMQ Filter](RabbitMQ-Filter.md) and forward these messages into an SQL database as queries.
## Command Line Arguments
The **RabbitMQ Consumer Client** only has one command line argument.
| Command | Argument |
|-----------------------------------------------------------|
| -c | Path to the folder containing the configuration file |
## Installation
To install the RabbitMQ Consumer Client you ca either use the provided packages or you can compile it from source code. The source code is included as a part of the MaxScale source code and can be found in the `rabbtmq_consumer` folder. Please refer to the [README](../../rabbitmq_consumer/README) in the folder for more detailed instructions about installation and configuration.
## Configuration
The consumer client requires that the `consumer.cnf` configuration file is either be present in the `etc` folder of the installation directory or in the folder specified by the `-c` argument.
The source broker, the destination database and the message log file can be configured into the separate `consumer.cnf` file.
| Option |Desctiption |
|--------------------------------------------------------|
| hostname |Hostname of the RabbitMQ server |
| port |Port of the RabbitMQ server |
| vhost |Virtual host location of the RabbitMQ server|
| user |Username for the RabbitMQ server |
| passwd |Password for the RabbitMQ server |
| queue |Queue to consume from |
| dbserver |Hostname of the SQL server |
| dbport |Port of the SQL server |
| dbname |Name of the SQL database to use |
| dbuser |Database username |
| dbpasswd |Database passwork |
| logfile |Message log filename |

View File

@ -0,0 +1,59 @@
#RabbitMQ Filter
## Overview
This filter is designed to extract queries and transform them into a canonical form e.g. `INSERT INTO dabata.table VALUES ("John Doe", "Downtown",100,50.0);` turns into `INSERT INTO dabata.table VALUES ("?", "?",?,?);`. The filter pushes these canonized 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](RabbitMQ-Consumer-Client.md) 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 $MAXSCALE_HOME/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 intednded 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
```
### 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 cerificate in PEM format|||
|ssl_client_key|Path to the client public key in PEM format|||